linux進階-編譯安裝基於fastcgi 方式的多虛擬主機得LAMP架構

實現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_UTF820191201.zip

//wordpress解包
tar xf wordpress-5.3-zh_CN.tar.gz -C /data/ap/web

//discuz解包
unzip Discuz_X3.4_SC_UTF820191201.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

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章