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

简介:

实验目的:

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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
12月前
|
缓存 负载均衡 JavaScript
Nginx:高性能Web服务器与反向代理利器
Nginx:高性能Web服务器与反向代理利器
500 110
|
12月前
|
缓存 负载均衡 前端开发
Nginx:高性能Web服务器的核心引擎
Nginx:高性能Web服务器的核心引擎
346 47
|
11月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
536 18
|
11月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
915 17
|
10月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
829 10
|
10月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
868 8
|
10月前
|
运维 安全 Ubuntu
阿里云渠道商:服务器操作系统怎么选?
阿里云提供丰富操作系统镜像,涵盖Windows与主流Linux发行版。选型需综合技术兼容性、运维成本、安全稳定等因素。推荐Alibaba Cloud Linux、Ubuntu等用于Web与容器场景,Windows Server支撑.NET应用。建议优先选用LTS版本并进行测试验证,通过标准化镜像管理提升部署效率与一致性。
|
10月前
|
存储 监控 安全
阿里云渠道商:云服务器价格有什么变动?
阿里云带宽与存储费用呈基础资源降价、增值服务差异化趋势。企业应结合业务特点,通过阶梯计价、智能分层、弹性带宽等策略优化成本,借助云监控与预算预警机制,实现高效、可控的云资源管理。
|
10月前
|
弹性计算 运维 安全
区别及选择指南:阿里云轻量应用服务器与ECS云服务器有什么区别?
阿里云轻量应用服务器适合个人开发者、学生搭建博客、测试环境,易用且性价比高;ECS功能更强大,适合企业级应用如大数据、高流量网站。根据需求选择:轻量入门首选,ECS专业之选。
656 2
|
10月前
|
弹性计算 ice
阿里云4核8G云服务器配置价格:热门ECS实例及CPU处理器型号说明
阿里云2025年4核8G服务器配置价格汇总,涵盖经济型e实例、计算型c9i等热门ECS实例,CPU含Intel Xeon及AMD EPYC系列,月费159元起,年付低至1578元,按小时计费0.45元起,实际购买享折扣优惠。
3748 1