CentOS 7 基于fastcgi 的lamp



  

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




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

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

         (3) xcachemysql






规划  172.18.105.110 上运行http服务器web

         172.18.250.157 运行数据库sql

172.18.253.26 运行php-fpm程序
数据库




工欲善其事必先利其器apache


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

也提早作好了一个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.26  yum install php-fpm  php-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 配置文件中[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

      <?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

       

准备工做    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


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

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

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

         注:给这个软件受权一个用户能够远程链接数据库,若是是本地链接127.0.0.1

    四、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'   


一、cp config.sample.inc.php  config.inc.php  

二、openssl ran -base64 15

三、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模拟的总请求数



  

 十、在172.18.253.26 主机上编译安装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



 十一、 为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>




到次环境搞定了!

相关文章
相关标签/搜索