ceonts6.8 nginx做前端代理apache做后端服务架构配置

Apache 和 Nginx 说是当今最流行的两个 Web 服务器一点也不为过,Apache 用户基数大,稳定,兼容性高(比如jsp/php/cgi/python等等),但与 Ngnix 相比,Apache过于臃肿以及对静态文件响应过于缓慢让很多使用者感到头疼,而 Nginx 对于高并发性能出众,Proxy 功能强效率高,占用系统资源少。

但是 Nginx 也有劣势,它在处理 php 脚本时需要通过 php-fpm(FastCGI) 解析,而 php-fpm 不够稳定,经常出现 502 错误,生成相对复杂的页面没有优势,反而会使 php-cgi 进程变为僵尸进程。而 Apache 在高并发时对队列的处理比 FastCGI 更好,并且在处理动态 php 页面时,mod_php 模块也比 php-cgi 模块更稳定更高效。

事实上很多大型的网站都是采用 Nginx 前端 + Apache 后端的服务器架构,这样可以很好地结合了 Nginx 高并发和静态页面高效率以及 Apache 稳定的动态页面处理特点,再也不用担心 Nginx 以 FastCGI 模式运行 PHP 时的502问题和 Apache 处理静态页面过慢、负载过高的问题。

反向代理过程:

 Nginx前端,Apache后端过程其实很简单,首先用户访问的是80端口的nginx,然后nginx将静态内容留给自己,其余的转发给非80端口的apache,apache处理完毕后再回传给nginx。
  1. LMAP环境安装

    1.安装Apache
    
        # yum -y install httpd
    2.安装完成之后打开httpd的配置文件
        # vi /etc/httpd/conf/httpd.conf
    3.把ServerName前的#去掉,并修改为ServerName localhost 保存后启动httpd
        # service httpd start
    4.然后访问一下自己的服务器的ip会看到如下Apache的欢迎页    

ceonts6.8 nginx做前端代理apache做后端服务架构配置_第1张图片

    5.安装MySQL
        #yum install -y mysql mysql-server
    6.安装完成以后启动mysql
        #service mysqld start
    7.结下来初始化mysql设置账号密码
        mysql> select user,host,password from mysql.user;  #查询mysql的user表

        mysql> drop user ''@localhost;

        mysql> update msyql.user set password = PASSWORD('your_password') where user="root"; #更改root密码

        mysql> flush privileges; #重新加载一下权限
    8.安装PHP
        # yum -y install php
        # yum -y install php-mysql
    9.安装以后重新启动Apache,之后在默认的网站根目录添加个phpinfo.php 文件测试下.
        # service httpd restart
    10.设置开机启动项
        # chkconfig httpd on
        # chkconfig mysqld on
    11.安装 Nginx 和 PHP-FPM(FastCGI)   !此步骤接上,为了避免冲突,先关闭 Apache:
        # service httpd stop
    12.默认情况下,CentOS 官方 rpm 源是没有 nginx 安装包的,需要手动添加,
        # cd /etc/yum.repos.d/
        # vi nginx.repo
    13.往 nginx.repo 文件里添加如下代码:
        [nginx]
        name=nginx repo
        baseurl=http://nginx.org/packages/centos/$releasever/$basearch
        gpgcheck=0
        enabled=1
    14.保存后,即可开始安装 Nginx,
        # yum -y install nginx
    15.安装结束后,启动 Nginx,记得先关闭 Apache: service httpd stop,否则会出现冲突,
        # service nginx start
    16.浏览器访问一下会出现nginx的欢迎页面.

    17.接下来安装 php-fpm 并启动它,用来解析 PHP 脚本,
        # yum -y install php-fpm
        # service php-fpm start
    18.编辑 Nginx 的默认配置文件 default.conf,
        # vi /etc/nginx/conf.d/default.conf
    19. 把 default.conf 文件中 # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 这一行下面的 # 注释去掉,并修改 root 后面的目录为:/usr/share/nginx/html;(此目录为 Nginx 的默认网站目录),修改 SCRIPT_FILENAME 后的参数为:$document_root$fastcgi_script_name; 修改结果如

ceonts6.8 nginx做前端代理apache做后端服务架构配置_第2张图片

    20.保存退出后,重启 Nginx,
        # service nginx restart
    21.同样nginx也在默认的页面写个phpinfo看一下

ceonts6.8 nginx做前端代理apache做后端服务架构配置_第3张图片

    22.注意红框内与上述通过 Apache 解析 phpinfo.php 的区别,此处显示,这里 phpinfo.php 文件是由 FPM/FastCGI 模块解析的。
    设置开机启动项
        # chkconfig nginx on
        # chkconfig php-fpm on
    23.至此,LNMP 环境安装完成!

    24.打开编辑 Nginx 的默认配置文件:
        # vi /etc/nginx/conf.d/default.conf
    25.注释掉之前 FastCGI 监听的配置,并添加如下代码:
        # proxy the PHP scripts to Apache listening on 127.0.0.1:8080
        location ~ \.php$ {
            proxy_pass    http://127.0.0.1:8080
        }
即当 Nginx 接收 http 请求遇到需要解析 php 脚本时,则交给 127.0.0.1:8080 端口来处理,而我们等下配置让 Apache 来监听处理这个端口发来的请求。
最终 Nginx 的配置文件 default.conf 如下,此处保留 Nginx 的默认网站目录 /var/share/nginx/html 不变,可自行修改。   

ceonts6.8 nginx做前端代理apache做后端服务架构配置_第4张图片

26.接下来打开编辑 Apache 的配置文件:
        # vi /etc/httpd/conf/httpd.conf
27.找到 Listen 字段,并改为:Listen 127.0.0.1:8080,让 Apache 来监听这个端口,修改 Apache 的网站根目录为:”/usr/share/nginx/html”,与上述 Nginx 对应的网站目录保持一致,具体的修改细节如下加粗文字所示:
        Listen 127.0.0.1:8080
            ...
        ServerName localhost
            ...
        DocumentRoot "/usr/share/nginx/html"
            ...
        "/usr/share/nginx/html">
            ...
        
            ...
28.保存退出编辑,重启 Nginx 服务,并启动 Apache 服务,并确保这两个服务开机自启:
        # service nginx restart
        # service httpd start
        # chkconfig nginx on
        # chkconfig httpd on
29.借助于谷歌浏览器的工具我们可以发现,当浏览器向服务器发起 http://192.168.211.132/phpinfo.php 这个 HTTP 请求时,是由 Nginx 接收的,当 Nginx 发现需要处理 PHP 脚本时,则通过 127.0.0.1:8080 端口交给 Apache 处理,PHP 的输出信息也显示了 phpinfo.php 脚本正是由 Apache 2.0 Handler 解析处理的。

30.至此,LNMP + Apache 架构配置完成!

你可能感兴趣的:(环境搭建,php,linux)