CentOS 7, lamp (module)
要求:(1) 三者分离于两台主机;
(2) 一个虚拟主机用于提供phpMyAdmin;另一个虚拟主机用于提供wordpress;
(3) xcache
(4) 为phpMyAdmin提供https虚拟主机;
规划: 172.18.105.110 上运行http服务器以及php后端脚本
172.18.17.191 运行数据库
准备工作
我提前做好了DNS 两台A记录172.18.105.110 对应的FQDN 为www1.stu05.com www2.stu05.com
1.在172.18.105.110上yum install httpd php php-mysql -y 注:此时php是作为httpd的模块
在172.18.17.191 yum install mariadb.server -y 安装数据库
systemctl start httpd
扩展:2.4的http支持fastcgi,如果要使用把php替换成php-fpm
2.关闭中心主机的 #DocumentRoot "/var/www/html"
3.配置虚拟主机的根目录
mkdir -pv /web/vhosts/www1
mkdir -pv /web/vhosts/www2
4.配置基于FQDN的虚拟主机 vim /etc/httpd/conf.d/vhosts
虚拟主机一
<VirtualHost 172.18.105.110:443>
ServerName www1.stu05.com
DocumentRoot "/web/vhosts/www1"
<Directory "/web/vhosts/www1">
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>
虚拟主机二
<VirtualHost 172.18.105.110:80>
ServerName www2.stu05.com
DocumentRoot "/web/vhosts/www2"
<Directory "/web/vhosts/www2">
AllowOverride None
Options None
</VirtualHost>
检查语法httpd -t 时中间出现报错:
httpd: Could not reliably determine the server‘s fully qualified domain name, using localhost.localdomain. Set the ‘ServerName‘ directive globally to suppress this message
原因:httpd:不能可靠地确定服务器的完全限定域名,使用localhost.localdomain。设置‘ ServerName指令在全球范围内抑制此消息
解决办法:vim /etc/httpd/conf/httpd.conf 首先找到ServerName(约213行),将其设置为localhost:80
5.测试http的虚拟站点是否正常
vim /web/vhosts/www1 和 /web/vhosts/www1
vim index.html
www2站点 <b1>www2 meimei </b1> www1站点 <b1>www1 meimei </b1>
在浏览器里输入www1.stu05.com www2.stu05.com ---------------此时本地dns已经指向本地
6.rpm -ql php 检查 libphp5.so 模块是否对应着httpd启用的mpm模块为prefork
注意:测试前查看php的库是否和httpd的mpm的多道处理模块是否匹配
rpm查看库 rpm -ql php httpd查看启用模块 vim /etc/httpd/conf.modules.d/00-mpm.conf
php库:libphp5.so 模块:LoadModule mpm_prefork_module modules/mod_mpm_prefork.so
php库:libphp5-zts.so 模块:LoadModule mpm_worker_module modules/mod_mpm_worker.so
LoadModule mpm_event_module modules/mod_mpm_event.so
7.测试httpd与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的连接是否正常
以管理员登录mysql,并授权远程登录用户
CREATE DATABASE wpdb1; 创建数据库
(1) GRANT ALL ON wpdb1.* TO [email protected]‘172.18.%.%‘ IDENTIFIED BY ‘wpuser1‘;
注:GRANT授权 在172.16.0.0/16网段的主机通过testuser远程访问testdb的所有表
(2) FLUSH PRIVILEGES 刷新立即生效
可查看用户:SELECT USER();
测试下远程用户是否可以登录数据库:mysql -uwpuser1 -h172.18.17.191 -pwpuser1
(3)关闭mysql登录时候用户名的反解
vim /etc/my.cnf 配置文件中[mysqld]后面加入skip_name_resolve = ON
然后重载service mysqld reload
分别放在index.php中后,运行 http://172.18.105.110
<?php
$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 [email protected]‘172.18.%.%‘ IDENTIFIED BY ‘wppress‘
注:给这个软件授权一个用户可以远程连接数据库,如果是本地连接127.0.0.1
4、vim vp-config.php 编辑配置文件
/** WordPress数据库的名称 */
define(‘DB_NAME‘, ‘wpdb1‘);
/** MySQL数据库用户名 */
define(‘DB_USER‘, ‘wpuser1‘);
/** MySQL数据库密码 */
define(‘DB_PASSWORD‘, ‘wpuser1‘);
/** MySQL主机 */
define(‘DB_HOST‘, ‘172.18.17.191‘); 如果是本地连接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 [email protected]‘172.18.%.%‘ IDENTIFIED BY ‘myuser‘
为phpMyAdmin能够连接数据库修改配置文件
(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.17.191‘; 远程连接指向数据库的主机
测试: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虚拟主机;
<VirtualHost 172.18.105.110:443>
ServerName www1.stu05.com
DocumentRoot "/web/vhosts/www1/myadmin"
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/httpd.crt--------------指向证书的位置
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key------------指向公钥的位置
<Directory "/web/vhosts/www1/myadmin">
AllowOverride None
Options FollowSymLinks-----------------------------允许访问链接文件的源文件
Require all granted
</Directory>
</VirtualHost>
测试:本地主机指向dns
浏览器 https://www1.stu05.com http://www2.stu05.com/wordpress