构建Nginx服务器之三 反向代理Discuz论坛

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:

实验目的:

利用nginx均衡两台lampDiscuz,其中任意一台lampweb 宕机,不影响discuz的使用!

实验拓扑:

wKiom1VUyNaBLqTrAAHyxh4k4E4458.jpg

实验环境:

服务器                           主机名                 IP地址

Nginx服务器                      nginx                  192.168.1.2

Discuz论坛(mysql)              master                 192.168.1.3

Discuz论坛(mysql)              slave                  192.168.1.4

Mysql主从授权账户为”tongbu”  密码为”123456”

所有的服务器均是Centos 6.5 x86_x64

实验步骤:

一、安装Nginx服务器

1、安装环境依赖包

1
[root@nginx ~] # yum -y install pcre pcre-devel gcc openssl-devel

2、下载Nginx并安装

1
2
3
4
5
6
7
8
9
10
11
[root@nginx ~] # wget http://nginx.org/download/nginx-1.6.3.tar.gz
[root@nginx ~] # tar -zxf nginx-1.6.3.tar.gz
[root@nginx ~] # cd nginx-1.6.3
[root@nginx nginx-1.6.3] # ./configure--prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
[root@nginx ~] #make && make  install
[root@nginx nginx-1.6.3] #/usr/local/nginx/sbin/nginx   ##启动Nginx
[root@nginx nginx-1.6.3] # ps -ef | grepnginx
root     4432     1  0 22:12 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody   4433  4432  0 22:12 ?        00:00:00 nginx: worker process     
root     4437  2037  0 22:12 pts /2     00:00:00  grep  nginx
[root@nginx nginx-1.6.3] #

wKioL1VUxaXwsw4fAAIPe-Hz3kA260.jpg

Nginx安装成功!

 

二、在主机master上安装lamp环境!

执行脚本Auto_Install_Discuz_V2.sh,选择构建LAMP平台!脚本文件在附件当中,内容可参加<<Linux Shell实战之二一键安装Discuz_v2>>

1
2
3
4
5
6
7
[root@master ~] #./Auto_Install_Discuz_V2.sh
1) Yum  install  Environment    6) Integrate Php and Mysql
2) Install Apache             7) AutomaticInstall LAMP
3) Install Mysql              8) ConfigureDiscuz
4) Configure Mysql            9) Automatic InstallALL
5) Install Php                10) Exit
Please Enter Your choose: 7


wKiom1VUxC3izOhYAAGLjueMdXQ185.jpg

脚本中定义的数据库名、数据库用户名、数据库密码都为discuz

 

三、在主机slave安装lamp环境!

执行脚本Auto_Install_Discuz_V2.sh选择构建LAMP平台!


wKioL1VUxaji_G9oAAGQ08XQ2y4072.jpg

wKiom1VUxDKCKNg7AAWcVXyblFo518.jpg


四、做mysql主从!

master上:

默认bin-logserver-id已经开启无需设置!

进入mysql,新建操作主从的用户!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql>  grant  replication slave  on  *.*  to 'tongbu' @ '%'  identified  by  '123456' ;
Query OK, 0  rows  affected (0.00 sec)
  
mysql> flush  privileges ;
Query OK, 0  rows  affected (0.00 sec)
  
mysql> show master status;
+ ------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+ ------------------+----------+--------------+------------------+
| mysql-bin.000003 |      325 |              |                  |
+ ------------------+----------+--------------+------------------+
1 row  in  set  (0.00 sec)
  
mysql>

slave上:

/etc/my.cnf中的server-id改为然后重启musql

1
2
3
[root@slave ~] # pkill mysqld
[root@slave ~] #/usr/local/mysql/bin/mysqld_safe --user=mysql &
[root@slave ~] # /usr/local/mysql/bin/mysql

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
mysql> change master tomaster_host= '192.168.1.3' ,
    ->  master_user= 'tongbu' ,
    -> master_password= '123456' ,
    -> master_log_file= 'mysql-bin.000003' ,
    -> master_log_pos=325;
Query OK, 0  rows  affected (0.03 sec)
  
mysql> slave start;
Query OK, 0  rows  affected (0.00 sec)
  
mysql> show slave status \G;
*************************** 1. row***************************
                Slave_IO_State: Waiting formaster  to  send event
                   Master_Host: 192.168.1.3
                   Master_User: tongbu
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000003
          Read_Master_Log_Pos: 325
                Relay_Log_File:slave-relay-bin.000003
                 Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000003
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
               Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                    Last_Errno: 0
                    Last_Error:
                  Skip_Counter: 0
          Exec_Master_Log_Pos: 325
               Relay_Log_Space: 406
               Until_Condition: None
                Until_Log_File:
                 Until_Log_Pos: 0
           Master_SSL_Allowed:  No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
               Master_SSL_Cert:
            Master_SSL_Cipher:
                Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert:  No
                 Last_IO_Errno: 0
                 Last_IO_Error:
                Last_SQL_Errno: 0
                Last_SQL_Error:
1 row  in  set  (0.01 sec)
  
ERROR:
No  query specified
  
mysql>

测试主从:

master上创建一个数据库hislave上已同步,主从构建成功!

wKioL1VUxa2wb4CqAAFvQBDETnk685.jpg

wKioL1VUxa6SUkbNAAEOg67r1Uo220.jpg


五、在master上安装discuz论坛

直接利用脚本安装配置Discuz

脚本中的数据库名、用户名、密码均为”discuz”

wKiom1VUxDWhPu2eAAGK0XGij7o758.jpg

wKioL1VUxbGByQQbAANKVPG8L84577.jpg

开始安装discuz

master上授权(因为脚本中是只允许localhost)


1
2
mysql>  grant  all  on  *.*  to  discuz@ '%' identified  by  'discuz' ;
Query OK, 0  rows  affected (0.02 sec)

这里一定要注意,数据库服务器地址可以写为localhost,但是拷贝discuz论坛文件到mysql从服务器上web发布目录的时候,需要更改discuz配置文件中连接主mysql的IP地址,所以这里建议直接写主服务器的IP地址,这样discuz论坛文件复制到从服务器上的时候,无需更改discuz配置文件。

wKiom1VUxDvQUaXNAANe6TNj4rE769.jpg

wKioL1VUxcKTSjAJAAYYCxZcPkM767.jpg


六、在slave上建立discuz

master上的apache网站目录打包复制到slave的网络目录再解压(不打包容易出问题)

wKiom1VUxEvB-lNaAAVeXLkOofo798.jpg

slave上解压wKiom1VUxE3A0ND-AALkzGQAptM964.jpg

分别登录发贴!

wKioL1VUxcuwMxYvAANnrbyjpOo719.jpg

wKioL1VUxc_jrX43AAMt7I71Ueg752.jpg

登录master上查看


七、Nginx做负载均衡

1
[root@nginx ~] # vim/usr/local/nginx/conf/nginx.conf

http中添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
upstream discuz {
                 server 192.168.1.3:80 weight=1  max_fails=2 fail_timeout=30s;
                 server 192.168.1.4:80 weight=1  max_fails=2 fail_timeout=30s;
                         }
location / {
            root   html;
            index  index.html index.htm;
                 proxy_set_header Host $host;
                 proxy_set_header X-Real-IP  $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_pass http: //discuz ;
         }

wKiom1VUxFawCQHMAALYAZvD77Q367.jpg

1
2
3
4
5
6
7
8
9
10
11
[root@nginx ~] # /usr/local/nginx/sbin/nginx-t
nginx: the configuration  file /usr/local/nginx/conf/nginx .conf syntax is ok
nginx: configuration  file /usr/local/nginx/conf/nginx .conf  test  is successful
[root@nginx ~] #
[root@nginx ~] # /usr/local/nginx/sbin/nginx-s reload
[root@nginx ~] #
[root@nginx ~] # ps -ef | grep nginx
root     4351     1  0 20:57 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody  13696  4351  0 23:31 ?        00:00:00 nginx: worker process     
root    13698  1924  0 23:31 pts /0     00:00:00  grep  nginx
[root@nginx ~] #

访问nginx服务器测试!

wKiom1VUxFrSUZiZAAJZpAeWJp4249.jpg

停止master上的http

1
2
3
4
5
[root@master ~] #/usr/local/apache/bin/apachectl stop
[root@master ~] #
[root@master ~] # ps -ef | grep httpd
root    53460  1715  0 23:34 pts /0     00:00:00  grep  httpd
[root@master ~] #

master上的web已经无法访问!

wKioL1VUxdqzzDqAAAG_f7UTYVQ969.jpg

访问nginx可以继续发帖,此时已经指向slave

wKioL1VUxeGQ8nJLAALml20Qtc8750.jpg

至此,实验已经全部结束!至于说如果Nginx服务器挂了,Mysql主服务器挂了,如何保证论坛网站的高可用呢?会在后续博客继续写......



本文转自Jacken_yang 51CTO博客,原文链接:http://blog.51cto.com/linuxnote/1651439,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
监控 中间件 Java
后端技术:构建高效、稳定的服务器端应用
【10月更文挑战第5天】后端技术:构建高效、稳定的服务器端应用
147 0
|
22天前
|
缓存 负载均衡 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
通过使用Nginx的反向代理功能,可以有效地提高Web应用的性能、安全性和可扩展性。配置过程中需要注意不同场景下的具体需求,如负载均衡、SSL终止和缓存策略等。正确配置和优化Nginx反向代理可以显著提升系统的整体表现。
81 20
|
3月前
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
200 61
|
3月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
209 60
|
3月前
|
缓存 负载均衡 安全
Nginx的反向代理具体是如何实现的?
Nginx的反向代理具体是如何实现的?
|
2月前
|
缓存 Java 应用服务中间件
nginx的正向代理和反向代理以及tomcat
Nginx的正向代理和反向代理功能在不同的场景中具有重要作用,正向代理主要用于客户端访问控制和匿名浏览,而反向代理则用于负载均衡和高可用性服务。Tomcat作为Java Web应用服务器,与Nginx结合使用,可以显著提升Web应用的性能和稳定性。通过合理配置Nginx和Tomcat,可以构建高效、稳定和可扩展的Web服务架构。
171 11
|
2月前
|
存储 应用服务中间件 nginx
nginx反向代理bucket目录配置
该配置实现通过Nginx代理访问阿里云OSS存储桶中的图片资源。当用户访问代理域名下的图片URL(如 `http://代理域名/123.png`)时,Nginx会将请求转发到指定的OSS存储桶地址,并重写路径为 `/prod/files/2024/12/12/123.png`。
88 5
|
3月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
3月前
|
存储 负载均衡 中间件
Nginx反向代理配置详解,图文全面总结,建议收藏
Nginx 是大型架构必备中间件,也是大厂喜欢考察的内容,必知必会。本篇全面详解 Nginx 反向代理及配置,建议收藏。
Nginx反向代理配置详解,图文全面总结,建议收藏
|
2月前
|
存储 编解码 应用服务中间件
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
224 1