构建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,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
前端开发 应用服务中间件 nginx
[译] 面向 React 和 Nginx 的 Docker 多阶段构建
[译] 面向 React 和 Nginx 的 Docker 多阶段构建
[译] 面向 React 和 Nginx 的 Docker 多阶段构建
|
8天前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
11天前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
25 3
|
18天前
|
负载均衡 应用服务中间件 Apache
Nginx与Apache的终极对决:揭秘Web服务器界的“速度与激情”!你不可不知的性能霸主如何颠覆传统,震撼互联网的根基!
【8月更文挑战第13天】互联网技术发展中,Web服务器至关重要,Nginx与Apache是最广泛使用的两种。Apache历史悠久,但Nginx以轻量级和高性能脱颖而出。Nginx采用事件驱动架构,高效处理大量并发连接,而Apache使用进程驱动,高并发下资源消耗大。以餐厅为例,Nginx像大堂经理同时处理多个顾客需求,远比Apache为每位顾客分配服务员更高效。性能测试显示Nginx处理能力远超Apache。此外,Nginx配置简洁灵活,尤其在负载均衡方面表现突出。尽管Apache适合动态内容处理,但在快速变化的互联网环境中,Nginx因其独特优势成为许多开发者和企业的首选。
40 7
|
19天前
|
应用服务中间件 网络安全 nginx
运维专题.Docker+Nginx服务器的SSL证书安装
运维专题.Docker+Nginx服务器的SSL证书安装
31 3
|
8天前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
|
12天前
|
存储 负载均衡 应用服务中间件
FastDFS+Nginx:轻松搭建本地文件服务器
【8月更文挑战第19天】在现今互联网快速发展的时代,文件服务器作为支撑各种在线服务的重要基础设施,其稳定性和性能显得尤为关键。FastDFS作为一款开源的轻量级分布式文件系统,凭借其高效的文件管理功能,特别适合用于构建相册网站、视频网站等以文件为载体的在线服务。本文将详细介绍如何利用FastDFS和Nginx快速搭建一个本地文件服务器,为您的工作和学习提供技术支持。
44 0
|
16天前
|
关系型数据库 Linux 应用服务中间件
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
12 0
|
16天前
|
存储 Ubuntu 应用服务中间件
如何在虚拟专用服务器上配置 Nginx Web 服务器
如何在虚拟专用服务器上配置 Nginx Web 服务器
13 0
|
24天前
|
缓存 算法 应用服务中间件
nginx搭建https服务器
nginx搭建https服务器
下一篇
云函数