LAMP基於RPM包安裝詳解

1.LAMP介紹

    Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一組常用來搭建動態網站或者服務器的開源軟件,本身都是各自獨立的程序,因爲常被放在一起使用,擁有了越來越高的兼容度,共同組成了一個強大的Web應用程序平臺。本文所介紹的是Linux+Apache+MariaDB+PHP,基於RPM包安裝的部署過程


2.環境描述


操作系統IP地址系統環境用途
CentOS 7.1
172.18.20.10/16
最小化安裝Web服務器
CentOS 7.1172.18.20.11/16最小化安裝Mariadb服務器
CentOS 6.7172.18.20.20/16最小化安裝私有CA
CentOS 6.7172.18.20.21/16最小化安裝DNS服務器
WIN 10
172.18.20.1/1-客戶端主機

    爲保證環境不出問題,已關閉iptables和selinux

Web服務器    用於提供web服務,php以模塊的方式安裝在Web服務器上。其中一個虛擬主機用於提供phpMyAdmin,另一個虛擬主機用於提供wordpress。


數據庫服務器    用於給web服務器以及其他服務器提供數據存儲等相關服務。


私有CA    數字證書認證中心的簡稱,指發放、管理、廢除數字證書的機構,在本文中的作用是給web服務器頒發證書實現https。


DNS服務器    用於提供正向解析和方向解析等相關功能。


客戶端主機    主要方便於各種測試。


3.安裝部署

    3.1 mariadb服務器

yum -y install mariadb-server && systemctl start mariadb.service    ##安裝並啓動mariadb服務    
mysqladmin -uroot password '123.com'              ## 設置mysql的root用戶密碼爲 123.com
mysql -uroot -p123.com         ## 登陸mysql數據庫               
create database wp_DB;   ## 創建wp_DB數據庫    
GRANT ALL ON wp_DB.* TO 'ch123'@'172.18.20.10' IDENTIFIED BY 'qwer1234';  ## 允許來自172.18.20.10的主機的ch123用戶對wp_DB數據做各種操作     
FLUSH PRIVILEGES;     ## 刷新配置命令    
SHOW DATABASES;       ## 確定數據庫是否已創建成功    
SHOW GRANTS FOR 'ch123'@'172.18.20.10';    ## 確認數據庫授權是否成功

    

    3.2 DNS服務器

yum -y install bind bind-utils   ## 安裝bind程序和bind客戶端工具         
vim /etc/named.rfc1912.zones      ## 修改配置文件,添加一個正向解析區域                   
zone "ch.com." IN {                    
     type master;                    
     file "ch.com.zone";                    
     };        
vim /var/named/ch.com.zone     ## 編輯區域配置文件                      
$TTL 3600                    
$ORIGIN ch.com.                    
@   IN SOA ns1.ch.com. dnsadmin.ch.com. (                        
         2016042101                        
         1H                        
         10M                       
         3D                        
         1D )                     
    IN NS ns1                
ns1 IN A 172.18.20.21                 
www IN A 172.18.20.10                 
web IN CNAME www        
named-checkconf && systemctl start named.service     ## 檢查named配置文件,如果沒問題則啓動named服務        
ss -anlp | grep named    ## 確保tcp/53號端口是監聽狀態的        
dig -t A www.ch.com @172.18.20.21    ## 測試DNS服務器是否能解析 www.ch.com

   

    3.3 私有CA

(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)    ## 創建私鑰       

openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655    ## 生成自簽證書                       
Country Name (2 letter code) [XX]:CN    ## 國家名稱                      
State or Province Name (full name) []:Beijing   ## 州或省名稱                      
Locality Name (eg, city) [Default City]:Beijing   ## 市區名稱                      
Organization Name (eg, company) [Default Company Ltd]:CH   ## 組織名稱                      
Organizational Unit Name (eg, section) []:Ops   ## 部門名稱                      
Common Name (eg, your name or your server's hostname) []:CA22  ## 主機名稱         
mkdir -pv /etc/pki/CA/{certs,crl,newcerts}         
touch /etc/pki/CA/{serial,index.txt}         
echo 01 > /etc/pki/CA/serial       ## 爲CA提供所需的目錄及文件         
openssl ca  -in  /tmp/httpd.csr  -out  /etc/pki/CA/certs/httpd.crt  -days  365   ## 當web服務器將證書請求發過來之後,給web服務器簽署證書         
scp /etc/pki/CA/certs/httpd.crt [email protected]:/etc/httpd/ssl   ## 將證書文件回傳給web服務器

     

    3.4 Web服務器

yum -y install httpd php php-mysql mod_ssl php-xcache   ## 安裝web程序包、php程序包、php-mysql驅動、ssl模塊         
vim /etc/resolv.conf    ## 修改DNS指向配置文件                      
nameserver 172.18.20.11  ## 將DNS服務器改爲上面配置的DNS服務器地址         
vim /etc/httpd/conf/httpd.conf  ## 修改httpd主配置文件             <Directory />                 
    AllowOverride none                
    Require all granted   ## 改爲允許所有主機訪問             </Directory>            
#DocumentRoot "/var/www/html"    ## 禁用中心主機         
vim /etc/httpd/conf.d/vhost.conf    ## 添加一個虛擬主機的配置文件         
DirectoryIndex index.php            
<VirtualHost 172.18.20.10:80>                
    ServerName web.ch.com                
    DocumentRoot "/www/wp"           
<VirtualHost>         
mkdir /var/log/wp             
mkdir -pv /www/wp    ## 創建虛擬主機所需目錄         
httpd -t    ## 檢查配置文件,如果顯示“Syntax OK”  表示配置沒有問題         
mkdir -pv /etc/httpd/ssl     ## 創建一個用來存放ssl證書的目錄         
(umask  077; openssl  genrsa -out  /etc/httpd/ssl/httpd.key  4096)    ## 生成私鑰文件    
openssl  req  -new  -key  /etc/httpd/ssl/httpd.key  -out /etc/httpd/ssl/httpd.csr  -days  365   ## 生成證書請求,這裏主機名一定要填https用到的主機名地址         
scp /etc/httpd/ssl/httpd.csr [email protected]:/tmp/    ## 用可靠的方式將證書請求傳輸給CA主機         
vim /etc/httpd/conf.d/ssl.conf    ## 編輯ssl配置文件             
<VirtualHost 172.18.20.10:443>                 
    DocumentRoot "/www/ph"                 
    ServerName web.ch.com:443                           
    SSLCertificateFile /etc/httpd/ssl/httpd.crt      ## 指明證書文件存儲路徑             
    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key     ## 指明私鑰文件存儲路徑           
</VirtualHost>         
mkdir /www/ph     ## 創建https所需目錄


4.整合測試

vim /www/wp/index.php     ## 編寫php連接mysql數據庫代碼         
<?php         
$conn = mysql_connect('172.18.20.11','ch123','qwer1234');   ## 此處填mariadb 授權的用戶和密碼         
if ($conn)         
     echo "OK";         
else         
      echo "Failure";         
?>         
cp /www/wp/index.php /www/ph/        
systemctl start httpd.service    ## 啓動httpd服務器

    在客戶端將DNS服務器指向爲172.18.20.21,然後瀏覽器上分別輸入http://www.ch.com 和 https://web.ch.com 顯示ok 則表示測試成功


5.安裝網站程序

    5.1 wordpress

    這裏www.ch.com虛擬主機用於提供wordpress;官方下載地址:    

https://cn.wordpress.org/


cp wordpress-4.3.1-zh_CN.zip /www/wp    ## 複製wordpress程序到/www/wp目錄下     
cp phpMyAdmin-4.4.14.1-all-languages.zip /www/ph     ## 複製phpMyAdmind到/www/ph目錄下   
cd /www/wp/    ## 切換至/www/wp目錄下     
unzip wordpress-4.3.1-zh_CN.zip     ## 執行解壓     
chown -R root:apache wordpress      ## 修改屬組爲apache用戶     
chmod -R g+w wordpress      ## 給apache組賦予寫權限     
vim /etc/httpd/conf.d/vhost.conf       ## 修改配置 DocumentRoot "/www/wp/wordpress"     
systemctl reload httpd.service    ## 重載配置文件

    用客戶端瀏覽器訪問www.ch.com,按照說明依次下一步操作即可完成安裝,需要注意填數據庫信息時,填寫的是之前mairadb上配置授權的用戶和密碼,數據庫地址填寫數據庫服務器地址即可。

    5.1 phpMyadmin

    web.ch.com虛擬主機用於提供phpMyAdmin;官方下載地址:http://www.phpmyadmin.net/downloads/


cd /www/ph/    ## 切換至/www/ph/目錄下     
unzip phpMyAdmin-4.4.14.1-all-languages.zip  ## 解壓縮phpmyadmin     
chown -R root:apache phpMyAdmin-4.4.14.1-all-languages    ## 修改phpmyadmin目錄屬組爲apache     
chmod -R g+w phpMyAdmin-4.4.14.1-all-languages    ## 賦予apache組對phpmyadmin有寫操作    
ln -s phpMyAdmin-4.4.14.1-all-languages phpadmin   ## 對phpmyadmin創建符號鏈接     
yum -y install php-mbstring   ## 安裝支持中文字符集程序包     
cd phpadmin/   ## 切換至phpadmin目錄下     
cp config.sample.inc.php config.inc.php    ## 複製模板配置文件     
vim config.inc.php    ## 修改配置文件        
     $cfg['Servers'][$i]['host'] = '172.18.20.11';   ## 將這一項改爲mariadb數據庫的地址  
vim /etc/httpd/conf.d/ssl.conf   ## 修改https配置文件中 DocumentRoot "/www/ph/phpadmin"  
httpd -t    ## 檢查配置是否正確     
systemctl reload httpd.service    ## 重載配置文件

    用客戶端瀏覽器訪問https://web.ch.com 輸入用戶名密碼,就可以訪問phpmyadmin了


6.壓力測試

    6.1 xcache

    xcache是一個開源的 opcode 緩存器/優化器,能夠提高web服務器上的 PHP 性能. 通過把編譯 PHP 後的數據緩衝到共享內存從而避免重複的編譯過程, 能夠直接使用緩衝區已編譯的代碼從而提高速度. 通常能夠提高頁面生成速率2到5倍, 降低服務器負載。


vim /etc/php.d/xcache.ini    ## 編輯xcache 配置文件     
[xcache-common]     
extension = xcache.so     
[xcache.admin]     
xcache.admin.enable_auth = On     
xcache.admin.user = "mOo"     
xcache.admin.pass = "md5 encrypted password"     
[xcache]     
xcache.shm_scheme = "mmap"     
xcache.size = 60M     
xcache.count = 1     
xcache.slots = 8K     
xcache.ttl = 0     
xcache.gc_interval = 0     
xcache.var_size = 4M     
xcache.var_count = 1     
xcache.var_slots = 8K

    配置詳情請參考 http://xcache.lighttpd.net/wiki/XcacheIni

    

    6.2 ab

    ab是apache自帶的壓力測試工具

ab -n 1000 -c 100 http://172.18.20.10/index.php                          
       -n  表示請求總數                          
       -c  表示模擬的並行數

    測試生成後,各字段的含義

Server Software:        Apache/2.4.6         ## 平臺版本     
Server Hostname:        172.18.20.10         ## 服務器主機名     
Server Port:            80                   ## 服務器端口     
Document Path:          /index.php           ## 測試頁面文檔     
Document Length:        8920 bytes           ## 頁面文檔大小     
Concurrency Level:      100                  ## 併發連接數     
Time taken for tests:   20.863 seconds       ## 整個測試持續的時間     
Complete requests:      1000                 ## 完成的請求數量     
Failed requests:        0                    ## 失敗的請求數量     
Write errors:           0                    ## 等待的請求數量     
Non-2xx responses:      1000                 ## 請求響應數量     
Total transferred:      388000 bytes         ## 整個場景中的網絡傳輸量     
HTML transferred:       0 bytes              ## 整個場景中的HTML內容傳輸量     
Requests per second:    47.93 [#/sec] (mean)     ## 吞吐率,每秒事務數 ,後面括號中的 mean 表示這是一個平均值     
Time per request:       2086.280 [ms] (mean)     ## 用戶平均請求等待時間,後面括號中的 mean表示這是一個平均值     
Time per request:       20.863 [ms] (mean, across all concurrent requests)  ## 服務器平均請求處理時間     
Transfer rate:          18.16 [Kbytes/sec] received  ## 平均每秒網絡上的流量     
Connection Times (ms)             ## 網絡上消耗的時間的分解                   
               min  mean[+/-sd] median   max     
Connect:        0    3  68.3      0     2138     
Processing:    38 2045 1472.0   1393    7854     
Waiting:       36 2042 1472.0   1392    7854     
Total:         38 2048 1475.9   1393    7854     
Percentage of the requests served within a certain time (ms)   ## 整個場景中所有請求的響應情況     
50%   1393     
66%   1654     
75%   2247     
80%   3000    
90%   4529     
95%   5331     
98%   6420     
99%   6750     
100%  7854 (longest request)


7.實驗中遇到的問題

    7.1 時間同步問題

    主機之間時間不同步可能會導致配置不生效,所以實驗前一定要確保所有主機時間同步,可以先安裝yum -y install ntp;然後同步時間服務器 ntpdata NTP_SERVER_IP 。


    7.2 配置文件問題

    剛纔不小心把httpd主配置文件的一行信息不小心刪除,然後保存退出了,httpd服務卻怎麼也起不來,這個時候我才知道備份配置文件的重要性了。所以說,在安裝所以的服務程序之後,一定要在配置之前做好配置。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章