细节要求:(1) 三者分离于三台主机,Httpd与PHP以FastCGI模式通讯;
(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;
(3) 部署PHP加速器:xcache;
一、准备CentOS 7主机环境以及Repo仓库提供基于rpm安装包方式的程序包安装源
安装主机程序包规划:
主机1:web-server(192.168.1.132) –安装httpd(2.4.6)
主机2:php-server(192.168.1.200) –安装php-fpm(5.4.16),php-mysql,xcache,第三方软件wordpress.phpMyAdmin
主机3:db-server(192.168.1.201) –安装mariadb-server(5.5.52)
3台主机均关闭selinux进程
二、web-server主机服务包与程序安装过程
#yum install httpd -y –安装httpd服务
#systemctl enable httpd.service –设置httpd服务开机自动运行
#systemctl start httpd.service –启动httpd服务进程
#systemctl status httpd.serice –查看httpd服务进程状态
#firewall-cmd –permanent –add-service=http –设置防火墙允许http服务策略
#firewall-cmd –reload –加载防火墙策略
#ss -tnl | grep 80 –查看httpd服务监听状态
#httpd -M | grep fcgi –查看httpd服务是否运行fastCGI调用模块
三、php-server主机安装过程
#yum install php-fpm php-mysql php-xcache -y –安装php-fpm服务
#yum install wordpress phpMyAdmin -y –安装第三方软件
#vim /etc/php-fpm.d/www/conf –配置php-fpm服务参数
listen = 192.168.1.200:9000 –设置本机的socket监听服务
listen.allowed_clients = 192.168.1.132 –设置允许访问php-fpm服务的客户端地址
#systemctl enable php-fpm.service –启用php-fpm开机自动运行
#systemctl start php-fpm.service –启动php-fpm服务进程
#systemctl status php-fpm.service –查看服务进程状态
#firewall-cmd –permanent –add-port=9000/tcp –设置防火墙允许php-fpm端口策略
#firewall-cmd –reload –加载防火墙策略
#ss -tnl | grep 9000 –查看php-fpm服务的9000端口是否已启动并监听
#mkdir -pv /var/www/http/www –创建测试web-server与php-server代理转发
#vim /var/www/http/www/index.php –创建测试页面
This is php-server
<?php
phpinfo();
?>
测试结果
针对wordpress第三方软件的配置
#vim /etc/httpd/conf.d/wordpress.conf
<Directory /usr/share/wordpress>
AllowOverride Options
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted ##允许远程网络浏览访问资源
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
#vim /etc/wordpress/wp-config.php –定义访问远程mariadb数据的信息
// ** MySQL settings – You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'test');
/** MySQL database username */
define('DB_USER', 'wordpress');
/** MySQL database password */
define('DB_PASSWORD', 'redhat');
/** MySQL hostname */
define('DB_HOST', '192.168.1.201');
/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');
针对phpMyAdmin第三方软件的配置
#vim /etc/httpd/conf.d/phpMyAdmin.conf
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
<RequireAny>
Require all granted ##允许远程网络浏览访问资源
Require ip ::1
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
#vim /etc/phpMyAdmin/config.inc.php –仅指定远程mariadb数据库IP地址即可,其他保留默认
// The $cfg['Servers'] array starts with $cfg['Servers'][1]. Do not use
// $cfg['Servers'][0]. You can disable a server config entry by setting host
// to ''. If you want more than one server, just copy following section
// (including $i incrementation) serveral times. There is no need to define
// full server array, just define values you need to change.
$i++;
$cfg['Servers'][$i]['host'] = '192.168.1.201'; // MySQL hostname or IP address
$cfg['Servers'][$i]['port'] = ''; // MySQL port – leave blank for default port
$cfg['Servers'][$i]['socket'] = ''; // Path to the socket – leave blank for default socket
$cfg['Servers'][$i]['connect_type'] = 'tcp'; // How to connect to MySQL server ('tcp' or 'socket')
$cfg['Servers'][$i]['extension'] = 'mysqli'; // The php MySQL extension to use ('mysql' or 'mysqli')
$cfg['Servers'][$i]['compress'] = FALSE; // Use compressed protocol for the MySQL connection
// (requires PHP >= 4.3.0)
$cfg['Servers'][$i]['controluser'] = ''; // MySQL control user settings
// (this user must have read-only
$cfg['Servers'][$i]['controlpass'] = ''; // access to the "mysql/user"
// and "mysql/db" tables).
// The controluser is also
四、db-server主机安装过程
#yum install mariadb-server -y –安装mariadb数据库服务
#firewall-cmd –permanent –add-service=mysql –设置防火墙允许mysql服务端口3306
#firewall-cmd –reload –加载防火墙策略
#vim /etc/my.cnf –修改mariadb配置文件
skip_name_resolve = ON –禁用数据库主机名解析
#systemctl enable mariadb.service –启用mariadb服务开机自动运行
#systemctl start mariadb.service –启动mariadb服务
#systemctl status mariadb.service –查看服务进程状态
#ss -tnl | grep 3306 –查看mysql端口监听状态
#/usr/bin/mysql_secure_install –进行数据库初始化安装,设置root密码,是否允许远程访问管理等
#mysql -uroot -hlocalhost -p –设置第三方程序访问数据库的账户权限
Mariadb[(none)]>grant all privileges on test.* to 'wordpress'@'192.168.1.%' identified by 'redhat'; –授予wordpress远程访问test数据库的权限
Mariadb[(none)]>grant all privileges on *.* to 'pmauser'@'192.168.1.%' identified by 'redhat'; –授予pmauser远程管理mariadb所有数据库的权限
五、web-server主机上创建虚拟主机,并设置php转发过程
#mkdir -pv /var/www/http/{www,wordpress,pma} –创建不同虚拟主机的主目录
#touch /var/www/http/{www,wordpress,pma}/index.php –创建空的.php文件,提供FastCGI转发
#vim /etc/httpd/conf.d/virtualhost.conf –创建并编辑针对虚拟主机的配置文件
<VirtualHost *:80> ##测试FastCGI连通性
ServerName www.test.com
DocumentRoot /var/www/http/www
DirectoryIndex index.php
ProxyPassMatch "^/(.*\.php)$" "fcgi://192.168.1.200:9000/var/www/html/$1"
</VirtualHost>
<VirtualHost *:80> ##测试phpMyAdmin
ServerName pma.test.com
DocumentRoot /var/www/http/pma
DirectoryIndex index.php
ProxyPassMatch "^/(.*\.php)$" "fcgi://192.168.1.200:9000/usr/share/phpMyAdmin/$1"
</VirtualHost>
<VirtualHost *:80> ##测试wordpress
ServerName wordpress.test.com
DocumentRoot /var/www/http/wordpress
DirectoryIndex index.php
ProxyPassMatch "^/(.*\.php)$" "fcgi://192.168.1.200:9000/usr/share/wordpress/$1"
</VirtualHost>
六、验证虚拟主机访问
访问http://pma.test.com/phpmyadmin 虚拟主机
输入运行数据库远程访问的账户信息,打开图形化管理数据库的页面
访问http://wordpress.test.com 虚拟主机
原创文章,作者:N24_shishen,如若转载,请注明出处:http://www.178linux.com/69017
评论列表(2条)
对于分开部署,后期学到nginx的时候,也可以多采用这种方式,但是要注意如果是多台机器如何做负载均衡,负载均衡的策略是怎样的?
@luoweiro:
好的。有待后期继续学习新的知识点以后,在来更新。