CentOS 7 基於fastcgi 的lamp



  

實驗環境  CentOS 7, lamp (php-fpm)php





要求:(1) 三者分離於三臺主機;html

 (2) 一個虛擬主機用於提供phpMyAdmin;另外一個虛擬主機用於提供wordpress;前端

 (3) xcachemysql


規劃  172.18.105.110 上運行http服務器web

   172.18.250.157 運行數據庫sql

          172.18.253.26 運行php-fpm程序數據庫


我提早作好了DNS 兩臺A記錄172.18.105.110 對應的FQDN 爲www1.stu05.com  www2.stu05.comapache

也提早作好了一個CA服務器vim


centos7搭建http默認就是2.4後端

1.在172.18.105.110上yum install httpd -y 注:此時php是做爲程序獨立程序運行

  在172.18.250.157 yum install mariadb.server -y  安裝數據庫

  在172.18.253.26  yum install php-fpm  php-mysql php-mbstring -y

      systemctl start httpd      

      擴展:2.4的http支持fastcgi,若是要使用把php替換成php-fpm



2.在172.18.105.110上 關閉中心主機的vim /etc/httpd/conf/httpd.conf  #DocumentRoot "/var/www/html"


3.在172.18.105.110上和172.18.253.26配置http端虛擬主機站點目錄,和後端php動態數據站點目錄,以便轉發請求

  mkdir -pv /web/vhosts/www1

  mkdir -pv /web/vhosts/www2

4.在172.18.105.110上配置基於FQDN的虛擬主機 vim /etc/httpd/conf.d/vhosts

       DirectoryIndex index.php--------------定義php運行的默認主頁面

                                          http2.4基於FQND的虛擬主機省了NameVirtualHost命令

    <VirtualHost 172.18.105.110:80>

  ServerName www1.stu05.com

  DocumentRoot  "/web/vhosts/www1"

                ProxyRequests Off    關閉正向代理

ProxyPassMatch  ^/(.*\.php)$  fcgi://172.18.253.26:9000/web/vhosts/www1/$1  注:http服務器經過方向代理把cgi的請求轉發給 172.18.253.26的PHP程序

<Directory "/web/vhosts/www1">      http2.4須要對根目錄作訪問控制

AllowOverride None

Options None

Require all granted 

</Directory>

           </VirtualHost>


  <VirtualHost 172.18.105.110:80>

                ServerName www2.stu05.com

                DocumentRoot  "/web/vhosts/www2"     ------由於wordpress程序會自動從www2裏找到index.php

                ProxyRequests Off

                ProxyPassMatch  ^/(.*\.php)$  fcgi://172.18.105.110:9000/web/vhosts/www2/wordpress/$1

                <Directory "/web/vhosts/www2">              注:轉發給PHP的時候使用訪問的絕對路徑

                        AllowOverride None

                        Options None

   </VirtualHost>

5.在172.18.253.26上 vim /etc/php-fpm.d/www.conf

     listen = 172.18.253.26:9000    php服務程序須要監聽在可以被外部訪問的sokcet

listen.allowed_clients = 172.18.105.110    容許哪一個前端http訪問

6.  在172.18.253.26上 建立session目錄,並確保運行php-fpm進程的用戶對此目錄有讀寫權限;

# mkdir  /var/lib/php/session

# chown apache.apache /var/lib/php/session  



7.測試php是否正常 vim /web/vhosts/www1 和 /web/vhosts/www1

   vim index.php

   

     php測試代碼

<?php

phpinfo();

?>

 

  瀏覽器  http://www1.stu05.com   http://www2.stu05.com


7.測試php與mysql-server的鏈接是否正常

    172.18.250.157上 以管理員登陸mysql,並受權遠程登陸用戶

CREATE DATABASE wpdb;   建立數據庫

   (1) GRANT ALL ON testdb.* TO testuser@'172.18.%.%' IDENTIFIED BY 'testpass';

     注:GRANT受權 在172.16.0.0/16網段的主機經過testuser遠程訪問testdb的全部表

   (2) FLUSH PRIVILEGES 刷新當即生效

     可查看用戶:SELECT USER();


   (3)關閉mysql登陸時候用戶名的反解

         vim /etc/my.cnf 配置文件中[mysqld]後面加入skip_name_resolve = ON

         而後重載service mysqld reload

172.18.105.110中 vim /web/vhosts/www1 和 /web/vhosts/www1 

     放在index.php中後,運行 http://172.18.105.110

      <?php

$conn = mysql_connect('172.16.100.67','testuser','testpass');

if ($conn) 

echo "OK";

else

echo "Failure";

?>


lamp環境就成功了。


總結:

任何開源程序須要鏈接到數據庫的,在測試lamp鏈接數據庫ok的狀況下,若是是遠程鏈接,則須要建立一個獲得受權的遠程鏈接的用戶,而workdpress不只須要建立一個數據庫,還須要一個獲得受權的遠程鏈接的用戶。

遠程主機登陸數據庫 define('DB_HOST', '172.18.250.157');   本地主機登陸數據庫define('DB_HOST', '127.0.0.1'); 

本地數據庫root登陸若是有密碼  mysql -uroot  -pxwj4611

    若是本地數據庫root沒有密碼mysql

8.第一個虛擬主機運行wordpress

 cp  wordpress-4.3.1-zh_CN.zip /web/vhosts/www1/

 unzip wordpress-4.3.1-zh_CN.zip

 ln -sv wordpress-4.3.1-zh_CN  wordpress 而後cd /wordpress

一、cp wp-config-sample.php   wp-config.php

二、執行mysql或者若是本地root已經設定密碼mysql -uroot -pxwj4611 ------CREATE DATABASE wpdb;建立數據庫   大多數開源的程序會自動建立數據庫

三、GRANT ALL ON wpdb.* TO wpuser@'172.18.%.%' IDENTIFIED BY 'wppress'   

  注:給這個軟件受權一個用戶能夠遠程鏈接數據庫,若是是本地鏈接127.0.0.1

     四、vim vp-config.php 編輯配置文件

         /** WordPress數據庫的名稱 */

          define('DB_NAME', 'wpdb');


         /** MySQL數據庫用戶名 */

           define('DB_USER', 'wpuser');


         /** MySQL數據庫密碼 */

           define('DB_PASSWORD', 'wppasswd');


         /** MySQL主機 */

           define('DB_HOST', '172.18.105.110');    若是是本地鏈接loaclhost 或者127.0.0.1  

測試:www1.stu05.com/wordpress   壓力測試 ab -n 1000 -c 100 http://www2.stu05.com/wordpress/index.php  -c模擬的併發數 -n模擬的總請求數

本地測試的沒有考慮帶寬,服務器可能沒有跑滿帶寬跑滿了。Requests per second:    8.85 [#/sec] (mean) 每秒鐘處理的請求數


9.第二個虛擬主機運行phpMyAdmin

  準備工做:  cp  phpMyAdmin-4.4.14.1-all-languages.zip /web/vhosts/www1/

unzip phpMyAdmin-4.4.14.1-all-languages.zip

    ln -sv phpMyAdmin-4.4.14.1-all-languages pma   注:方便回滾

我須要事先爲其鏈接到數據庫後準備一個受權的遠程連接的用戶:以遍能夠登陸

  (1)、執行mysql或者若是本地root已經設定密碼mysql -uroot -pxwj4611

  (2)、GRANT ALL ON wpdb.* TO myuser@'172.18.%.%' IDENTIFIED BY 'myuser'   

一、cp config.sample.inc.php  config.inc.php  

二、openssl ran -base64 15

    三、vim   config.inc.php  

  $cfg['blowfish_secret'] = '46aJFLiLxmqO0qrdGqwx'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ -------隨機數貼裏面

  $cfg['Servers'][$i]['host'] = '172.18.250.157';     遠程鏈接指向數據庫的主機

  測試:www1.stu05.com/pma  

  壓力測試 ab -n 1000 -c 100 http://www1.stu05.com/pma/index.php   -c模擬的併發數 -n模擬的總請求數



  

 十、編譯安裝xcache     

     # yum install php-devel

# cd  xcache-3.2.0

# phpize

# ./configure --enable-xcache  --with-php-config=/usr/bin/php-config

# make && make install

# cp  xcache.ini  /etc/php.d/

從新啓動systemctl restart php-fpm

 十一、 爲phpMyAdmin提供https虛擬主機;

       DirectoryIndex index.php


    <VirtualHost 172.18.105.110:443>

                ServerName www1.stu05.com

                DocumentRoot  "/web/vhosts/www1/myadmin"

                ProxyRequests Off

                ProxyPassMatch  ^/(.*\.php)$  fcgi://172.18.105.110:9000/web/vhosts/www1/myadmin/$1

              SSLEngine on

          SSLCertificateFile /etc/httpd/ssl/httpd.crt--------------指向證書的位置

          SSLCertificateKeyFile /etc/httpd/ssl/httpd.key------------指向公鑰的位置


                <Directory "/web/vhosts/www1/myadmin">

                        AllowOverride None

                        Options FollowSymLinks-----------------------------容許訪問連接文件的源文件

                        Require all granted

                </Directory>

           </VirtualHost>

相關文章
相關標籤/搜索