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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 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
目录
打赏
0
0
0
0
69
分享
相关文章
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
136 3
Nginx伪流媒体服务器搭建详细说明以及案例
Nginx伪流媒体服务器搭建步骤如下:1. 安装Nginx,根据系统选择命令;2. 编辑配置文件(/etc/nginx/nginx.conf),添加mp4相关设置;3. 创建视频目录/usr/share/nginx/html/videos并上传视频;4. 重启Nginx应用更改;5. 通过浏览器访问视频,如http://your_server_ip/videos/example.mp4。注意启用mp4模块,确保视频格式支持伪流媒体播放。
当你的nginx服务器和php服务器不在一起的时候,这个nginx 的root目录问题
两个服务器的网站代码目录需要对齐,docker容器里面也是一样
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
370 9
使用Nginx搭建流媒体服务器
本文介绍了流媒体服务器的特性及各种流媒体传输协议的适用场景,并详细阐述了使用 nginx-http-flv-module 扩展Nginx作为流媒体服务器的详细步骤,并提供了在VLC,flv.js,hls.js下的流媒体拉流播放示例。
509 2
Nginx服务器的反向代理proxy_pass配置方法讲解
 Nginx服务器的反向代理proxy_pass配置方法讲解 这篇文章主要介绍了Nginx服务器的反向代理proxy_pass配置方法讲解,包括经常被提到的url的/问题的相关说明,需要的朋友可以参考下 就普...
5256 0
nginx服务器的反向代理proxy_pass配置方法
nginx服务器的反向代理proxy_pass配置方法
400 0
【转】Nginx服务器的反向代理proxy_pass配置方法讲解
【转】Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的,如: location ~ /* { proxy_pass http://127.
1305 0
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
320 7
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等