實現CentOS7編譯安裝基於fastcgi 方式的多虛擬主機的wordpress和discuz的LAMP架構
文章目錄
環境準備
-
兩臺主機:
- 一臺主機:httpd+php(模塊方式)
- 一臺主機:mariadb 服務器
-
軟件版本:
- mariadb-10.2.27-linux-x86_64.tar.gz 通用二進制格式
- apr-1.7.0.tar.bz2
- apr-util-1.6.1.tar.bz2
- httpd-2.4.41.tar.gz
- php-7.3.10.tar.bz2
- wordpress-5.2.3-zh_CN.zip
- Discuz_X3.4_SC_UTF8【20190917】.zip
實現步驟
二進制安裝數據庫
//將實驗所需數據庫二進制源碼包傳入虛擬機
mariadb-10.2.27-linux-x86_64.tar.gz
//解包到指定目錄方便管理
tar xf mariadb-10.2.27-linux-x86_64.tar.gz -C /usr/local/
//創建軟鏈接
ln -s /usr/local/mariadb-10.2.27-linux-x86_64/ /usr/local/mysql
//創建服務所需用戶
useradd -s /sbin/nologin -d /data/mysql -r -u 306 mysql
//修改目錄屬組、屬主
chown -R root.root /usr/local/mysql/
//安裝常見依賴包
yum -y install libaio
//生成數據庫
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysql --user=mysql
//準備配置文件並備份原文件
cp -b /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf
cp: overwrite ‘/etc/my.cnf’? y
------------------------------
//編輯配置文件指定數據庫目錄
vim /etc/my.cnf
//添加文件內容如下
[mysqld]
datadir=/data/mysql
-------------------------------
//製作啓動服務
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#可查看已經註冊了哪些服務
chkconfig --list
//添加mysqld至啓動項
chkconfig --add mysqld
//添加PATH變量
echo "PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh
//加載配置文件
source /etc/profile.d/mysql.sh
//啓動mysql服務
systemctl start mysqld
//進入數據庫
mysql
//創建數據庫
CREATE DATABASE wordpress;
CREATE DATABASE discuz;
//創建用戶並授權
GRANT ALL ON wordpress.* TO wordpress@'192.168.26.%' IDENTIFIED BY 'wordpress';
GRANT ALL ON discuz.* TO discuz@'192.168.26.%' IDENTIFIED BY 'discuz';
編譯安裝httpd
//將實驗所需的httpd相關安裝包傳進虛擬機
apr-1.7.0.tar.bz2
apr-util-1.6.1.tar.bz2
httpd-2.4.41.tar.gz
//解包
tar xf apr-1.7.0.tar.bz2
tar xf apr-util-1.6.1.tar.bz2
tar xf httpd-2.4.41.tar.gz
//合併目錄並改名,一起進行編譯
mv apr-1.7.0 httpd-2.4.41/srclib/apr
mv apr-util-1.6.1 httpd-2.4.41/srclib/apr-util
//下載相關依賴包
yum -y install gcc pcre-devel openssl-devel expat-devel
//進入指定目錄,準備編譯安裝
cd httpd-2.4.41/
//編譯
./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 -j 4 && make install
//添加變量
echo 'PATH=/app/httpd24/bin:$PATH' > /etc/profile.d/http.sh
//加載配置文件
source /etc/prefile.d/http.sh
//創建apache服務用戶(生產環境要指明UID,並且UID要統一)
useradd -s /bin/nologin -r -u 88 apache
--------------------------------------
//修改http配置文件
vim /app/httpd24/conf/httpd.conf
#修改文件內容如下
//修改以apache用戶運行
#User daemon
#Group daemon
User apache
Group apache
//修改網站頁面存儲路徑(根據實際需求自定義)
#DocumentRoot "/app/httpd24/htdocs"
#<Directory "/app/httpd24/htdocs">
DocumentRoot "/data/app/web"
<Directory "/data/app/web">
//順便取消註釋修改Servernamename項,防止啓動服務時報提示
#ServerName www.example.com:80
ServerName bokebi.cn:80 #改什麼名字都可以
--------------------------------------
//啓動服務
apachectl start
----------------------------------------
//修改爲event模式(centos7默認爲prefork模式)
vim /app/httpd24/conf/httpd.conf
//修改文件內容如下
LoadModule mpm_event_module modules/mod_mpm_event.so #取消註釋即開啓
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so #加上註釋即關閉
#LoadModule mpm_worker_module modules/mod_mpm_worker.so
---------------------------------------------------------------
#可根據實際生產環境需求調節以下配置項
//可修改配置文件
vim /app/httpd24/conf/extra/httpd-mpm.conf
//配置項
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
----------------------------------------------------------------
#根據/app/httpd24/conf/httpd.conf文件定義的網站頁面存儲路徑創建所需目錄
//創建目錄
mkdir -p /data/app/web
//創建測試所需頁面
vim /data/app/web/test.html
//文件內容爲
<h1><center>bokebi.cn</center></h1>
<h2><center>bokebi.cn</center></h2>
<h3><center>bokebi.cn</center></h3>
<h4><center>bokebi.cn</center></h4>
<h5><center>bokebi.cn</center></h5>
<h6><center>bokebi.cn</center></h6>
------------------------------------------------------------------
- 瀏覽器訪問192.168.26.37得到測試頁面
編譯安裝 fastcgi 方式的 php7.4
php7.3和php7.4編譯安裝有些許差距
本次實驗編譯的是php7.4
百度清華大學yum源
選擇remi源列表下的:
[維護的企業Linux(RHEL / CentOS /其他克隆)]
Enterprise Linux 8-存儲庫自動配置軟件包: remi-release-8.rpm
Enterprise Linux 7-存儲庫自動配置軟件包: remi-release-7.rpm #選擇這項右擊複製鏈接地址
Enterprise Linux 6-存儲庫自動配置軟件包: remi-release-6.rpm
------------------------------------------------------------------------------------
//配置清華php源
yum -y install https://mirrors.tuna.tsinghua.edu.cn/remi/enterprise/remi-release-7.rpm
//提前安裝依賴包(php7.4)
yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel
(php7.3爲)
yum install gcc libxml2-devel bzip2-devel libmcrypt-devel
-------------------------------------------------------------------------
//將實驗所需php安裝包傳入虛擬機
php-7.4.0.tar.xz
//解包
tar xf php-7.4.0.tar.xz
//進入指定目錄,準備進行編譯和製作安裝(php7.4)
cd php-7.4.0/
//開始編譯
./configure \
--prefix=/app/php74 \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-zlib \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-mbstring \
--enable-xml \
--enable-sockets \
--enable-fpm \
--enable-maintainer-zts \
--disable-fileinfo
-----------------------------------------------------
(php7.3爲)
./configure --prefix=/app/php73 \
--enable-mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-openssl \
--with-freetype-dir \
--with-jpeg-dir \
--with-png-dir \
--with-zlib \
--with-libxml-dir=/usr \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d \
--enable-mbstring \
--enable-xml \
--enable-sockets \
--enable-fpm \
--enable-maintainer-zts \
--disable-fileinfo
-----------------------------------------------------
//開始製作安裝
make -j 4 && make install
//生成變量
echo "PATH=/app/php/bin:$PATH" > /etc/profile.d/php.sh
//準備php配置文件
cp /php-7.4.0/php.ini-production /etc/php.ini
//準備fastcgi(fpm)主配置文件(改名=啓用)
cp /app/php74/etc/php-fpm.conf.default /app/php74/etc/php-fpm.conf
//準備子配置文件
cp /app/php74/etc/php-fpm.d/www.conf.default /app/php74/etc/php-fpm.d/www.conf
------------------------------------------
//修改子配置文件,以apache用戶身份運行
vim /app/php74/etc/php-fpm.d/www.conf
//修改內容爲下
;user = nobody
;group = nobody
user = apache
group = apache
//開啓狀態頁
; Default Value: not set
pm.status_path = /status #取消註釋即可
//開啓ping測試
; Default Value: not set
ping.path = /ping #取消註釋即可
--------------------------------------------
//準備啓動腳本
updatedb #更新slocate數據庫
locate php-fpm #定位php-fpm
//製作啓動文件
cp /root/php-7.4.0/sapi/fpm/php-fpm.service /usr/lib/systemd/system
//重新加載文件
systemctl daemon-reload
--------------------------------------------------------------------
//編輯http配置文件
vim /app/httpd24/conf/httpd.conf
#修改以及增加內容如下
//啓動代理(124,1)
#LoadModule remoteip_module modules/mod_remoteip.so
LoadModule proxy_module modules/mod_proxy.so #去掉註釋啓用
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #去掉註釋啓用
#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
//目錄索引index.php(265,22)
<IfModule dir_module>
DirectoryIndex index.php index.html
</IfModule>
//新增加以下信息
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
ProxyRequests Off
//開啓多虛擬主機和status
<virtualhost *:80>
servername wordpress.bokebi.org
documentroot /data/app/web/wordpress/
<directory /data/app/web/wordpress/>
require all granted
</directory>
ProxyPassMatch ^/(status|ping)$ fcgi://127.0.0.1:9000/$1
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/app/web/wordpress/$1
CustomLog "logs/access_wordpress_log" common
</virtualhost>
<virtualhost *:80>
servername discuz.bokebi.org
documentroot /data/app/web/discuz
<directory /data/app/web/discuz>
require all granted
</directory>
ProxyPassMatch ^/(status|ping)$ fcgi://127.0.0.1:9000/$1
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/app/web/discuz/$1
CustomLog "logs/access_discuz_log" common
</virtualhost>
-----------------------------------------------------------------------------
//創建部署軟件需要的目錄
mkdir /data/app/web/discuz
-----------------------------------------------------------------------------
#準備opcache
//查找opcache.so模塊路徑
locate opcache.so
/app/php74/lib/php/extensions/no-debug-zts-20190902/opcache.so
/root/php-7.4.0/ext/opcache/.libs/opcache.so
/root/php-7.4.0/modules/opcache.so
#這三個文件是一樣的只是在不同目錄裏作用不同
[root@centos7 wordpress]$ll /app/php74/lib/php/extensions/no-debug-zts-20190902/opcache.so
-rwxr-xr-x 1 root root 2491984 Dec 15 17:15 /app/php74/lib/php/extensions/no-debug-zts-20190902/opcache.so
[root@centos7 wordpress]$ll /data/php-7.4.0/ext/opcache/.libs/opcache.so
-rwxr-xr-x 1 root root 2491984 Dec 15 17:15 /data/php-7.4.0/ext/opcache/.libs/opcache.so
[root@centos7 wordpress]$ll /data/php-7.4.0/modules/opcache.so
-rwxr-xr-x 1 root root 2491984 Dec 15 17:15 /data/php-7.4.0/modules/opcache.so
//準備加速插件文件
mkdir /etc/php.d
//編輯文件
vim /etc/php.d/opcache.ini
//文件內容
[opcache]
zend_extension=/data/php-7.4.0/modules/opcache.so
opcache.enable=1 #1爲開啓 #0爲關閉
--------------------------------------------------------------------------------
#部署wordpress和discuz
//將wordpress和discuz安裝包傳至虛擬機
wordpress-5.3-zh_CN.tar.gz
Discuz_X3.4_SC_UTF8【20191201】.zip
//wordpress解包
tar xf wordpress-5.3-zh_CN.tar.gz -C /data/ap/web
//discuz解包
unzip Discuz_X3.4_SC_UTF8【20191201】.zip -d /opt
//移動至指定目錄
mv /opt/upload/* /data/discuz/
//給wordpress目錄權限
chown -R apache.apache /data/app/web/wordpress/
//給discuz目錄權限
chown -R apache.apache /data/app/web/discuz/
- 瀏覽器訪問wordpress.bokebi.org
- 瀏覽器訪問discuz.bokebi.org