通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

通常來說httpd用來處理靜態的網頁請求,動態的資源請求以前是通過CGI的方式進行處理的,但是CGI的方式的處理過程是這樣:有動態資源請求,服務器會fork一個CGI進程進行資源處理,處理完成后這個進程會退出,當再有新的動態資源請求,又會fork一個進程,這樣的效率是很低的。后來就有了通過加載php模塊的方式,即:httpd服務器啟動之后會自動加載php動態資源處理模塊,采用進程間通信方式進行處理動態資源,當有動態資源請求的時候會通過這個php模塊進行處理,這樣就不需要再頻繁啟動CGI進程了,但是每次修改php配置文件都需要重啟httpd進程來重讀配置。以此就衍生了fast-cgi的處理方式。

fast-cgi和cgi的區別在于:

  • 當有動態資源請求的時候cgi要fork一個cgi進程來處理,然后退出cgi進程,效率低下;

  • fast-cgi通過php-fpm進程管理器進行php進程的管理,這個進程是常駐類型的,當有動態資源請求的時候會通過php代理模塊自動轉發到后臺的php進程進行處理,這樣就大大提高了效率;

  • fast-cgi的httpd和php可以部署在同一臺主機,也可以分開部署,更靈活的應對不同的業務場景;

下面詳細介紹通過fast-cgi的方式在三臺不同的主機之間通過lamp部署phpwind:

三臺主機ip配置:

httpd主機:192.168.11.152

php主機:192.168.11.154

mariadb主機:192.168.11.155

在實驗之前先關閉selinux和防火墻,以方便實驗的進行。

  1. 三臺主機需要安裝各自的組件:

    1. httpd主機:安裝httpd;

      yum install -y httpd

    2. php主機:安裝php-fpm組件和php-mysql組件等;

       yum install php-fpm

    3. mariadb主機:安裝mariadb-server提供數據庫服務;

       yum install mariadb-server

      注意:

      php-fpm是php的進程管理器,負責設置啟動多少個php進程,最大空閑進程等信息。在php5.3,php-fpm默認是不提供的,而是作為第三方補丁包的方式,如果需要還要進行編譯安裝。所以此處采用php5.4,而centos7之后默認提供php5.4的安裝包,所以此處主機都以centos7為例進行介紹。

  2. 配置php主機的php-fpm配置文件,位于/etc/php-fpm.d/www.conf,有以下幾項需要修改:

     listen = 192.168.11.154:9000 #修改服務監聽在本地哪個地址的哪個端口上,如果為空則表示本機所有地址# listen.allowed_clients = 192.168.11.152 #允許那臺主機作為客戶端連接到本php服務器# php_value[session.save_path] = /var/lib/php/session #此處為php的session會話路徑,默認此路徑不存在,需要手動創建# user = apache #默認進程運行用戶# group = apache #默認進程運行組#

    手動創建php session路徑,并設置路徑屬主屬組為apache:

     mkdir -pv /var/lib/php/session chown apache:apache /var/lib/php/session

    啟動php-fpm服務:

     systemctl start php-fpm
  3. 在ttpd主機的/etc/httpd/conf.d路徑下創建virtualhosts.conf的配置文件,配置文件如下:

    通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

    注意:

    首先需要確保httpd已經加載了:proxy_fcgi_module (shared)模塊,通過httpd -M命令查看;

    proxyrequests off表示關閉正向代理;

    ProxyPassMatch ^/(.*.php)$ fcgi://192.168.11.154:9000/data/mysite/www/html/$1表示當有后綴名為php的動態資源請求的時候轉發到ip位192.168.11.154的主機進行處理;

  4. 在httpd服務器把phpwind壓縮包拷貝到配置文件指定的documentroot路徑,即/data/mysite/www/html路徑下:

    通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

    注意:

    此處把phpwind路徑中的upload做了一個軟連接到此處,方便管理。如果要允許通過軟連接的方式訪問站點,則配置文件需要加上options followsymlinks選項;

  5. 在php主機建立同樣的documentroot路徑,然后把phpwind也拷貝到此路徑下并做軟連接。原因是因為phpwind既有靜態資源也有動態資源,靜態資源通過httpd服務器提供,動態資源通過php主機提供,所以兩臺主機都需要提供此路徑和phpwind文件。

  6. 此時瀏覽器通過192.168.11.152/phpwind應該就可以訪問到phpwind了,然后按照phpwind的設置向導進行數據庫的配置:

    通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

  1. 在mariadb服務器創建數據庫和用戶:

     mysql -uroot -p #root用戶登錄數據庫# create database phpwind; #創建phpwind數據庫# grant all on phpwind.* to 'phpwind'@'192.168.11.%' identified by '1234567a'; #授權phpwind用戶只能從192.168.11.*網段登錄數據庫并對phpwind數據庫具有所有權限#

    注意:

    mariadb數據庫默認會做ip地址到主機名的反向解析,所以需要在配置文件中關閉此功能:

    /etc/my.cnf.d/server.cnf的[mysqld]下添加skip_name_resolve=ON即可;

  2. 按照創建的數據庫信息填寫即可:

    通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

至此,通過fast-cgi部署phpwind成功。

  1. 接下來通過openssl為站點部署https和dns,此處把mariadb服務器也作為dns服務器和CA服務器:

    1. 部署dns服務器:

       yum install bind #通過安裝bind部署dns#
    2. 修改/etc/named.conf配置文件:

       listen-on port 53 { 127.0.0.1; 192.168.11.155; }; #修改本地監聽地址# allow-query     { any; }; #允許所有主機做查詢# dnssec-enable no; #禁止dnssec# dnssec-validation no; #禁止dnssec#
    3. 修改/etc/named.rfc1912.zones,配置zone文件:

       zone "phpwind.wzh" IN {         type master;         file "phpwind.wzh.zone"; }  #添加phpwind.wzh站點的zone配置#
    4. 在/var/named/下創建phpwind.wzh.zone文件,配置如下:

      通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

  2. 配置CA服務器:

    1. 生成CA私鑰文件和自簽名證書:

       (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
    2. 生成index.txt和serial文件:

       touch /etc/pki/CA/index.txt echo 01 > /etc/pki/CA/serial
    3. httpd安裝mod_ssl模塊:

       yum install -y mod_ssl
    4. 生成本地私鑰文件和證書申請文件,然后發給CA服務器做證書簽發:

       (umask 066; openssl genrsa -out /etc/pki/tls/private/test.key 2048) openssl req -new -key /etc/pki/tls/private/test.key -days 365 -out etc/pki/tls/test.csr openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365

      注意:

      httpd服務器的證書申請文件的默認國家,省,公司名稱三項必須和CA一致 。

      CommonName必須和網站名一致。

    5. 修改/etc/httpd/conf.d/virtaulhosts.conf文件為:

      通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

    6. 瀏覽器導入CA自簽名證書,然后通過https://www.phpwind.wzh/phpwind/index.php訪問站點,如果正常,則實驗成功:

      通過fast-cgi方式在三臺主機部署phpwind并設置為https站點

原創文章,作者:王子豪,如若轉載,請注明出處:http://www.www58058.com/77434

(0)
王子豪王子豪
上一篇 2017-06-03
下一篇 2017-06-04

相關推薦

  • 馬哥教育網絡班21期+第七周課程練習

    1、創建一個10G分區,并格式為ext4文件系統;    (1) 要求其block大小為2048, 預留空間百分比為2, 卷標為MYDATA, 默認掛載屬性包含acl;    (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; ~]# fdisk &n…

    Linux干貨 2016-08-30
  • 馬哥教育網絡班22期+第1周課程練習

    一、計算機組成部分及其功能:硬件系統和軟件系統     1、計算機的硬件系統組成及其功能:         運算器:處理數據的算術運算及邏輯運算即數據加工處理;         控制器:根據…

    Linux干貨 2016-08-15
  • Linux shell之bash特性大全詳解(持續更新ing)

    一、shell是什么?     Shell本身是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完成的。Shell既是一種命令語言,又是一種程序設計語言。作為命令語言,它交互式地解釋和執行用戶輸入的命令;作為程序設計語言,它定義了各種變量和參數,并提供了許多在高級語言中…

    Linux干貨 2016-03-09
  • RAID學習總結

    RAID(Redundant Array of Independent Disks): 定義:獨立硬盤冗余陣列,舊稱廉價磁盤冗余陣列(Redundant Array of Independent Disks),簡稱磁盤陣列。 原理:把多個相對便宜的硬盤組合起來,成為一個硬盤陣列組,使其性能達到甚至超過價格昂貴,容量巨大的硬盤。 優勢: RAID在容量和管理上…

    Linux干貨 2016-08-22
  • Linux 性能監控、測試、優化工具

    Linux 平臺上的性能工具有很多,眼花繚亂,長期的摸索和經驗發現最好用的還是那些久經考驗的、簡單的小工具。系統性能專家 BrendanD. Gregg 在最近的 LinuxCon NA 2014 大會上更新了他那個有名的關于 Linux 性能方面的 talk (Linux Performance Tools) 和幻燈片。    和 Br…

    Linux干貨 2015-03-03
  • 數據結構應用詳解-

    概述 最小生成樹——無向連通圖的所有生成樹中有一棵邊的權值總和最小的生成樹 拓撲排序 ——由偏序定義得到拓撲有序的操作便是拓撲排序。建立模型是AOV網 關鍵路徑——在AOE-網中有些活動可以并行地進行,所以完成工程的最短時間是從開始點到完成點的最長路徑的長度,路徑長度最長的路徑叫做關鍵路徑(Critical Path)。 最短路徑——最短路徑問題是…

    Linux干貨 2015-04-07
欧美性久久久久