编译安装基于 FASTCGI 模式LAMP架构多 虚拟主机WEB应用
1.目标
实现CentOS 7 编译安装基于 fastcgi 模式的多虚拟主机的wordpress和discuz的LAMP架构
2.环境准备
DirectoryIndex index.php index.html
#加下面三行
AddType application/x-httpd-php .php
#AddType application/x-httpd-php-source .phps
ProxyRequests Off
#实现第一个虚拟主机
servername www.sdnpc.top
documentroot /data/wordpress
require all granted
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1
#实现status和ping页面
ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
CustomLog "logs/access_wordpress_log" common
#第二个虚拟主机
servername www.snpec.top
documentroot /data/discuz
require all granted
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/discuz/$1
CustomLog "logs/access_discuz_log" common
apachectl restart
vim /etc/hosts
IP地址(xxx.xxx.xxx.xxx) www.snpec.top www.sdnpc.top
打开浏览器访问 http://www.snpec.top和http://www.sdnpc.top 分别进行初始化和安装
(5)修改成UDS模式
vim /apps/php/etc/php-fpm.d/www.conf
;listen = 127.0.0.1:9000
listen = /run/php-fpm.sock
listen.owner = apache
listen.group = apache
listen.mode = 0660
systemctl restart php-fpm
ll /run/php-fpm.sock
srw-rw---- 1 apache apache 0 Dec 14 11:11 /run/php-fpm.sock
vim /apps/httpd/conf/httpd.conf
servername blog.magedu.org
documentroot /data/wordpress
require all granted
#ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/wordpress/$1
ProxyPassMatch ^/(.*\.php)$ "unix:/run/php
fpm.sock|fcgi://localhost/data/wordpress/"
#ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
ProxyPassMatch ^/(fpm_status|ping)$ "unix:/run/php-fpm.sock|fcgi://localhost/"
CustomLog "logs/access_wordpress_log" common
servername forum.magedu.org
documentroot /data/discuz
require all granted
#ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/data/discuz/$1
ProxyPassMatch ^/(.*\.php)$ "unix:/run/php
fpm.sock|fcgi://localhost/data/discuz/"
#ProxyPassMatch ^/(fpm_status|ping)$ fcgi://127.0.0.1:9000/$1
ProxyPassMatch ^/(fpm_status|ping)$ "unix:/run/php-fpm.sock|fcgi://localhost/"
CustomLog "logs/access_discuz_log" common
systemctl restart httpd
两台主机:关闭防火墙,selinux=disabled
一台主机:httpd+php(fastcgi模式)
一台主机:mariadb 服务器 软件版本: CentOS 7.8 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.43.tar.gz php-7.4.7.tar.xz 或 php-7.3.10.tar.bz2 wordpress-5.4.2-zh_CN.tar.gz Discuz_X3.4_SC_UTF8【20191201】.zip 3 .实现步骤 (1) 二进制安装 mariadb useradd -r -s /sbin/nologin mysql tar xvf mariadb-10.2.27-linux-x86_64.tar.gz -C /usr/local cd /usr/local ln -sv mariadb-10.2.27-linux-x86_64 mysql cd mysql chown -R root.root ./* mkdir /data/mysql -p chown -R mysql.mysql /data/mysql mkdir /etc/mysql cp support-files/my-huge.cnf /etc/mysql/my.cnf vim /etc/mysql/my.cnf [mysqld] #加下面行 datadir =/data/mysql skip_name_resolve = ON #准备PATH变量(export PATH=$PATH:/usr/local/mysql/bin) vim /etc/profile.d/lamp.sh PATH=/usr/local/mysql/bin/:$PATH . /etc/profile.d/lamp.sh yum install libaio -y cd /usr/local/mysql;scripts/mysql_install_db --user=mysql --datadir=/data/mysql cp support-files/mysql.server /etc/rc.d/init.d/mysqld chkconfig --add mysqld service mysqld start #为wordprss和discuz应用准备数据库和用户帐号 mysql -uroot mysql> create database wordpress; mysql> create database discuz; mysql> grant all on wordpress.* to wordpress@'10.0.0.%' identified by "wppass"; mysql> grant all on discuz.* to discuz@'10.0.0.%' identified by 'dispass'; (2)编译安装 httpd 2.4 #安装相关包 yum install gcc pcre-devel openssl-devel expat-devel -y #编译安装httpd tar xvf apr-1.7.0.tar.bz2 tar xvf apr-util-1.6.1.tar.bz2 tar xf httpd-2.4.43.tar.gz mv apr-1.7.0 httpd-2.4.43/srclib/apr mv apr-util-1.6.1 httpd-2.4.43/srclib/apr-util cd httpd-2.4.43/ ./configure \ --prefix=/apps/httpd \ --enable-so \ --enable-ssl \ --enable-cgi \ --enable-rewrite \ --with-zlib \ --with-pcre \ --with-included-apr \ --enable-modules=most \ --enable-mpms-shared=all \ --with-mpm=event make && make install #准备PATH变量(export PATH=$PATH:/apps/httpd/bins) vim /etc/profile.d/lamp.sh PATH=/apps/httpd/bin:$PATH . /etc/profile.d/lamp.sh #创建和配置用户和组 useradd -s /sbin/nologin -r -u 88 apache vim /apps/httpd/conf/httpd.conf user apache group apaches #修改为event模式,编译时已指定,此项不再需修改,可选项 vim /apps/httpd/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 httpd -M |grep mpm mpm_event_module (shared) apachectl start [root@centos7 ~]#vim /usr/lib/systemd/system/httpd.service [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target Documentation=man:httpd(8) Documentation=man:apachectl(8) [Service] Type=forking #EnvironmentFile=/etc/sysconfig/httpd ExecStart=/apps/httpd/bin/apachectl start #ExecStart=/apps/httpd/bin/httpd $OPTIONS -k start ExecReload=/apps/httpd/bin/apachectl graceful #ExecReload=/apps/httpd/bin/httpd $OPTIONS -k graceful ExecStop=/apps/httpd/bin/apachectl stop KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target (3)编译安装 fastcgi 方式的 php 7.4 #安装相关包,依赖EPEL源 #php 7.4 相关包 yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel sqlite-devel oniguruma-devel #php 7.3 相关包 yum -y install gcc libxml2-devel bzip2-devel libmcrypt-devel #php7.4 编译 tar xvf php-7.4.7.tar.xz cd php-7.4.7/ ./configure \ --prefix=/apps/php \ --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 #编译安装php 7.3 tar xvf php-7.3.10.tar.bz2 cd php-7.3.10 ./configure --prefix=/apps/php \ --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 #准备PATH变量 #php7.4(export PATH=$PATH:/apps/php/bin:/apps/httpd/bin) vim /etc/profile.d/lamp.sh PATH=/apps/php/bin:/apps/httpd/bin:$PATH . /etc/profile.d/lamp.sh #php7.3(export PATH=$PATH:/apps/php/bin:/apps/httpd/bin) vim /etc/profile.d/lamp.sh PATH=/apps/php/bin:/apps/httpd/bin:$PATH . /etc/profile.d/lamp.sh [root@centos7 ~]#php --version PHP 7.4.7 (cli) (built: Jul 1 2020 09:59:57) ( ZTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies [root@websrv ~]#/apps/php/bin/php --version PHP 7.3.12 (cli) (built: Dec 14 2019 10:20:40) ( ZTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies #准备php配置文件和启动文件 cp php.ini-production /etc/php.ini cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/ cd /apps/php74/etc cp php-fpm.conf.default php-fpm.conf cd php-fpm.d/ cp www.conf.default www.conf #修改进程所有者 vim /apps/php/etc/php-fpm.d/www.conf user apache group apache #支持status和ping页面 pm.status_path = /fpm_status ping.path = /ping #支持opcache加速 mkdir /etc/php.d/ vim /etc/php.d/opcache.ini [opcache] zend_extension=opcache.so opcache.enable=1 #重启服务 systemctl daemon-reload systemctl status php-fpm.service systemctl enable --now php-fpm.service (4)修改配置 httpd 支持 php-fpm vim /apps/httpd/conf/httpd.conf #取消下面两行的注释 LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so #修改下面行