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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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