Linux系统架构--Apache服务与Nginx服务动静分离

一.动静分离概述

  • Nginx的静态处理能力比较强,但是动态处理能力不足,因此在企业中常采用动静分离技术
  •     在LNMP架构中,静态页面交给Nginx处理,动态页面交给PHP-FPM模块处理。在动静分离技术中动态页面交给Apache处理
  •     Nginx不仅能作为web服务器,还具有方向代理、负载均衡和缓存的功能
  •     Nginx通过proxy模块实现将客户端的请求代理至上游服务器,此时nginx与上游服务器的连接是通过http协议进行的
  •     Nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够根据URL、客户参数或者其他的处理逻辑将用户请求调度至上游服务器
  •     动静分离技术我们需要做一台LAMP平台服务器处理动态请求和一台Nginx处理静态请求,将对php页面的请求转发给LAMP处理,将静态页面的请求交给Nginx处理

二.手工编译安装LAMP

  • 安装Apache服务
tar xf apr-1.6.2.tar.gz              //解压缩包
tar xf apr-util-1.6.0.tar.gz         //解压缩包
tar xf httpd-2.4.29.tar.gz           //解压缩包
mv apr-1.6.2 httpd-2.4.29/srclib/apr //移动工具包至此目录
mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util //移动工具包至该目录

yum -y install \       //安装配置环境包
gcc \
gcc-c++ \
make \
pcre-devel \
expat-devel \
perl

cd httpd-2.4.29        //进入压缩包

./configure \          //配置
--prefix=/usr/local/httpd \
--enable-so \
--enable-rewrite \
--enable-charset-lite \
--enable-cgi

make && make install   //安装

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd  //便于service识别管理
vi /etc/init.d/httpd

# chkconfig: 35 85 21                              //35级别自动运行  第85个启动 第21个关闭
# description: Apache is a World Wide Web server

chkconfig --add httpd //将httpd加入到SERVICE管理器   //可以使用service管理

vi /usr/local/httpd/conf/httpd.conf                 //修改域名与Listen监听地址
ServerName 

ln -s /usr/local/httpd/conf/httpd.conf /etc/        //方便管理主配置文件
ln -s /usr/local/httpd/bin/* /usr/local/bin/        //方便使用Apache服务的系统命令

systemctl stop firewalld.service                    //关闭防火墙    
setenforce 0

httpd -t                                            //检查主配置文件的配置 
apachectl -t                                         

service httpd start                                 //开启Apache服务
netstat -anpt | grep 80                             //验证是否开启

安装mysql服务

yum install -y ncurses-devel autoconf cmake     //安装mysql服务所需要的环境依赖包

 
tar xzvf mysql-5.6.26.tar.gz                    //解压缩包

cd mysql-5.6.26                                 //使用cmake工具配置
cmake  \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DSYSCONFIDIR=/etc \
-DMYSQL_DATADIR=/home/mysql/ \
-DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock

make && make install                           //安装

cp support-files/my-default.cnf /etc/my.cnf    //复制主配置文件覆盖原有的

cp support-files/mysql.server /etc/init.d/mysqld  //便于service管理
chmod 755 /etc/init.d/mysqld                      //添加权限 
chkconfig --add /etc/init.d/mysqld                //加入service管理器  
chkconfig  mysqld --level 35 on                   //开启开机自启动

echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile  //设置环境变量
source /etc/profile
echo $PATH                                         //验证环境变量

useradd -s /sbin/nologin mysql                     //创建管理服务的用户,不可再终端登录
chown -R mysql:mysql /usr/local/mysql/             //更改权限 

/usr/local/mysql/scripts/mysql_install_db \        //初始化数据库 
--user=mysql \
--ldata=/var/lib/mysql \
--basedir=/usr/local/mysql \
--datadir=/home/mysql

ln -s /var/lib/mysql/mysql.sock  /home/mysql/mysql.sock  //创建通讯文件的软连接

vi  /etc/init.d/mysqld                             //更改启动脚本文件,添加路径,      
basedir=/usr/local/mysql                           //安装目录
datadir=/home/mysql                                //数据存放目录

service mysqld start                               //开启服务  
netstat -anpt | grep 3306                          //验证服务 

mysqladmin -u root -p password "abc123"            //给root账号设置密码

安装PHP

yum -y install \                                 //安装PHP编译安装所需要的环境依赖包
gd \
libpng \
libpng-devel \
pcre \
pcre-devel \
libxml2-devel \
libjpeg-devel

tar xjvf php-5.6.11.tar.bz2                      //解压缩包

cd php-5.6.11                                    //配置PHP服务
./configure \                                     
--prefix=/usr/local/php5 \
--with-gd \
--with-zlib \
--with-apxs2=/usr/local/httpd/bin/apxs \
--with-mysql=/usr/local/mysql \
--with-config-file-path=/usr/local/php5 \
--enable-mbstring 

make && make install                            //安装PHP服务

cp php.ini-development /usr/local/php5/php.ini  //复制PHP的主配置文件 
ln -s /usr/local/php5/bin/* /usr/local/bin/     //便于系统识别PHP的服务的命令 
ln -s /usr/local/php5/sbin/* /usr/local/sbin/   //便于系统识别PHP的服务的命令

vim /etc/httpd.conf                              //在合适位置新增,使Apache服务支持PHP格式
//支持php和php源码文件
AddType application/x-httpd-php .php            //392行
AddType application/x-httpd-php-source .phps    //392行
DirectoryIndex index.php index.html             //256行

vim /usr/local/httpd/htdocs/index.php            //创建PHP首页
<?php
phpinfo();
?>

在网页测试“http://192.168.179.149/index.php”       //验证LAMP架构

三.Server2安装Nginx

安装nginx

Nginx服务访问控制,身份验证登录
//解压缩包
tar zxvf nginx-1.12.2.tar.gz -C /opt

//创建用户
useradd -M -s /sbin/nologin nginx

//安装环境依赖包
yum install gcc gcc-c++ pcre pcre-devel zlib-devel -y

//配置
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

//创建软连接,便于管理服务命令
ln -s /usr/local/nginx/sbin/* /usr/local/sbin

//创建脚本,便于service管理服务
vim /etc/init.d/nginx                           //注意脚本文件的路径
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"              //启动服务脚本文件路径
PIDF="/usr/local/nginx/logs/nginx.pid"          //pid文件路径

case "$1" in
 start)
        $PROG;;
 stop)
        kill -s QUIT $(cat $PIDF);;
 restart)
        $0 stop
        $0 start;;
 reload)
        kill -s HUP $(cat $PIDF);;
 *)
        exit 1
esac
exit 0

//添加执行权限
chmod +x /etc/init.d/nginx

//添加为系统服务
chkconfig --add nginx 

//启动服务
service nginx start
//验证服务
netstat -ntap | grep nginx

访问服务首页
IP

四.动静分离

  • 修改Nginx服务器(192.168.179.182)上的配置文件,将访问PHP文件的请求(192.168.179.182/index.php)转发到LAMP服务器上(192.168.179.148)
vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
            proxy_pass   http://192.168.179.148;
        }
  •  重启nginx服务,验证动静分离
  • 修改/usr/local/httpd/htdocs/index.php内容
<?php
echo "apache web";
?>

发布了78 篇原创文章 · 获赞 5 · 访问量 2590

猜你喜欢

转载自blog.csdn.net/qq397750142/article/details/103676727