通过fast-cgi方式在三台主机部署phpwind并设置为https站点

通常来说httpd用来处理静态的网页请求,动态的资源请求以前是通过CGI的方式进行处理的,但是CGI的方式的处理过程是这样:有动态资源请求,服务器会fork一个CGI进程进行资源处理,处理完成后这个进程会退出,当再有新的动态资源请求,又会fork一个进程,这样的效率是很低的。后来就有了通过加载php模块的方式,即:httpd服务器启动之后会自动加载php动态资源处理模块,采用进程间通信方式进行处理动态资源,当有动态资源请求的时候会通过这个php模块进行处理,这样就不需要再频繁启动CGI进程了,但是每次修改php配置文件都需要重启httpd进程来重读配置。以此就衍生了fast-cgi的处理方式。

fast-cgi和cgi的区别在于:

  • 当有动态资源请求的时候cgi要fork一个cgi进程来处理,然后退出cgi进程,效率低下;

  • fast-cgi通过php-fpm进程管理器进行php进程的管理,这个进程是常驻类型的,当有动态资源请求的时候会通过php代理模块自动转发到后台的php进程进行处理,这样就大大提高了效率;

  • fast-cgi的httpd和php可以部署在同一台主机,也可以分开部署,更灵活的应对不同的业务场景;

下面详细介绍通过fast-cgi的方式在三台不同的主机之间通过lamp部署phpwind:

三台主机ip配置:

httpd主机:192.168.11.152

php主机:192.168.11.154

mariadb主机:192.168.11.155

在实验之前先关闭selinux和防火墙,以方便实验的进行。

  1. 三台主机需要安装各自的组件:

    1. httpd主机:安装httpd;

      yum install -y httpd

    2. php主机:安装php-fpm组件和php-mysql组件等;

       yum install php-fpm

    3. mariadb主机:安装mariadb-server提供数据库服务;

       yum install mariadb-server

      注意:

      php-fpm是php的进程管理器,负责设置启动多少个php进程,最大空闲进程等信息。在php5.3,php-fpm默认是不提供的,而是作为第三方补丁包的方式,如果需要还要进行编译安装。所以此处采用php5.4,而centos7之后默认提供php5.4的安装包,所以此处主机都以centos7为例进行介绍。

  2. 配置php主机的php-fpm配置文件,位于/etc/php-fpm.d/www.conf,有以下几项需要修改:

     listen = 192.168.11.154:9000 #修改服务监听在本地哪个地址的哪个端口上,如果为空则表示本机所有地址# listen.allowed_clients = 192.168.11.152 #允许那台主机作为客户端连接到本php服务器# php_value[session.save_path] = /var/lib/php/session #此处为php的session会话路径,默认此路径不存在,需要手动创建# user = apache #默认进程运行用户# group = apache #默认进程运行组#

    手动创建php session路径,并设置路径属主属组为apache:

     mkdir -pv /var/lib/php/session chown apache:apache /var/lib/php/session

    启动php-fpm服务:

     systemctl start php-fpm
  3. 在ttpd主机的/etc/httpd/conf.d路径下创建virtualhosts.conf的配置文件,配置文件如下:

    通过fast-cgi方式在三台主机部署phpwind并设置为https站点

    注意:

    首先需要确保httpd已经加载了:proxy_fcgi_module (shared)模块,通过httpd -M命令查看;

    proxyrequests off表示关闭正向代理;

    ProxyPassMatch ^/(.*.php)$ fcgi://192.168.11.154:9000/data/mysite/www/html/$1表示当有后缀名为php的动态资源请求的时候转发到ip位192.168.11.154的主机进行处理;

  4. 在httpd服务器把phpwind压缩包拷贝到配置文件指定的documentroot路径,即/data/mysite/www/html路径下:

    通过fast-cgi方式在三台主机部署phpwind并设置为https站点

    注意:

    此处把phpwind路径中的upload做了一个软连接到此处,方便管理。如果要允许通过软连接的方式访问站点,则配置文件需要加上options followsymlinks选项;

  5. 在php主机建立同样的documentroot路径,然后把phpwind也拷贝到此路径下并做软连接。原因是因为phpwind既有静态资源也有动态资源,静态资源通过httpd服务器提供,动态资源通过php主机提供,所以两台主机都需要提供此路径和phpwind文件。

  6. 此时浏览器通过192.168.11.152/phpwind应该就可以访问到phpwind了,然后按照phpwind的设置向导进行数据库的配置:

    通过fast-cgi方式在三台主机部署phpwind并设置为https站点

  1. 在mariadb服务器创建数据库和用户:

     mysql -uroot -p #root用户登录数据库# create database phpwind; #创建phpwind数据库# grant all on phpwind.* to 'phpwind'@'192.168.11.%' identified by '1234567a'; #授权phpwind用户只能从192.168.11.*网段登录数据库并对phpwind数据库具有所有权限#

    注意:

    mariadb数据库默认会做ip地址到主机名的反向解析,所以需要在配置文件中关闭此功能:

    /etc/my.cnf.d/server.cnf的[mysqld]下添加skip_name_resolve=ON即可;

  2. 按照创建的数据库信息填写即可:

    通过fast-cgi方式在三台主机部署phpwind并设置为https站点

至此,通过fast-cgi部署phpwind成功。

  1. 接下来通过openssl为站点部署https和dns,此处把mariadb服务器也作为dns服务器和CA服务器:

    1. 部署dns服务器:

       yum install bind #通过安装bind部署dns#
    2. 修改/etc/named.conf配置文件:

       listen-on port 53 { 127.0.0.1; 192.168.11.155; }; #修改本地监听地址# allow-query     { any; }; #允许所有主机做查询# dnssec-enable no; #禁止dnssec# dnssec-validation no; #禁止dnssec#
    3. 修改/etc/named.rfc1912.zones,配置zone文件:

       zone "phpwind.wzh" IN {         type master;         file "phpwind.wzh.zone"; }  #添加phpwind.wzh站点的zone配置#
    4. 在/var/named/下创建phpwind.wzh.zone文件,配置如下:

      通过fast-cgi方式在三台主机部署phpwind并设置为https站点

  2. 配置CA服务器:

    1. 生成CA私钥文件和自签名证书:

       (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
    2. 生成index.txt和serial文件:

       touch /etc/pki/CA/index.txt echo 01 > /etc/pki/CA/serial
    3. httpd安装mod_ssl模块:

       yum install -y mod_ssl
    4. 生成本地私钥文件和证书申请文件,然后发给CA服务器做证书签发:

       (umask 066; openssl genrsa -out /etc/pki/tls/private/test.key 2048) openssl req -new -key /etc/pki/tls/private/test.key -days 365 -out etc/pki/tls/test.csr openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365

      注意:

      httpd服务器的证书申请文件的默认国家,省,公司名称三项必须和CA一致 。

      CommonName必须和网站名一致。

    5. 修改/etc/httpd/conf.d/virtaulhosts.conf文件为:

      通过fast-cgi方式在三台主机部署phpwind并设置为https站点

    6. 浏览器导入CA自签名证书,然后通过https://www.phpwind.wzh/phpwind/index.php访问站点,如果正常,则实验成功:

      通过fast-cgi方式在三台主机部署phpwind并设置为https站点

原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/77434

(0)
王子豪王子豪
上一篇 2017-06-03 15:15
下一篇 2017-06-04 11:25

相关推荐

  • Tomcat相关知识整理

    初识Servlet SUN公司制定了一系列Web应用与Web服务器进行协作的标准Java接口,统称为Java Servlet API,还对Web服务器发布及运行Web应用的一些细节做了规约。SUN公司把这一系列标准Java接口和规约统称为Servlet规范。Servlet就是Web服务器与Web应用进行协作的标准接口。 Servlet规范把能够发布和运行Ja…

    Linux干货 2016-12-05
  • date命令常见用法。

    date是一个非常实用的小工具,可以查看时间,并且也可以添加选项去完成自己想完成的东西。

    Linux干货 2017-11-13
  • linux基础学习之AWK

    内容: 1、awk输出(print、printf) 2、awk变量(内建变量和定义变量) 3、awk数组 4、awk重定向输出 5、awk操作符 6、awk常见模式类型 7、awk控制及循环语句 8、awk内置函数 awk:(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)…

    Linux干货 2016-09-22
  • Memcache存储大数据的问题

    Memcache存储大数据的问题   huangguisu       Memcached存储单个item最大数据是在1MB内,如果数据超过1M,存取set和get是都是返回false,而且引起性能的问题。 我们之前对排行榜的数据进行缓存,由于排行榜在我们所有sql select…

    Linux干货 2015-05-05
  • 设计模式 ( 二十 ) 访问者模式Visitor(对象行为型)

    特此说明:对访问者模式理解不是特别透彻,若有误,请指正,谢谢! 1.概述 在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同。 例子1:顾客在超市中将选择的商品,如苹果、图书等放在购物车中,然后到收银员处付款。在购…

    Linux干货 2015-04-07
  • 以后的运维是linux系统的天下

       搞IT行业差不多10年了,也接触过网络设备的配置,比如防火墙和交换机的管理,也管理过虚拟化平台,比如vmware的虚拟化,还懂一些简单的oracle数据库的安装,存储、光钎交换机的配置等,因为曾经在传统企业做过8年多的网管,当时的企业规模也是比较大,也接触了很多设备,但就是linux接触的不是很多,后来去一家公司做系统集成,也是什么…

    Linux干货 2016-10-19