現在服務器的配置提高明顯,單一主機上部署單一網站會對主機形成大量的性能損失,所以web服務虛擬主機的技術應運而生。所謂虛擬主機指的是在一臺機器上運行多個網站(如company1.example.com和company2.example.com)的作法 。虛擬主機能夠是「 基於IP的 」,這意味着每一個網站都有不一樣的IP地址,或者「 基於名稱 」,這意味着每一個IP地址上都有多個名稱,或者「基於端口」,這意味着在同一ip的不一樣端口上提供不一樣的網站,經過這些方法使得他們在同一臺物理服務器上運行的事實對最終用戶來講並不明顯。
Apache是第一批支持基於IP的虛擬主機的服務器之一。Apache的版本1.1及更高版本支持基於IP和基於名稱的虛擬主機(虛擬主機)。虛擬主機的後一種變型有時也被稱爲基於主機的或非IP虛擬主機。
php
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 |
這裏咱們須要編譯的軟件爲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
這裏在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
因爲這裏爲了實現多機分離,所以在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
這裏再也不多談maraidb安裝,以前的博客有很詳細的mariadb部署細節。這裏推薦直接yum安裝就好。
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
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
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
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/
1.建立帳號
MariaDB [(none)]> grant all on *.* to admin identified by 'admin'; #刷新權限 MariaDB [(none)]> flush privileges;
2.建立wp數據庫,論壇會在安裝時候自動建立
MariaDB [(none)]> create database wp;
因爲是基於域名的虛擬主機,因此在沒有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
1.安裝wordpress
在宿主機瀏覽器上打開www.douma.com
會自動跳轉到安裝頁面
配置好對應信息點擊安裝wordpress
2.安裝Discuzx
在宿主機瀏覽器上打開www.fansity.com
自動跳轉到安裝頁面
點擊贊成
點擊下一步
繼續下一步
填寫完成後點擊下一步進行自動安裝
安裝完成
點擊右下角的跳轉到論壇正常訪問,這裏論壇基本配置完成。