2434t 发表于 2016-4-21 10:20:33

CentOS 7 基于fastcgi 的lamp

要求:(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.comwww2.stu05.com
也提前做好了一个CA服务器
也准备yum可以使用









1.在172.18.105.110上yum install httpd -y   注:centos7搭建http默认就是2.4
在172.18.250.157 yum install mariadb.server -y 安装数据库
在172.18.253.26yum install php-fpmphp-mysql php-mbstring -y
此时php是作为程序独立程序运行
   

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
    定义第一个基于FQDN的虚拟主机   
   DirectoryIndex index.php--------------定义php运行的默认主页面
                                           http2.4基于FQND的虚拟主机省了NameVirtualHost命令
      <VirtualHost 172.18.105.110:80>
                  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程序
                <Directory "/web/vhosts/www1">    http2.4需要对根目录做访问控制
                      AllowOverride None
                      Options None
                      Require all granted
                </Directory>
         </VirtualHost>


第二个虚拟主机
<VirtualHost 172.18.105.110:80>
                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的时候使用访问的绝对路径   
                   <Directory "/web/vhosts/www2">            
                        AllowOverride None
                        Options None
                        </Directory>
                  </VirtualHost>





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


8.测试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 配置文件中后面加入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
      <?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







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

1
2
3
准备工作    cpwordpress-4.3.1-zh_CN.zip /web/vhosts/www1/
          unzip wordpress-4.3.1-zh_CN.zip
          ln -sv wordpress-4.3.1-zh_CNwordpress 然后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


准备工作:cpphpMyAdmin-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.phpconfig.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、在172.18.253.26 主机上编译安装xcache      
   # yum install php-devel
   # cdxcache-3.2.0
   # phpize
   # ./configure --enable-xcache--with-php-config=/usr/bin/php-config
   # make && make install
   # cpxcache.ini/etc/php.d/
    重新启动systemctl restart php-fpm




11、 为phpMyAdmin提供https虚拟主机;
       DirectoryIndex index.php

    <VirtualHost 172.18.105.110:443>
                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    开启ssL引擎
          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>



到次环境搞定了!

页: [1]
查看完整版本: CentOS 7 基于fastcgi 的lamp