1、实验需求:
    1)CentOS 7, amp + xcache, rpm包,php-fpm;
        a) 分别深度:httpd, php, mariadb分别部署在一个单独的主机上,以及都在同一主机;
        b) 一个虚拟主机提供phpMyAdmin,另一个虚拟主机提供wordpress;
        c) 为phpMyAdmim提供https服务;
            
2、实验环境:
    1)服务器环境
        Linux服务器操作系统版本:CentOS release 6.7 (Final)
        http)     IP: 172.16.66.60
        php-fpm) IP:172.16.66.70
        mariadb) IP:172.16.66.70
    
    2)测试环境
        WIN7系统客户机):IP:172.16.66.100

3、实验前提:
    1)关闭防火墙和SELinux    
      # service iptables stop
      # sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
      # systemctl stop firewalld
      # systemctl status firewalld

    2)开发包组
      # yum groupinstall Development Tools Server Platform Development -y
      
4、实验过程:
    
    

第一部分:    
部署主机IP: 172.16.66.60
    
1 基本设置
    
    1.1 设置 httpd 主机名 HOSTNAME
echo "HOSTNAME=www1" >> /etc/sysconfig/network

    1.2 更新 HOSTS 配置文件 /etc/hosts
# echo "172.16.66.60 www1 www2 " >> /etc/hosts

    1.3 修改 DNS 解析设置
vim /etc/resolv.conf

2 安装httpd-2.4.6

    2.0 安装依赖库包
# yum install pcre-devel openssl-devel  libevent-devel apr-devel apr-util-devel

    2.1  编译安装并配置 httpd网络服务器
tools]# tar xf httpd-2.4.6.tar.bz2
    
    2.2    编译相关参数
# ./configure --prefix=/usr/local/apache24 --sysconfdir=/etc/httpd24 --enable-so --enable-ssl --enable-cgi--enable-rewrite \
--enable-modules=most --enable-mpms-shared=all --with-mpm=prefork --with-pcre --with-zlib --with-apr=/usr --with-apr-util=/usr
    
    2.3 编译
# make -j 4
    
    2.4 开始安装(install是拷贝命令)
# make install
    
    2.5 检查系统库文件对应路径
# ldconfig -v
    
    2.6 已装载库文件路径
# ldconfig -v

    2.7 在/etc/profile.d/目录中vim apache.sh 添加如下内容,为httpd添加环境变量。
# export PATH=/usr/local/apache24/bin:$PATH
    
    2.8 使其环境变量生效
# source /etc/profile.d/apache.sh

    2.9 把apache头文件导入到usr头文件中
# ln -sv /usr/local/apache24/include /usr/include/httpd

    2.10 如果不想配置man文件,可以使用全路径,man帮助
# man /usr/local/apache24 httpd

    2.11 启动apachectl
# apachectl start

    2.12 为配置文件创建备份目录
# mkdir ~/confbak
    
    2.13 备份配置文件 ~:表示当前登录用户文件夹 -R:递归所有子目录
# cp -R /etc/httpd24/ ~/confbak/

3.创建和配置虚拟主机
    
# cd /etc/httpd24/extra/

    3.1配置虚拟主机(/etc/httpd24/extra/www1.conf)
vim /etc/httpd/conf.d/www1.conf

    主机www1
[root@www1 conf.d]# cat www1.conf
<VirtualHost *:80>
    ServerName www1
#    ServerAlias www
    DocumentRoot /data/vhosts/www1 #注意这行末尾不要带 /
    ProxyRequests Off
    DirectoryIndex index.php
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.66.70:9000/data/vhosts/www1/$1
<Directory "/data/vhosts/www1">
    Options None
    AllowOverride None
    Require all granted
</Directory>
    ErrorLog logs/www1-error_log
    CustomLog logs/www1-access_log combien
    #ServerSignature Off
</VirtualHost>    
    
    3.2配置虚拟主机(/etc/httpd24/extra/www2.conf )
vim /etc/httpd/conf.d/www2.conf

    主机 www2
[root@www1 conf.d]# cat www2.conf
<VirtualHost *:80>
    ServerName www2
    DocumentRoot /data/vhosts/www2
    ProxyRequests Off
    DirectoryIndex index.php
    ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.66.70:9000/data/vhosts/www2/$1
<Directory "/data/vhosts/www2">
    Options None
    AllowOverride None
    Require all granted
</Directory>
    ErrorLog logs/www2-error_log
    CustomLog logs/www2-access_log combien
    #ServerSignature Off
</VirtualHost>

    3.3 检查语法错误
# httpd -t
    
    3.4 重载apachectl服务
# apachectl graceful

    3.5 为虚拟主机创建网站目录www{1,2}
# mkdir /data/vhosts/www{1,2} -p
    
    3.6 测试www1/index.html静态网页
# curl www1 -I

4.配置httpd24
    4.1 启动httpd的相关模块 /etc/httpd24/httpd.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
Include /etc/httpd24/extra/www2.conf
Include /etc/httpd24/extra/www1.conf

    4.2 删除原有/usr/local/apache24/htdocs/
# rm index.html

    4.3让apache能识别php格式的页面
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
    
    
第二部分:
部署mariadb主机IP: 172.16.66.80  

1安装和配置 Mariadb 数据库服务
    1.1 创建存放tools工具目录
# mkdir /tools

    1.2 解压mariadb 到指定目录
# tar xf mariadb-5.5.46-linux-x86_64.tar.gz -C /usr/local/

    1.3 创建mysql数据目录
# mkdir -pv /data/mydata

    1.4 创建mysql系统组
# groupadd -r -g 306 mysql

    1.5 创建mysql系统用户
# useradd -r -g 306 -u 306 mysql

    1.6 授权属主属组/data/mydata
# chown -R mysql.mysql /data/mydata

    1.7 创建软连接
# ln -sv mariadb-5.5.46-linux-x86_64 mysql

    1.8 授权mysql安装包目录
# chown -R root.mysql ./

    1.9 编译mariadb
# scripts/mysql_install_db --user=mysql --datadir=/data/mydata

    1.10 创建mysql配置文件目录
# mkdir /etc/mysql
    
    1.11 拷贝配置文件到指定目录
# cp support-files/my-large.cnf /etc/mysql/my.cnf
    
    1.12 修改配置文件/ect/mysql/my.cnf  在server中添加下面三行
datadir = /data/mydata
innodb_file_per_table = ON
skip_name_resolve = ON

    1.13 添加mysqld服务到开机自启动
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
    
    1.14 为mysqld执行权限
# chmod +x /etc/rc.d/init.d/mysqld

    1.14 添加到服务列表
# chkconfig --add mysqld

    1.14 添加到开机自动启动
# chkconfig on

    1.15 重命名/etc/my.cnf 为 my.cnf.bak
# mv my.cnf my.cnf.bak

    1.16 添加mysql环境变量/etc/profile.d/myslqd.sh 下
export PATH=/usr/local/mysql/bin:/usr/local/mysql/support-files:$PATH

    1.17 使其mysqld环境变量生效
# source /etc/profile.d/mysqld.sh

    1.18 导入mysqld头文件到usr头文件中
# ln -sv /usr/local/mysql/include /usr/include/mysqld

    1.19 启动mysqld服务
# mysql.server start

    1.20 以查看内存占用情况
# top -u mysql

2.使用 MariaDB 内建的安全配置脚本进行配置

    2.1 执行安全配置脚本进行配置
    
# mysql_secure_installation

    2.2 输入密码后回车,下面是输出示例,可以看到命令提示符变为 MariaDB [(none)]>
# mysql -u root -p

    2.3创建一个新数据库给 WordPress 用(这里取名为 wordpress,也可以用别的名字)
MariaDB [(none)]> create database wordpress;

    2.4创建一个新用户,并将该数据库的权限赋给他(这里只是举例,用户名为 admin,密码为 admin)    
MariaDB [(none)]> grant all on wordpress.* to 'admin'@'172.16.%.%' identified by 'admin';    

    2.5更新权限
MariaDB [(none)]> flush privileges;

    2.6退出数据库
MariaDB [(none)]> quit

    2.7 创建配置文件备份目录
# mkdir ~/confbak

    2.7 备份配置文件
#cp /etc/my.cnf ~/confbak/my.cnf.bak

第三部分:
部署php5.4.40主机IP: 172.16.66.70

1安装和配置 php 数据库服务
    1.1 创建存放tools工具目录
# mkdir /tools

    1.2 创建配置文件备份目录
# mkdir ~/confbak/

    1.3 安装依赖库
# yum install libxm12-devel gd-devel freetype-devel libmcrypt-devel -y

    1.3 解压php 到指定目录
# tar xf php-5.4.40.tar.bz

    1.4 编译安装php
# ./configure --prefix=/usr/local/php54 --with-mysql --with-mysqli --with-openssl --enable-mbstring --enable-xml --enable-sockets \
--enable-fpm --with-freetype-dir --with-gd --with-libxml-dir=/usr --with-zlib --with-bz2 --with-png-dir --with-mcrypt \
--with-config-file-path=/etc/php54.ini --with-config-file-scan-dir=/etc/php54.d

    1.5 执行编译命令
# make
    
    1.6 执行安装命令
# make install

    1.7 拷贝配置文件到/etc/目录下
# cp /tools/php-5.4.40/php.ini-production /etc/php54.ini
    
    1.8 软连接头文件到/usr/include/
# ln -sv /usr/local/php54/include /usr/include/


2.配置php-fpm

    2.1 为php-fpm提供init 脚本
# cp sapi/fpm/init.d.php-fpm /etc/rc.d/init.d/php-fpm

    2.2 为php-fpm执行权限
# chmod +x /etc/rc.d/init.d/php-fpm

    2.3 加入到服务列表
~]# chkconfig --add php-fpm

    2.4 设置开机自动运行
# chkconfig php-fpm on

    2.5 为php-fpm提供配置文件
# cp /usr/local/php54/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf

    2.6 备份配置文件到指定目录
# cp -R /usr/local/php54/etc/ ~/confbak/
    
    2.7 编辑配置php-fpm的配置文件/usr/local/php54/etc/php-fpm.conf 修改如下5行
pm.max_children = 50
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php54/var/run/php-fpm.pid
listen = 172.16.66.70:9000 本机监听ip
listen.allowed_clients = 172.16.66.60  允许的ip

    2.8 启动php-fpm服务
# service php-fpm start

    2.9 查看php-fpm服务是否启动成功
# ps aux | grep php-fpm

    2.10 查看监听套接字
# netstat -tnlp | grep php-fpm

第四部分: 安装和配置 wordpress,phpMyAdmin
在php-fpm主机环境中 IP: 172.16.66.70

1.安装和配置wordpress

    1.1 解压wordpress包
tools]# unzip wordpress-4.3.1-zh_CN.zip

    1.2 拷贝到站点目录www1中
    
cp wordpress /data/vhosts/www1

    1.3 改名wordpress配置文件为wp-config.php
]# cp wp-config-sample.php wp-config.php
    
    1.4 修改wp-config.php文件连接数据库
~]# sed -n '22,38p' /data/vhosts/www1/wordpress/wp-config.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');

/** MySQL数据库用户名 */
define('DB_USER', 'admin');

/** MySQL数据库密码 */
define('DB_PASSWORD', 'admin');

/** MySQL主机 */
define('DB_HOST', '172.16.66.80');

/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8');

/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');
    
2.安装和配置phpMyAdmin

    2.1 解压phpMyAdmin包
tools]# unzip phpMyAdmin-4.4.14.1-all-languages.zip

    2.2 拷贝到站点目录www2中
~]# cp -r phpMyAdmin-4.4.14.1-all-languages /data/vhosts/www2

    2.3 配置phpMyAdmin软件
# ln -sv phpMyAdmin-4.4.14.1-all-languages/ pma

    2.4 改名配置文件名
~]# cp config.sample.inc.php config.inc.php

    2.5 生成随机数
~]# openssl rand -hex 8   #-->(640b56f72820ace8)

    2.6 修改配置文件连接数据库config.inc.php
~]# vim config.inc.php
$cfg['blowfish_secret'] = '640b56f72820ace8'
$cfg['Servers'][$i]['host'] = '172.16.66.80';
$cfg['Servers'][$i]['user'] = 'admin';
$cfg['Servers'][$i]['password'] = 'admin';
$cfg['Servers'][$i]['connect_type'] = 'tcp';    
    
3.测试php和mariad连通性

    3.1    httpd-->php是否可以访问
www1]# cat admin.php
<?php
    phpinfo();
?>

    3.2 httpd-->php--mariadb是否可以访问
www1]#cat index.php    
<?php
    $conn = mysql_connect('172.16.100.71','admin','admin');
    if($conn)
        cho "OK";
    else
        echo "Failure";
?>                
    
4.测试wordpress和phpMyAdmin

    4.1 在PC浏览器中测试,wordpress是否能正常方式
http://www1/wordpress/index.php通过80端口访问

    4.2 在PC浏览器中测试,根据提示输入数据库名和密码(主机账号和密码是授权wordpress中用户)
http://www2/pma/index.php


5.为php-fpm安装xcache加速器并配置

    5.1 解压xcache3.3包
# tar xf xcache-3.2.0.tar.bz2

    5.2 在/tools/xcache-3.2.0目录下 执行挂载接口
#/usr/local/php54/bin/phpize
    
    5.3 编译安装
# ./configure --enable-xcache --with-php-config=/usr/local/php54/bin/php-config
    
    # make && make install


    5.4 编辑php.ini ,整合php和xcache
    
# cp /tools/xcache-3.2.0/xcache.ini /etc/php54.d


第五部分:为phpMyAdmim提供https服务
在httpd主机环境中 IP: 172.16.66.60
    
工作目录:/etc/pki/CA/

1.建立私有CA

    1.1 生成私钥
CA]# (umask 077; openssl genrsa -out private/cakey.pem 2048)

    1.2 生成自签证书
CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem
Country Name (2 letter code) [XX]:CN  
State or Province Name (full name) []:Beijing
Common Name (eg, your name or your server's hostname) []:www2

    1.3 提供辅助文件
CA]# touch index.txt
CA]# echo 01 > serial 序列号
CA]# tree
.
├── cacert.pem
├── certs
├── crl
├── index.txt
├── newcerts
├── private
│   └── cakey.pem
└── serial

2.节点申请证书
    
    2.1 生成私钥
~]# mkdir -pv /etc/httpd/ssl
ssl]# (umask 077; openssl genrsa -out httpd.key 1024)

    2.2 生成证书签署请求:
ssl]# openssl req -new -key httpd.key -out httpd.csr
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Common Name (eg, your name or your server's hostname) []:www2

    2.3 把请求发给CA
ssl]# cp httpd.csr /tmp/


3.CA签发证书

    3.1 签署证书
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt

    3.2 把签署好的证书发还给请求者。
~]# cp /etc/pki/CA/certs/httpd.crt /etc/httpd/ssl/

注意:本次私建CA和节点申请证书在同一台机器完成。

4.配置httpd支持使用ssl,及使用的证书

    4.1 在httpd.conf中启用mod_ssl模块
LoadModule ssl_module modules/mod_ssl.so    
Include /etc/httpd24/extra/httpd-ssl.conf

    4.2修改配置文件ssl.conf
~]# cat /etc/httpd/conf.d/ssl.conf
    <VirtualHost>
     DocumentRoot "/data/vhosts/www2"
     ServerName www2:443
     ProxyRequests Off
     DirectoryIndex index.php
     ProxyPassMatch ^/(.*\.php)$ fcgi://172.16.66.70:9000/data/vhosts/www2/$1
     SSLCertificateFile /etc/httpd24/ssl/httpd.crt
     SSLCertificateKeyFile /etc/httpd24/ssl/httpd.key
     <Directory "/data/vhosts/www2">
            SSLOptions +StdEnvVars
            AllowOverride None
            Require all granted
     </Directory>
    </VirtualHost>
    

第六部分:压力测试报告