一.动静分离概述
- 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";
?>