Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組經常使用來搭建動態網站或者服務器的開源軟件,自己都是各自獨立的程序,可是由於常被放在一塊兒使用,擁有了愈來愈高的兼容度,共同組成了一個強大的Web應用程序平臺。php
LAMP:html
a:apachepython
m:mariadb, mysqlmysql
p:php, perl, pythonweb
LAMMP:令一個m是memcachedsql
請求的資源類型:數據庫
靜態資源:靜態內容;客戶端從服務器得到的資源的表現形式與原文件相同;apache
動態資源:一般是程序文件,須要在服務器執行以後,將執行的結果返回給客戶端;瀏覽器
httpd+php:結合的三種方式安全
modules
cgi
fastcgi(fpm)
動態資源的請求流程:
請求流程:Client--> (http協議) --> httpd 服務器--> (cgi協議) --> application server (program file) --> (mysql協議) -->mariadb數據庫
CentOS 7下進行操做:
程序包:httpd,php, php-mysql, mariadb-server
注意:php要求httpd使用prefork MPM
若是不是prefork MPM,須要修改/etc/httpd/conf.modules.d/00-mpm.conf改爲prefork,而後重啓httpd服務,php就啓動了
啓動服務:
systemctl start httpd.service
systemctl start mariadb.server
重啓httpd服務,而後使用httpd -M | grep php
systemctl restart httpd.service,查看php模塊是否加載
而後在/www/htdocs(httpd配置文件中資源的目錄)中把index.html改爲index.php,而後編輯,重載服務而後進行測試
這說明php環境已經準備好了
下面打開數據庫服務器
而後直接mysql就能夠鏈接上了
而後在index.php中添加代碼,鏈接到mariadb數據庫,測試可否連上
證實鏈接成功了
而後把數據庫服務停掉systemctl stop mariadb.service,在鏈接下
這樣在CentOS7中,LAMP環境就準備好了
就能夠安裝一些客戶端程序了
數據庫(mariadb):
關係型數據庫的常見組件:
數據庫:database
表:table
行:row
列:column
索引:index
視圖:view
用戶:user
權限:privilege
存儲過程:procedure
存儲函數:function
觸發器:trigger
事件調度器:eventscheduler
mysql_secure_installation:安全初始化
SQL語句:用來管理數據庫的語句
數據庫組件:數據庫、表、索引、視圖、用戶、權限
存儲過程、存儲函數、觸發器、事件調度器
建立數據庫、設計數據表
字段:字段名、數據類型、數據類型修飾符、約束
DDL、DML、DCL
DDL:CREATE、DROP、ALTER
DML:INSERT(REPLACE)、DELETE、UPDATE、SELECT
DCL:GRANT,REVOKE
CREATE DATABASE [IF NOT EXISTS] 'db_name';建立數據庫
建立用戶帳號:
CREATEUSER 'username'@'host' [IDENTIFIED BY 'password'];
刪除用戶:
DROPUSER 'username'@'host';
受權:
權限級別:管理權限、數據庫、表、字段、存儲例程;
GRANTpriv_type,... ON [object_type] db_name.tb_name TO 'user'@'host' [IDENTIFIED BY'password'] [WITH GRANT OPTION];
priv_type:ALL [PRIVILEGES]
db_name.tb_name:
*.*:全部庫的所表;
db_name.*:指定庫的全部表;
db_name.tb_name:指定庫的指定表;
db_name.routine_name:指定庫的存儲例程;
查看指定用戶得到的受權:
SHOWGRANTS FOR 'user'@'host';
SHOW GRANTS FOR CURRENT_USER;
回收受權:
REVOKEpriv_type, ... ON db_name.tb_name FROM 'user'@'host';
建立表:
CREATETABLE [IF NOT EXISTS] 'tbl_name' (col1 type1, col2 type2, ...)
刪除表:DROPTABLE [IF EXISTS] 'tbl_name';
修改表:ALTER TABLE 'tbl_name'
索引:
索引是特殊數據結構;定義在查找時做爲查找條件的字段;
索引:要有索引名稱;
建立索引:
CREATEINDEX index_name ON tbl_name (index_col_name,...);
刪除索引:
DROPINDEX index_name ON tbl_name;
數據庫還有不少命令就不一一介紹了
下面以幾個實例來演示LAMP的建立和應用
在CentOS7中實現3個虛擬主機,完成要求的功能;
vhost1: pma.stuX.com, phpMyAdmin, 同時提供https服務;
vhost2:wp.stuX.com, wordpress
vhost3:dz.stuX.com, Discuz
首先確認LAMP的基礎環境是搭建好的,php能訪問,數據庫是否能正常鏈接。(文章開始有演示);
而後就下載phpMyAdmin,wordpress,Discuz
三個軟件包,而後解壓和移到httpd配置文件中的資源目錄的那個路徑下,即/web/vhosts/目錄下
而後把修改httpd的配置文件把中心主機禁掉,就是(/etc/httpd/conf/httpd.conf)中DocumentRoot這一行,
而後再/etc/httpd/conf.d/建立一個virtualhost.conf的文件,而後作3個虛擬主機,每一個對應一個軟件
要保證主配置文件中的<Directory 「/web/vhosts」這個路徑跟虛擬主機的DocumentRoot的文件同目錄
而後把這三個軟件phpMyAdmin wordpress Discuz的文件複製到 /web/vhosts中
而後配置這些軟件的配置文件
而後複製pma下的config.sample.inc.php 到本目錄下,而後更名爲config.inc.php,而後修改config.inc.php文件
使用命令tr -d 'a-zA-Z0-9' < /dev/urandom | head -30 | md5sum生成一些隨機數,填到下面,而後保存
而後重啓服務,設置數據庫
首先mysql進入,而後給root用戶設置密碼
而後給wpuser受權,建立用戶
而後在裏面 在輸入命令FLUSH PRIVILEGES 同步一下
這個數據庫的名字密碼要和wordpress軟件配置文件中的相同
這樣數據庫就作好了
而後在物理機中,修改hosts文件,加入
172.16.249.195 pma.stu999.com
172.16.249.195 wp.stu999.com
172.16.249.195 dz.stu999.com
而後訪問測試下
輸入用戶名和密碼就能夠進入數據庫,管理數據庫了
下面對pma.stu999.com作https,使用openssl命令
首先172.16.249.114建立一個CA,而後自簽證書,而後再給172.16.249.195簽證
首先找到CA目錄,而後生成私鑰(umask077 ;openssl genrsa –out private/cakey.pem 2048 ),而後建立本身的簽名 opensslreq -new -x509 -key private/cakey.pem -out cacert.pem -days 7300
這樣本身的證書建立好了
而後在172.16.249.195上建立證書,而後去找CA簽證;首先建立csr文件,而後發給CA,CA簽名後,在送還給172.16.249.195
把證書發給CA
CA簽名,而後送回證書
CA簽名前要建立一個文件touch index.txt 給serial一個數字 echo 01>serial
這簽名成功了,而後還給172.16.249.195
而後在172.16.249.195中配置/etc/httpd/conf.d/ssl.conf文件
指定證書和私鑰的路徑
把pma.stu999.com這個虛擬主機加入/etc/httpd/conf.d/ssl.conf文件中
而後把/etc/httpd/conf.d/virtuahost中的pma.stu999.com這個虛擬主機的註釋掉
重啓服務,而後把CA的證書cacert.pem複製出來重命名爲cacert.crt,加入物理機的可信任證書列表裏,在瀏覽器的設置中,進行測試
這樣pma.stu999.com 這個虛擬主機的https就作好了
這樣整個題目就作完了,這是在本人測試的環境下作的,若是不是CentOS7可能步驟不同。
若有批評和建議能夠留言。