基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX

背景

虛擬主機

  現在服務器的配置提高明顯,單一主機上部署單一網站會對主機形成大量的性能損失,所以web服務虛擬主機的技術應運而生。所謂虛擬主機指的是在一臺機器上運行多個網站(如company1.example.com和company2.example.com)的作法 。虛擬主機能夠是「 基於IP的 」,這意味着每一個網站都有不一樣的IP地址,或者「 基於名稱 」,這意味着每一個IP地址上都有多個名稱,或者「基於端口」,這意味着在同一ip的不一樣端口上提供不一樣的網站,經過這些方法使得他們在同一臺物理服務器上運行的事實對最終用戶來講並不明顯。
  Apache是第一批支持基於IP的虛擬主機的服務器之一。Apache的版本1.1及更高版本支持基於IP和基於名稱的虛擬主機(虛擬主機)。虛擬主機的後一種變型有時也被稱爲基於主機的或非IP虛擬主機。
  php

fastcgi

  FastCGI像是一個常駐(long-live)型的CGI,它能夠一直執行着,只要激活後,不會每次都要花費時間去fork一次(這是CGI最爲人詬病的fork-and-execute 模式)。它還支持分佈式的運算, 即 FastCGI 程序能夠在網站服務器之外的主機上執行而且接受來自其它網站服務器來的請求。
FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行爲是將CGI解釋器進程保持在內存中並所以得到較高的性能。衆所周知,CGI解釋器的反覆加載是CGI性能低下的主要緣由,若是CGI解釋器保持在內存中並接受FastCGI進程管理器調度,則能夠提供良好的性能、伸縮性、Fail- Over特性等等。
  
  html

部署流程

  

部署架構

  

環境

  
3臺主機用於分別部署httpd,php和mysql,實現分離
軟件版本mysql

系統 httpd php mariadb
CentOS7 2.4.33 7.18 10.2.15-MariaDB

  

架構圖

基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
  
  

編譯軟件

  
這裏咱們須要編譯的軟件爲httpd和php,mysql能夠考慮使用二進制包或者直接官方yum安裝
  linux

安裝開發環境和必要的包

1.安裝centos開發工具包git

yum groupinstall "development tools" -y

2.安裝編譯httpd和php須要的包web

#部分包須要epel源 
#yum install epel-release -y
yum install pcre-devel openssl-devel expat-devel libxml2-devel bzip2-devel libmcrypt-devel -y

  

編譯httpd

這裏在192.168.99.130機器上編譯httpd2.4sql

1.建立apache用戶數據庫

useradd -r apache -s /sbin/nologin

2.解壓httpd,apr,apr-util源碼包,這裏須要的包都可在httpd官網下到apache

tar xvf httpd-2.4.33.tar.bz2
tar xvf apr-1.6.2.tar.gz
tar xvf apr-util-1.6.1.tar.gz

3.編譯httpdvim

#移動解壓的apr和apr-util到指定的httpd源碼目錄能夠省去分別編譯3個程序
 mv apr-1.6.2 httpd-2.4.33/srclib/apr
 mv apr-util-1.6.1 httpd-2.4.33/srclib/apr-util

#編譯參數,具體含義能夠參考./configure的幫助文檔或者官方文檔
./configure \
--prefix=/app/httpd24 \
--enable-so \
--enable-ssl \
--enable-cgi \
--enable-rewrite \
--with-zlib \
--with-pcre \
--with-included-apr \
--enable-modules=most \
--enable-mpms-shared=all \
--with-mpm=prefork

make && make install

4.配置環境變量

vim /etc/profile.d/httpd.sh

PATH=/app/httpd24/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

source /etc/profile.d/httpd.sh

  

編譯php

因爲這裏爲了實現多機分離,所以在192.168.99.131主機上進行編譯
1.解壓PHP源碼

tar xvf php-7.1.18.tar.bz2

2.進入目錄

#編譯參數
./configure \
--prefix=/app/php \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-openssl \
--with-pdo-mysql=mysqlnd \
--enable-mbstring \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--enable-xml \
--enable-sockets \
--enable-fpm \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-maintainer-zts \
--disable-fileinfo

make && make install

3.配置文件設置

cd php-7.1.18/
cp php.ini-production /etc/php.ini
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
#給予執行權限
chmod +x /etc/init.d/php-fpm
#添加到服務中
chkconfig --add php-fpm
#設置開機啓動
chkconfig php-fpm on

cd /app/php/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
service php-fpm start

  

安裝mariadb

  
這裏再也不多談maraidb安裝,以前的博客有很詳細的mariadb部署細節。這裏推薦直接yum安裝就好。
  
  

配置文件修改

  

修改httpd主機

  

1.支持代理模塊

vim /app/httpd24/conf/httpd.conf

#取消下面兩行的註釋
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

#修改下面行
<IfModule dir_module>
DirectoryIndex index.php index.html

2.編輯虛擬主機配置

<VirtualHost *:80>
  DocumentRoot "/data/web1/wp"
  ServerName www.douma.com
  ErrorLog "logs/a.com.error_log"
  TransferLog "logs/a.com-access_log"
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.99.131:9000/app/web1/wp/$1
<directory "/data/web1/wp">
require all granted
</directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/data/web2/dz"
  ServerName www.fansity.com
  ErrorLog "logs/b.com.error_log"
  TransferLog "logs/b.com-access_log"
<directory "/data/web2/dz">
require all granted
</directory>
  AddType application/x-httpd-php .php
  AddType application/x-httpd-php-source .phps
  ProxyRequests Off
  ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.99.131:9000/app/web2/dz/$1
</VirtualHost>

3.建立站點目錄

# httpd主機
 mkdir -pv /data/web{1,2}
#wordpress
 tar xvf wordpress-4.9.4-zh_CN.tar.gz
 mv wordpress web1/
 cd web1
 ln -sv wordpress wp
 #修改配置文件
 vim web1/wp/wp-config-sample.php
 mv wp-config-sample.php wp-config.php

基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
wordpress基本配置完成,以後複製到fast-cgi機器的對應目錄(要先在對應主機建立好目錄)

scp -pr wordpress 192.168.99.131:/app/web1/

安裝Discuzx

cd /data/web2/
git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git
cp -a DiscuzX/upload web2/
ln -sv upload dz

複製文件到fast-cgi主機(要在另外一臺主機建立好對應目錄)

scp -pr upload 192.168.99.131:/app/web2/

4.啓動httpd服務

apachectl start

  

修改fast-cgi主機

  
1.站點目錄修改

#建立對應目錄,要在httpd主機複製文件到fast-cgi以前
mkdir -pv /app/web{1,2}

#建立軟鏈接
cd /app/web1
ln -sv wordpress wp

#複製配置文件而且修改
mv wordpress/wp-config-simple.php  wordpress/wp-config.php 
vim  wordpress/wp-config.php 

cd /app/web2
ln -sv upload dz

基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
2.php修改,並添加apache用戶

useradd -r apache -s /sbin/nologin
vim /app/php/etc/php-fpm.d/www.conf

#修改運行用戶爲apache
#修改監聽ip
#註釋掉僅僅容許本機訪問

#從新啓動php-fpm
service php-fpm restart

#因爲論壇安裝時候會修改文件因此要給upload目錄添加apache的權限

setfacl -R -m u:apache:rwx /app/web2/upload/

基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
  

配置mysql

  
1.建立帳號

MariaDB [(none)]> grant all on *.* to admin identified by 'admin';
#刷新權限
MariaDB [(none)]> flush privileges;

2.建立wp數據庫,論壇會在安裝時候自動建立

MariaDB [(none)]> create database wp;

  

宿主機的hosts文件修改

  
因爲是基於域名的虛擬主機,因此在沒有DNS的狀況下,要想正常訪問,就要在宿主機上修稿hosts文件

#win
C:\Windows\System32\drivers\etc\hosts
#linux
/etc/hosts

#添加以下信息
192.168.99.130  www.douma.com
192.168.99.130  www.fansity.com

  

安裝wordpress和Discuzx

  
1.安裝wordpress
在宿主機瀏覽器上打開www.douma.com
會自動跳轉到安裝頁面
配置好對應信息點擊安裝wordpress
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX

2.安裝Discuzx
在宿主機瀏覽器上打開www.fansity.com
自動跳轉到安裝頁面
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
點擊贊成
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
點擊下一步
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
繼續下一步
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
填寫完成後點擊下一步進行自動安裝
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
安裝完成
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX
點擊右下角的跳轉到論壇
基於fastcgi分離和LAMP虛擬主機部署wordpress和DiscuzX正常訪問,這裏論壇基本配置完成。

相關文章
相關標籤/搜索