nginx实现动静分离的方法示例

nginx实现动静分离的方法示例,第1张

nginx实现动静分离的方法示例 目录
  • 在server1上部署nginx
  • 在server上部署lnmp
  • node3部署httpd
  • 实现分离部署

本文主要介绍了nginx实现动静分离的方法示例,具有一定的学习价值,具体如下

环境:

系统/主机名 IP地址 服务 Redhat8 :server1 192.168.244.131 nginx Redhat8:server2 192.168.244.133 lnmp Content7:node3 192.168.244.142 httpd

在三台主机上关闭防火墙

[root@server1 ~]# systemctl stop firewalld
[root@server1 ~]# systemctl disable firewalld
[root@server1 ~]# vim /etc/selinux/config 
SELINUX=disabled

在server1上部署nginx
[root@server1 opt]# cat nginx.sh 
#!/bin/bash

if [ $UID -ne 0 ];then
 echo "Please use administrator account"
 exit
fi

app_a=nginx-1.20.1.tar.gz

dir_a=/usr/local
dir_b=/var/log
dir_c=nginx-1.20.1

if [ ! -d $dir_b/nginx ];then
 mkdir -p $dir_b/nginx
fi
chown -R nginx.nginx $dir_b/nginx

yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++  make
yum -y groups mark install 'Development Tools'

id nginx &>/dev/null 
if [ $? -ne 0 ];then
 useradd -r -M -s /sbin/nologin nginx
fi

tar xf bag/$app_a -C $dir_a

cd  $dir_a/$dir_c
if [ ! -d $dir_a/nginx ];then
 ./configure 
  --prefix=$dir_a/nginx 
  --user=nginx 
  --group=nginx 
  --with-debug 
  --with-http_ssl_module 
  --with-http_realip_module 
  --with-http_image_filter_module 
  --with-http_gunzip_module 
  --with-http_gzip_static_module 
  --with-http_stub_status_module 
  --http-log-path=$dir_b/nginx/access.log 
  --error-log-path=$dir_b/nginx/error.log  && make  && make install
fi

cd ..
if [ ! -f /etc/profile.d/nginx.sh  ];then
 echo "export PATH=$dir_a/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
fi

cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=Nginx server daemon
Wants=sshd-keygen.target

[Service]
Type=forking
ExecStart=$dir_a/nginx/sbin/nginx
ExecStop=$dir_a/nginx/sbin/nginx -s stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
EOF


systemctl daemon-reload
systemctl enable --now nginx

查看端口

[root@server1 ~]# ss -antl
State    Recv-Q   Send-QLocal Address:PortPeer Address:Port   
LISTEN   0 128  0.0.0.0:220.0.0.0:*      
LISTEN   0 128  0.0.0.0:800.0.0.0:*      
LISTEN   0 128     [::]:22   [::]:*   

访问页面



在server上部署lnmp

部署nginx

[root@server2 lnmp]# cat install.sh 
#!/bin/bash

if [ $UID -ne 0 ];then
 echo "Please use administrator account"
 exit
fi

app_a=nginx-1.20.1.tar.gz

dir_a=/usr/local
dir_b=/var/log
dir_c=nginx-1.20.1

if [ ! -d $dir_b/nginx ];then
 mkdir -p $dir_b/nginx
fi
chown -R nginx.nginx $dir_b/nginx

yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++  make
yum -y groups mark install 'Development Tools'

id nginx &>/dev/null 
if [ $? -ne 0 ];then
 useradd -r -M -s /sbin/nologin nginx
fi

tar xf bag/$app_a -C $dir_a

cd  $dir_a/$dir_c
if [ ! -d $dir_a/nginx ];then
 ./configure 
  --prefix=$dir_a/nginx 
  --user=nginx 
  --group=nginx 
  --with-debug 
  --with-http_ssl_module 
  --with-http_realip_module 
  --with-http_image_filter_module 
  --with-http_gunzip_module 
  --with-http_gzip_static_module 
  --with-http_stub_status_module 
  --http-log-path=$dir_b/nginx/access.log 
  --error-log-path=$dir_b/nginx/error.log  && make  && make install
fi

cd ..
if [ ! -f /etc/profile.d/nginx.sh  ];then
 echo "export PATH=$dir_a/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
fi

cat > /usr/lib/systemd/system/nginx.service << EOF
[Unit]
Description=Nginx server daemon
Wants=sshd-keygen.target

[Service]
Type=forking
ExecStart=$dir_a/nginx/sbin/nginx
ExecStop=$dir_a/nginx/sbin/nginx -s stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now nginx

部署mysql

[root@server2 lnmp]# cat mysql.sh 
#!/bin/bash

if [ $UID -ne 0 ];then
 echo "root?"
 exit
fi

dir_a=/usr/local
dir_b=/opt/data
app_a=mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz
app_b=mysql-5.7.34-linux-glibc2.12-x86_64

id mysql  &>/dev/null
if [ $? -ne 0 ];then
 useradd -r -M -s /sbin/nologin mysql
 fi


yum -y install ncurses-compat-libs ncurses-devel openssl-devel openssl cmake mariadb-devel 


if [ ! -d $dir_a/$app_b ];then
 tar xf bag/$app_a -C $dir_a
fi

if [ ! -d $dir_a/mysql ];then
 ln -sv $dir_a/$app_b  $dir_a/mysql
fi
chown -R mysql:mysql $dir_a/mysql*

echo "export PATH=$dir_a/mysql/bin:$PATH" > /etc/profile.d/mysql.sh

source /etc/profile.d/mysql.sh

if [ ! -d /$dir_b ];then
 mkdir -p /$dir_b 
 chown -R mysql.mysql /$dir_b
fi


content=$(ls $dir_b | wc -l)
if [ $content -eq 0  ];then
 mysqld --initialize-insecure --user mysql --datadir $dir_b
fi

cat > /etc/my.cnf < /usr/lib/systemd/system/mysqld.service <

部署php

 https://www.php.net/distributions/php-8.0.10.tar.xz

解压

[root@server2 ~]# tar -xf  php-8.0.10.tar.gz  -C /usr/local/

安装依赖包

[root@server2 ~]# wget http://mirrors.aliyun.com/repo/epel-7.repo
[root@server1 ~]# yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel  pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel  php-mysqlnd  libsqlite3x-devel libzip-devel
[root@server2 ~]# yum -y install http://mirror.centos.org/centos/8-stream/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm

编译安装

[root@server2 ~]# cd /usr/local/php-8.0.10/
[root@server2 php-8.0.10]# ./configure --prefix=/usr/local/php8  --with-config-file-path=/etc --enable-fpm --disable-debug --disable-rpath --enable-shared --enable-soap --with-openssl --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --enable-exif  --enable-ftp --enable-gd --with-jpeg --with-zlib-dir --with-freetype --with-gettext --enable-mbstring --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-readline --enable-shmop --enable-simplexml --enable-sockets --with-zip --enable-mysqlnd-compression-support --with-pear --enable-pcntl --enable-posix
......
......
......
config.status: creating ext/phar/phar.phar.1
config.status: creating main/php_config.h
config.status: executing default commands

+--------------------------------------------------------------------+
| License:   |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE. By continuing this installation  |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.|
+--------------------------------------------------------------------+

Thank you for using PHP.


[root@server2 php-8.0.10]# make
.......
.......
.......
invertedregexiterator.inc
pharcommand.inc
phar.inc

Build complete.
Don't forget to run 'make test'.

[root@server2 php-8.0.10]# make install
......
......
/root/php-8.0.10/build/shtool install -c ext/phar/phar.phar /usr/local/php8/bin/phar.phar
ln -s -f phar.phar /usr/local/php8/bin/phar
Installing PDO headers:    /usr/local/php8/include/php/ext/pdo/

配置php-fpm

[root@server2 php-8.0.10]# cp /etc/php.ini /opt/
[root@server2 php-8.0.10]# cp php.ini-production /etc/php.ini 
cp: overwrite '/etc/php.ini'? y
[root@server2 php-8.0.10]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@server2 php-8.0.10]# chmod +x /etc/init.d/php-fpm
[root@server2 php-8.0.10]# cd  ..
[root@server2 local]# cd  php8/
[root@server2 php8]# cd  etc/
[root@server2 etc]# cp php-fpm.conf.default php-fpm.conf
[root@server2 etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
[root@server2 etc]# cd  php-fpm.d
[root@server2 php-fpm.d]# ls
www.conf  www.conf.default

配置环境变量

[root@server2 ~]#  echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php.sh
[root@server2 ~]# cat /etc/profile.d/php.sh
export PATH=/usr/local/php8/bin:$PATH
[root@server2 ~]# source /etc/profile.d/php.sh
[root@server2 ~]# which php
/usr/local/php8/bin/php

编写service文件

[root@server2 ~]# cat /usr/lib/systemd/system/php-fpm.service 
[Unit]
Description=php-fpm server daemon
After=network.target 

[Service]
Type=forking

ExecStart=/etc/init.d/php-fpm start
ExecStop=/etc/init.d/php-fpm stop
ExecReload=/bin/kill -HUP $MAINPID

[Install]
[root@server2 ]# systemctl  daemon-reload

启动php

[root@server2 ~]# systemctl start php-fpm
[root@server2 ~]# ss -antl
State    Recv-Q   Send-QLocal Address:PortPeer Address:Port   
LISTEN   0 128127.0.0.1:9000     0.0.0.0:*      
LISTEN   0 128  0.0.0.0:800.0.0.0:*      
LISTEN   0 128  0.0.0.0:220.0.0.0:*      
LISTEN   0 80  *:3306    *:*      
LISTEN   0 128     [::]:22   [::]:*  

在nginx.conf里配置虚拟主机

[root@server2 ~]# cd  /usr/local/nginx/html/
[root@server2 html]# ls
50x.html  index.html
[root@server2 html]# vim index.php
[root@server2 html]# cat index.php 

[root@server2 conf]# pwd
/usr/local/nginx/conf
[root@server2 conf]# vim  nginx.conf
........
http {
    includemime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile on;

......
 location / {
     root   html;
     index  index.php index.html index.htm;
 }
.....



 location ~ .php$ {
     root    html;
     fastcgi_pass   127.0.0.1:9000;
     fastcgi_index  index.php;
     fastcgi_param  script_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
 }
[root@server2 conf]# nginx -s reload

访问



node3部署httpd
[root@node3 ~]# yum -y install httpd

启动

[root@node3 ~]# systemctl start httpd
[root@node3 ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN     0      128     *:22    *:*    
LISTEN     0      100    127.0.0.1:25    *:*    
LISTEN     0      128    :::80   :::*    
LISTEN     0      128    :::22   :::*    
LISTEN     0      100::1:25   :::*   

访问



实现分离部署

在server1上的nginx.conf上配置

[root@server1 ~]# cat /usr/local/nginx/conf/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    includemime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #    '$status $body_bytes_sent "$http_referer" '
    #    '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream cm {  #静态资源地址
 server 192.168.244.142;
    }
    
    upstream nm {  #动态资源地址
 server 192.168.244.133;
    }


    server {
 listen80;
 server_name  localhost;

 #charset koi8-r;

 #access_log  logs/host.access.log  main;

 location / {
     proxy_pass http://cm;     #指向静态
 }
 
 #error_page  404/404.html;

 # redirect server error pages to the static page /50x.html
 #
 error_page   500 502 503 504  /50x.html;
 location = /50x.html {
     root   html;
 }

 # proxy the PHP scripts to Apache listening on 127.0.0.1:80
 #
 location ~ .php$ {  #指向动态
     proxy_pass   http://nm;
 }

[root@server1 ~]# nginx -s reload

访问 192.168.244.131



在访问 192.168.244.131/index.php



到此这篇关于nginx实现动静分离的方法示例的文章就介绍到这了,更多相关nginx 动静分离内容请搜索考高分网以前的文章或继续浏览下面的相关文章希望大家以后多多支持考高分网!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5698143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存