一、前言
在Centos7中以php-fpm的方式搭建Lamp环境,并实现wordpress搭建及访问,下图为搭建环境的逻辑图:
mysql服务器IP:192.168.0.188
php-fpm服务器IP:192.168.0.109
httpd服务器IP:192.168.0.118
二、搭建Lamp
1、mysql服务的搭建
在mysql服务器上执行下面的命令:
[root@mysql ~]# yum install -y mariadb-server
安装完成后,编辑/etc/my.cnf文件,添加常用参数:
[mysqld]
innodb_file_per_table=ON
skip-name-resolve=ON
保存后启动mariadb服务:
[root@mysql ~]# systemctl start mariadb
[root@mysql ~]# systemctl enable mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[root@mysql ~]# mysql_secure_installation #对mysql数据库进行安全加固
授权test账号:
[root@mysql ~]# mysql -uroot -p123456
MariaDB [(none)]> GRANT ALL ON *.* TO 'test'@'192.168.%.%' IDENTIFIED BY "magedu";
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
2、php-fpm服务器的搭建
在php服务器输入下面的命令安装php-fpm:
[root@fpm ~]# yum install -y php-fpm php-mysql php-mbstring php-mcrypt
如果找不到php-mcrypt包,需先安装epel-release:
[root@mysql ~]# yum install epel-release
安装完成后,会生成相关的配置文件,包括:
服务配置文件:/etc/php-fpm.conf,/etc/php-fpm.d/*.conf
php环境配置文件:/etc/php.ini,/etc/php.d/*.ini
随后编辑 /etc/php-fpm.d/www.conf文件:
[root@fpm php-fpm.d]# vim /etc/php-fpm.d/www.conf
listen = 192.168.0.109:9000 #修改监听的端口和IP
listen.backlog = -1 #后援队列,指最大的等待队列,-1表示无限制;
listen.allowed_clients = 192.168.0.118 #指定允许哪些IP能访问此服务,此处允许httpd服务器访问
user = apache #运行进程的用户
group = apache #运行进程的用户组
pm = dynamic #指定fpm的运行模式
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
pm.status_path = /pmstatus
ping.response = pong
ping.path = /ping
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session #此目录不存在,需手动创建,并将属主属组指定为httpd的运行用户
随后创建指定的目录:
[root@fpm php-fpm.d]# mkdir -pv /var/lib/php/session
mkdir: created directory ‘/var/lib/php/session’
[root@fpm php-fpm.d]# chown apache:apache /var/lib/php/session/
最后启动php-fpm服务:
[root@fpm php-fpm.d]# systemctl start php-fpm.service
[root@fpm php-fpm.d]# ss -tnl | grep 9000
LISTEN 0 128 192.168.0.109:9000 *:*
[root@fpm php-fpm.d]# ps aux | grep fpm
root 23953 0.4 1.0 335604 10604 ? Ss 17:18 0:00 php-fpm: master process (/etc/php-fpm.conf)
apache 23955 0.0 0.4 335604 4732 ? S 17:18 0:00 php-fpm: pool www
apache 23956 0.0 0.4 335604 4732 ? S 17:18 0:00 php-fpm: pool www
apache 23957 0.0 0.4 335604 4736 ? S 17:18 0:00 php-fpm: pool www
apache 23958 0.0 0.4 335604 4736 ? S 17:18 0:00 php-fpm: pool www
apache 23959 0.0 0.4 335604 4736 ? S 17:18 0:00 php-fpm: pool www
root 23968 0.0 0.0 112660 976 pts/0 R+ 17:19 0:00 grep --color=auto fpm
3、搭建httpd服务
在httpd服务器上安装httpd服务:
[root@httpd ~]# yum install -y httpd
安装完成后,确认是否加载了模块proxy_fcgi_module:
[root@httpd ~]# httpd -M |grep fcgi
proxy_fcgi_module (shared)
随后编辑创建/etc/httpd/conf.d/fcgi.conf配置文件:
[root@httpd ~]# vim /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php #设置默认主页为index.php
ProxyRequests off #关闭正向代理
#将以.php结尾的URL代理转发给fcgi://192.168.109:9000
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.109:9000/var/www/html/$1
ProxyPassMatch ^/(ping|pmstatus)$ fcgi://192.168.0.109:9000/$1
若是配置虚拟主机的话,可参考下面的配置:
Listen 8080
<VirtualHost *:8080>
DirectoryIndex index.php
ServerName www.a.com
DocumentRoot /data/www/html
ProxyRequests off
ProxyPassMatch ^/(.*\.php)$ fcgi://192.168.0.109:9000/var/www/html/$1
ProxyPassMatch ^/(ping|pmstatus)$ fcgi://192.168.0.109:9000/$1
<Directory "/data/www/html">
options none
Allowoverride None
Require all granted
</Directory>
</VirtualHost>
4、在php-fpm服务器上创建编辑index.php 和mysql.php进行测试
#首先创建对应的存放目录,此处设置与httpd服务上设置的fcgi://192.168.109:9000/var/www/html/$相一致
[root@fpm ~]# mkdir -pv /var/www/html/
[root@fpm ~]# vim /var/www/html/index.php #
<?php
phpinfo();
?>
[root@fpm ~]# vim /var/www/html/mysql.php
<?php
$conn = mysql_connect('192.168.0.188','test','magedu');
if ($conn)
echo "Connected to mysql.";
else
echo "Fail";
?>
最后测试访问相应的页面:
至此以php-fpm工作方式运行的lamp已搭建完毕。
三、wordpress的搭建
在php-fpm服务器上通过命令下载wordpress的安装包并解压复制到/var/www/html目录下:
[root@fpm ~]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
[root@fpm ~]# tar xf wordpress-4.9.4-zh_CN.tar.gz
[root@fpm ~]# cp -a wordpress /var/www/html/
[root@fpm ~]# chown -R apache:apache /var/www/html/wordpress/
随后在httpd服务器上创建/var/www/html/wordpress目录:
#此举是为了访问URL/wordpress时能正常代理转发到php-fpm服务器上,否则会提示/wordpress不存在
[root@localhost ~]# mkdir /var/www/html/wordpress
随后访问192.168.0.118/wordpress:
此时需要为wordpress的搭建提供相应的数据库账号及建立相应的数据库:
[root@mysql ~]# mysql -uroot -p123456
MariaDB [(none)]> CREATE DATABASE wordpress;
MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wpuser'@'192.168.%.%' IDENTIFIED BY 'magedu';
MariaDB [(none)]> FLUSH PRIVILEGES;
接着继续wordpress的初始化操作:
最后设置相关的wordpress信息后点击安装wordpress即可:
最后搭建完发现网站显示不正常:
个人觉得原因是wordpress目录中不是以.php结尾的文件没有转发到php-fpm服务器上面来,因此导致了页面访问异常。
尝试了好久没有找好较好的解决办法,目前用了个比较笨的办法,就是在httpd服务器的对应目录上也解压缩一份wordpress的配置内容,这样网站打开就没问题了。
目前还没找出解决办法,求指点。