千家信息网

CentOS 7 基于fastcgi 的lamp

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,实验环境 CentOS 7, lamp (php-fpm)要求:(1) 三者分离于三台主机;(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;(3) xcac
千家信息网最后更新 2026年11月01日CentOS 7 基于fastcgi 的lamp



实验环境 CentOS 7, lamp (php-fpm)





要求:(1) 三者分离于三台主机;

(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;

(3) xcache


规划 172.18.105.110 上运行http服务器

172.18.250.157 运行数据库

172.18.253.26 运行php-fpm程序


我提前做好了DNS 两台A记录172.18.105.110 对应的FQDN 为www1.stu05.com www2.stu05.com

也提前做好了一个CA服务器


centos7搭建http默认就是2.4

1.在172.18.105.110上yum install httpd -y 注:此时php是作为程序独立程序运行

在172.18.250.157 yum install mariadb.server -y 安装数据库

在172.18.253.26 yum install php-fpm php-mysql php-mbstring -y

systemctl start httpd

扩展:2.4的http支持fastcgi,如果要使用把php替换成php-fpm



2.在172.18.105.110上 关闭中心主机的vim /etc/httpd/conf/httpd.conf #DocumentRoot "/var/www/html"


3.在172.18.105.110上和172.18.253.26配置http端虚拟主机站点目录,和后端php动态数据站点目录,以便转发请求

mkdir -pv /web/vhosts/www1

mkdir -pv /web/vhosts/www2

4.在172.18.105.110上配置基于FQDN的虚拟主机 vim /etc/httpd/conf.d/vhosts

DirectoryIndex index.php--------------定义php运行的默认主页面

http2.4基于FQND的虚拟主机省了NameVirtualHost命令

ServerName www1.stu05.com

DocumentRoot "/web/vhosts/www1"

ProxyRequests Off 关闭正向代理

ProxyPassMatch ^/(.*\.php)$ fcgi://172.18.253.26:9000/web/vhosts/www1/$1 注:http服务器通过方向代理把cgi的请求转发给 172.18.253.26的PHP程序

http2.4需要对根目录做访问控制

AllowOverride None

Options None

Require all granted


ServerName www2.stu05.com

DocumentRoot "/web/vhosts/www2" ------因为wordpress程序会自动从www2里找到index.php

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://172.18.105.110:9000/web/vhosts/www2/wordpress/$1

注:转发给PHP的时候使用访问的绝对路径

AllowOverride None

Options None

5.在172.18.253.26上 vim /etc/php-fpm.d/www.conf

listen = 172.18.253.26:9000 php服务程序需要监听在能够被外部访问的sokcet

listen.allowed_clients = 172.18.105.110 允许哪个前端http访问

6. 在172.18.253.26上 创建session目录,并确保运行php-fpm进程的用户对此目录有读写权限;

# mkdir /var/lib/php/session

# chown apache.apache /var/lib/php/session



7.测试php是否正常 vim /web/vhosts/www1 和 /web/vhosts/www1

vim index.php

php测试代码

<?php

phpinfo();

?>

浏览器 http://www1.stu05.com http://www2.stu05.com


7.测试php与mysql-server的连接是否正常

172.18.250.157上 以管理员登录mysql,并授权远程登录用户

CREATE DATABASE wpdb; 创建数据库

(1) GRANT ALL ON testdb.* TO testuser@'172.18.%.%' IDENTIFIED BY 'testpass';

注:GRANT授权 在172.16.0.0/16网段的主机通过testuser远程访问testdb的所有表

(2) FLUSH PRIVILEGES 刷新立即生效

可查看用户:SELECT USER();


(3)关闭mysql登录时候用户名的反解

vim /etc/my.cnf 配置文件中[mysqld]后面加入skip_name_resolve = ON

然后重载service mysqld reload

172.18.105.110中 vim /web/vhosts/www1 和 /web/vhosts/www1

放在index.php中后,运行 http://172.18.105.110

$conn = mysql_connect('172.16.100.67','testuser','testpass');

if ($conn)

echo "OK";

else

echo "Failure";

?>


lamp环境就成功了。


总结:

任何开源程序需要连接到数据库的,在测试lamp连接数据库ok的情况下,如果是远程连接,则需要创建一个得到授权的远程连接的用户,而workdpress不仅需要创建一个数据库,还需要一个得到授权的远程连接的用户。

远程主机登录数据库 define('DB_HOST', '172.18.250.157'); 本地主机登录数据库define('DB_HOST', '127.0.0.1');

本地数据库root登录如果有密码 mysql -uroot -pxwj4611

如果本地数据库root没有密码mysql

8.第一个虚拟主机运行wordpress

cp wordpress-4.3.1-zh_CN.zip /web/vhosts/www1/

unzip wordpress-4.3.1-zh_CN.zip

ln -sv wordpress-4.3.1-zh_CN wordpress 然后cd /wordpress

1、cp wp-config-sample.php wp-config.php

2、执行mysql或者如果本地root已经设定密码mysql -uroot -pxwj4611 ------CREATE DATABASE wpdb;创建数据库 大多数开源的程序会自动创建数据库

3、GRANT ALL ON wpdb.* TO wpuser@'172.18.%.%' IDENTIFIED BY 'wppress'

注:给这个软件授权一个用户可以远程连接数据库,如果是本地连接127.0.0.1

4、vim vp-config.php 编辑配置文件

/** WordPress数据库的名称 */

define('DB_NAME', 'wpdb');


/** MySQL数据库用户名 */

define('DB_USER', 'wpuser');


/** MySQL数据库密码 */

define('DB_PASSWORD', 'wppasswd');


/** MySQL主机 */

define('DB_HOST', '172.18.105.110'); 如果是本地连接loaclhost 或者127.0.0.1

测试:www1.stu05.com/wordpress 压力测试 ab -n 1000 -c 100 http://www2.stu05.com/wordpress/index.php -c模拟的并发数 -n模拟的总请求数

本地测试的没有考虑带宽,服务器可能没有跑满带宽跑满了。Requests per second: 8.85 [#/sec] (mean) 每秒钟处理的请求数


9.第二个虚拟主机运行phpMyAdmin

准备工作: cp phpMyAdmin-4.4.14.1-all-languages.zip /web/vhosts/www1/

unzip phpMyAdmin-4.4.14.1-all-languages.zip

ln -sv phpMyAdmin-4.4.14.1-all-languages pma 注:方便回滚

我需要事先为其连接到数据库后准备一个授权的远程链接的用户:以遍可以登录

(1)、执行mysql或者如果本地root已经设定密码mysql -uroot -pxwj4611

(2)、GRANT ALL ON wpdb.* TO myuser@'172.18.%.%' IDENTIFIED BY 'myuser'

1、cp config.sample.inc.php config.inc.php

2、openssl ran -base64 15

3、vim config.inc.php

$cfg['blowfish_secret'] = '46aJFLiLxmqO0qrdGqwx'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ -------随机数贴里面

$cfg['Servers'][$i]['host'] = '172.18.250.157'; 远程连接指向数据库的主机

测试:www1.stu05.com/pma

压力测试 ab -n 1000 -c 100 http://www1.stu05.com/pma/index.php -c模拟的并发数 -n模拟的总请求数



10、编译安装xcache

# yum install php-devel

# cd xcache-3.2.0

# phpize

# ./configure --enable-xcache --with-php-config=/usr/bin/php-config

# make && make install

# cp xcache.ini /etc/php.d/

重新启动systemctl restart php-fpm

11、 为phpMyAdmin提供https虚拟主机;

DirectoryIndex index.php


ServerName www1.stu05.com

DocumentRoot "/web/vhosts/www1/myadmin"

ProxyRequests Off

ProxyPassMatch ^/(.*\.php)$ fcgi://172.18.105.110:9000/web/vhosts/www1/myadmin/$1

SSLEngine on

SSLCertificateFile /etc/httpd/ssl/httpd.crt--------------指向证书的位置

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key------------指向公钥的位置


AllowOverride None

Options FollowSymLinks-----------------------------允许访问链接文件的源文件

Require all granted


数据 数据库 主机 用户 测试 运行 程序 虚拟主机 登录 密码 服务 服务器 目录 配置 指向 文件 位置 压力 带宽 时候 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新华互联网科技 A股互联网金融科技公司 互联网为科技 科技服务与互联网 平安科技 互联网 奇酷互联网络科技公司 赫美联合互联网科技 佳云科技和互联网广告 宝灵互联网科技有限公司 哈尔滨屹滨互联网科技有限公司 中和天地互联网科技有限公司 恒生互联网科技业指数调整周期 南通创西澳互联网科技有限公司 雨阳互联网卡科技有限公司 互联网科技包装股份有限公司上市 广东鹅鹅鹅互联网科技有限公司 西安左小互联网科技有限公司 马化腾互联网科技教学 互联网的科技体现在哪里 如何强化互联网金融科技 互联网高科技 互联网科技工作委员会主任 互联网金融 科技金融 互联网女皇 腾讯科技 金融科技和互联网金融 南山科技园互联网公司有哪些 上海创道互联网络科技有限公司 从那以后互联网科技有限公司 版纳互联网科技选哪家 10位科技互联网大佬
0