栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

nginx实现动态分离

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nginx实现动态分离

nginx实现动态分离 三台主机环境说明:

centos8

主机名IP地址部署功能
root@LB192.168.143.103nginx 调度器
root@RS1192.168.143.104lnmp web1
root@RS2192.168.143.105httpd web2
LB与RS1主机做nginx编译安装
#关闭防火墙、selinux
systemctl disable --now firewalld
sed -ri 's/^(SELINUX=).*/1disabled/g' /etc/selinux/config

reboot
//创建系统用户nginx
[root@LB ~]# useradd -r -M -s /sbin/nologin nginx

//安装依赖环境
[root@LB ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
安装过程略....
[root@LB ~]# yum -y groups mark install 'Development Tools'
//创建日志存放目录
[root@LB ~]# mkdir -p /var/log/nginx
[root@LB ~]# chown -R nginx.nginx /var/log/nginx

//下载nginx
[root@LB ~]# cd /usr/src/
[root@LB src]# wget http://nginx.org/download/nginx-1.20.1.tar.gz
//编译安装
[root@LB src]# ls
debug  kernels  nginx-1.12.1.tar.gz
[root@LB src]# tar xf nginx-1.12.1.tar.gz
[root@LB src]# cd nginx-1.12.1
[root@LB nginx-1.12.1]# ./configure 
--prefix=/usr/local/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=/var/log/nginx/access.log 
--error-log-path=/var/log/nginx/error.log

[root@LB nginx-1.12.1]# make -j $(grep 'processor' /proc/cpuinfo | wc -l) && make install
安装过程略....
[root@LB ~]# cat > /usr/lib/systemd/system/nginx.service < /etc/profile.d/nginx.sh
[root@LB ~]# source /etc/profile.d/nginx.sh

RS1二进制安装mysql
#安装依赖包(cmake:编译自动配置工具)
[root@RS1 ~]# dnf -y install ncurses-devel openssl-devel openssl cmake mariadb-devel
#创建用户
[root@RS1 ~]# useradd -r -M -s /sbin/nologin mysql
#下载mysql5.7.31包
[root@RS1 ~]# wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
#解压放到/usr/local下
#改名字方便操作
[root@RS1~]# cd /usr/local
[root@RS1 ~]# mv mysql5.7.31 mysql
#改属主
[root@RS1 ~]# chown -R mysql.mysql mysql/
#环境变量
[root@RS1 ~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
[root@RS1 ~]# source /etc/profile.d/mysql.sh
#头文件映射
l[root@RS1 ~]# ln -s /usr/local/mysql/include /usr/include/mysql
#帮助文档
[root@RS1 ~]# vim /etc/man_db.conf
 23 MANDATORY_MANPATH                       /usr/local/apache/man
 24 MANDATORY_MANPATH                       /usr/local/mysql/man
#创建数据目录
[root@RS1 ~]# mkdir /opt/data
[root@RS1 ~]# chown -R mysql.mysql /opt/data
#初始化
[root@RS1 ~]# mysqld --initialize --user=mysql --datadir=/opt/data 
#编写配置文件
[root@RS1 ~]# cat >/etc/my.cnf < /usr/lib/systemd/system/mysqld.service < set password=password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> quit
Bye

RS1编译安装php
//安装依赖包
[root@RS1 ~]# dnf -y install epel-release
[root@RS1 ~]# dnf -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 libzip-devel libsqlite3x libsqlite3x-devel oniguruma   libzip-devel    https://repo.almalinux.org/almalinux/8/PowerTools/x86_64/os/Packages/oniguruma-devel-6.8.2-2.el8.x86_64.rpm
//编译安装php
[root@RS1 ~]# cd /usr/src/
[root@RS1 src~]# wget https://www.php.net/distributions/php-8.0.12.tar.xz
[root@RS1 src]# ls
debug  kernels  nginx-1.20.1  php-8.0.12.tar.xz
[root@RS1 src]# tar xf php-8.0.12.tar.xz 
[root@RS1 src]# cd php-8.0.12/
 [root@RS1 src]# ./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

[root@RS1 php-8.0.12]# make -j $(cat /proc/cpuinfo |grep processor|wc -l)
[root@RS1 php-8.0.12]# make install
//配置环境变量
[root@RS1 php-8.0.12]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php8.sh
[root@RS1 php-8.0.12]# source /etc/profile.d/php8.sh 
[root@RS1 php-8.0.12]# which php
/usr/local/php8/bin/php
[root@RS1 php-8.0.12]# php -v
PHP 8.0.12 (cli) (built: Oct 26 2021 03:16:49) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
//配置php-fpm
[root@RS1 php-8.0.12]# cp php.ini-production /etc/php.ini
cp:是否覆盖'/etc/php.ini'? yes
[root@RS1 php-8.0.12]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@RS1 php-8.0.12]# chmod +x /etc/rc.d/init.d/php-fpm
[root@RS1 php-8.0.12]# cd
[root@RS1 ~]# cp /usr/local/php8/etc/php-fpm.conf.default /usr/local/php8/etc/php-fpm.conf
[root@RS1 ~]# cp /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf
[root@RS1 ~]# service php-fpm start
Starting php-fpm  done
[root@RS1 ~]#  ss -antl |grep 9000
LISTEN 0      128        127.0.0.1:9000      0.0.0.0:* 
//设置开机自启
[root@RS1 ~]# cat /usr/lib/systemd/system/php-fpm.service
[Unit]
Description=php-fpm server daemon
After=network.target php-keygen.target
[Service]
Type=forking
ExecStart=/etc/init.d/php-fpm  start
ExecStop=/etc/init.d/php-fpm  stop
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
[root@RS1 ~]# service php-fpm stop
Gracefully shutting down php-fpm . done
[root@RS1 ~]# systemctl daemon-reload
[root@RS1 ~]# systemctl enable --now php-fpm.service
Synchronizing state of php-fpm.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable php-fpm
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
#创建php测试页面
[root@RS1 ~]# vim /usr/local/nginx/html/index.php


#修改nginx主配置文件
[root@RS1 ~]#  vim /usr/local/nginx/conf/nginx.conf
...
        location / {
            root   html;
            index index.html index.htm;	//在index后面添加index.php此步不用做,因为要达到ip加index.php的访问
        }
...
#取消注释
        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;
        }
...
fastcgi_param  script_FILENAME  /scripts$fastcgi_script_name;  //此行需要修改fastcgi_param  script_FILENAME  $document_root$fas    tcgi_script_name;
...

#重启nginx
[root@RS1 ~]#  nginx -s stop
[root@RS1 ~]#  nginx


RS2主机安装httpd
#关闭防火墙、selinux
systemctl disable --now firewalld
sed -ri 's/^(SELINUX=).*/1disabled/g' /etc/selinux/config

reboot
[root@RS2 ~]# yum install -y httpd
[root@RS2 ~]# systemctl enable --now httpd
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
LB主机配置效果反向代理
[root@LB ~]# cd /usr/local/nginx/conf/
[root@LB conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[root@LB conf]# cp nginx.conf{,-10.29}
[root@LB conf]# ls
fastcgi.conf            mime.types          scgi_params.default
fastcgi.conf.default    mime.types.default  uwsgi_params
fastcgi_params          nginx.conf          uwsgi_params.default
fastcgi_params.default  nginx.conf-10.29    win-utf
koi-utf                 nginx.conf.default
koi-win                 scgi_params
[root@LB conf]# vim nginx.conf
...
	upstream webservers {
        server 192.168.143.104;  //server前面添加此四行
        server 192.168.143.105;
}
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://webservers; //修改此行
        }
...
[root@LB conf]# nginx -s reload

LB主机配置效果动态分离
[root@LB conf]# vim nginx.conf
...
#静态资源
    upstream static {
        server 192.168.143.105; //修改此行
}

        location / {
            proxy_pass http://static; //修改此行
        }

#动态资源
    upstream dynamic {
        server 192.168.143.104; //添加修改此行
}

        location ~ .php$ {
            proxy_pass   http://dynamic; //取消注释修改此行
        }
[root@LB ~]# nginx -s reload
...


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395960.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号