nginx反向代理--负载均衡--nginx-php-mysql-nfs

环境

主机名 角色 外网IP 内网IP 安装服务
db03 代理 10.0.0.53 172.16.1.53 nginx
db04 代理 10.0.0.54 172.16.1.54 nginx
lb01 负载均衡 10.0.0.51 172.16.1.51 nginx
web01 服务器 10.0.0.7 172.16.1.7 nginx php nfs-utils
web02 服务器 10.0.0.8 172.16.1.8 nginx php nfs-utils
nfs 共享存储 10.0.0.31 172.16.1.31 nfs-utils
db01 数据库 10.0.0.51 172.16.1.51 mariadb-server

安装相关服务

1.将做好的rpm包使用rz命令上传
tar xf nginx_php.tar.gz &&cd nginx_php

2.
代理机 负载均衡机 安装nginx
[root@db03 ~]# yum -y localinstall nginx
[root@db04 ~]# yum -y localinstall nginx
[root@lb01 ~]# yum -y localinstall nginx

服务器安装nginx php nfs-utils
[root@web01 ~]# yum remove -y php-mysql-5.4 php php-fpm php-common && cd /nginx_php \
yum localinstall -y *.rpm
[root@web01 ~]# yum install -y nfs-utils
[root@web02 ~]# yum remove -y php-mysql-5.4 php php-fpm php-common && cd /nginx_php \
yum localinstall -y *.rpm
[root@web02 ~]# yum install -y nfs-utils

共享存储机安装nfs
[root@nfs ~]# yum install -y nfs

数据库机安装mariadb
[root@db01 ~]# yum install -y mariadb-server

3.启动并加入开机自启动
[root@db03 ~]# systemctl start nginx
[root@db04 ~]# systemctl start nginx
[root@lb01 ~]# systemctl start nginx
[root@web01 ~]# systemctl start nginx php-fpm nfs
[root@web02 ~]# systemctl start nginx php-fpm nfs
[root@nfs ~]# systemctl start nfs
[root@db01 ~]# systemctl start mariadb

[root@db03 ~]# systemctl enable nginx
[root@db04 ~]# systemctl enable nginx
[root@lb01 ~]# systemctl enable nginx
[root@web01 ~]# systemctl enable nginx php nfs
[root@web02 ~]# systemctl enable nginx php nfs
[root@nfs ~]# systemctl enable nfs
[root@db01 ~]# systemctl enable mariadb

4.创建www用户
[root@web01 ~]# groupadd www -g 666
[root@web01 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

[root@web02 ~]# groupadd www -g 666
[root@web02 ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

[root@nfs ~]# groupadd www -g 666
[root@nfs ~]# useradd www -u 666 -g 666 -s /sbin/nologin -M

5.web01 web02修改nginx和PHP的用户
sed -i '/^user/c user www;' /etc/nginx/nginx.conf
sed -i '/^user/c user = www' /etc/php-fpm.d/www.conf 
sed -i '/^group/c group = www' /etc/php-fpm.d/www.conf

部署nginx反向代理

代理机db03 db04 执行以下操作
1.手写server语句
vim /etc/nginx/conf.d/wp.conf
server {
	listen 80;
	server_name cs.wp.com;

    location / {
        proxy_pass http://10.0.0.54:80;    
        include proxy_params;
    }
}

2.写入include文件
vim /etc/nginx/proxy_params
# 客户端的请求头部信息,带着域名来找我,我也带着域名去找下一级(代理机或者代理服务器)
proxy_set_header Host $host;
# 显示客户端的真实ip(和代理的所有IP)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	
#nginx代理与后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 60s;
#nginx代理等待后端服务器的响应时间
proxy_read_timeout 60s;
	#后端服务器数据回传给nginx代理超时时间
proxy_send_timeout 60s;
	
#nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端
proxy_buffering on;
#设置nginx代理保存用户头信息的缓冲区大小
proxy_buffer_size 4k|8k;
#proxy_buffers 缓冲区
proxy_buffers 8 4k|8k;
#使用http 1.1协议版本
proxy_http_version 1.1;

#错误页面重定向
proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;

3.重载nginx配置文件
nginx -sreload

部署负载均衡

负载均衡机lb01 执行以下操作
1.手写server语句
vim /etc/nginx/conf.d/wp.conf
upstream backend {
    server 10.0.0.7;
    server 10.0.0.8;
}
server {
	listen 80;
	server_name cs.wp.com;

    location / {
        proxy_pass http://backend;    
        include proxy_params;
    }
}

2.写入include文件
vim /etc/nginx/proxy_params
# 客户端的请求头部信息,带着域名来找我,我也带着域名去找下一级(代理机或者代理服务器)
proxy_set_header Host $host;
# 显示客户端的真实ip(和代理的所有IP)
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	
#nginx代理与后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 60s;
#nginx代理等待后端服务器的响应时间
proxy_read_timeout 60s;
	#后端服务器数据回传给nginx代理超时时间
proxy_send_timeout 60s;
	
#nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端
proxy_buffering on;
#设置nginx代理保存用户头信息的缓冲区大小
proxy_buffer_size 4k|8k;
#proxy_buffers 缓冲区
proxy_buffers 8 4k|8k;
#使用http 1.1协议版本
proxy_http_version 1.1;

#错误页面重定向
proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;

3.重载nginx配置文件
nginx -sreload

服务器安装wordpress 服务

服务器web01 web02执行以下操作
1.手写server语句
vim /etc/nginx/conf.d/wp.conf
server {
	listen 80;
	server_name cs.wp.com;
	root /code/wordpress;
	index info.php index.php;
 
	location ~ \.php$ {
		fastcgi_pass   127.0.0.1:9000;
		fastcgi_index  index.php;
		fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
		include fastcgi_params;
		}
}

2.重载nginx服务
nginx -sreload

3.下载安装包
mkdir /code -p && cd /code && \
wget http://test.driverzeng.com/Nginx_Code/wordpress-5.0.3-zh_CN.tar.gz

 zh: mkdir /code -p && cd /code && \
wget http://test.driverzeng.com/Nginx_Code/WeCenter_3-2-1.zip

4.安装服务
tar xf wordpress-5.0.3-zh_CN.tar.gz && rm -rf wordpress-5.0.3-zh_CN.tar.gz

zh: unzip WeCenter_3-2-1.zip && rm -rf WeCenter_3-2-1.zip __MACOSX/
5.授权
chown -R www.www /code

部署nfs服务端和客户端

# 1.编辑nfs配置文件
[root@nfs ~]# vim /etc/exports
/wp_data 172.16.1.0/24(sync,rw,all_squash,anonuid=666,anongid=666)
/zh_data 172.16.1.0/24(sync,rw,all_squash,anonuid=666,anongid=666)
# 2.创建共享目录
[root@nfs ~]# mkdir /wp_data /zh_data
# 3.授权
[root@nfs ~]# chown -R www.www /wp_data/ /zh_data/
# 4.启动服务,并加入开机自启
[root@nfs ~]# systemctl start nfs-server
[root@nfs ~]# systemctl enable nfs-server

# 5.没有上传过图片,直接创建uploads目录,上传过图片,先把数据拷贝到nfs中
mkdir /code/wordpress/wp-content/uploads -p

[root@web01 ~]# scp -r /code/wordpress/wp-content/uploads/* root@172.16.1.31:/wp_data 

# 6.授权(选做)
[root@nfs ~]# chown -R www.www /wp_data/
# 7.挂载
[root@nfs ~]# systemctl restart nfs-server
[root@web01 ~]# mount -t nfs 172.16.1.31:/wp_data /code/wordpress/wp-content/uploads/
[root@web02 ~]# mount -t nfs 172.16.1.31:/wp_data /code/wordpress/wp-content/uploads/

部署数据库

1.给root一个密码
[root@db01 ~]# mysqladmin -uroot password '1'
2.连接数据库
[root@db01 ~]# mysql -uroot -p1
3.创建用户
MariaDB [(none)]> grant all on *.* to wp_user@'%' identified by '1';
MariaDB [(none)]> grant all on *.* to zh_user@'%' identified by '1';
4.创建数据库
MariaDB [(none)]> create database wp;
MariaDB [(none)]> create database zh;
5.重启数据库
systemctl restart mariadb

域名解析

10.0.0.53 cs.w.com

检查

1.检查服务和端口是否启动
ps -ef|egrep 'nginx|php-fpm|mariadb'
netstat -lntup | egrep '80|9000|3306' 
2.检查nfs
可以用个创建文件检验
3.检查nginx是否与PHP连接
vim /code/wordpress/info.php
<?php
	phpinfo();
?>
浏览器输入cs.wp.com/info.php
rm -rf /code/wordpress/info.php
4.检查nginx是否与数据库连接(使用变量调用数据库的信息)
#PHP所在的服务器
在/code/wordpress目录下创建mysqli.php文件,填入对应的数据库IP、用户名、密码
vim /code/wordpress/mysqli.php
<?php
    $servername = "localhost";
    $username = "wp_user";
    $password = "1";

    // 创建连接
    $conn = mysqli_connect($servername, $username, $password);

    // 检测连接
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    echo "小哥哥,php可以连接MySQL...";
?>

<img style='width:100%;height:100%;' src=https://blog.driverzeng.com/zenglaoshi/php_mysql.png>

#
浏览器访问	www.wp.com/mysql.php

#为了数据库的安全
rm -rf /code/wordpress/mysqli.php

5.或者在别的主机上登录数据库
yum install -y mariadb-server
mysql -uwp_user -p'1' -h root@10.0.0.51
posted @ 2020-05-26 07:02  看萝卜在飘  阅读(283)  评论(0编辑  收藏  举报