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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

实验目的:

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

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
26天前
|
前端开发 应用服务中间件 nginx
使用Docker快速搭建Web服务器Nginx
本文指导如何使用Docker快速搭建Nginx服务器。首先,通过`docker pull`命令获取Nginx镜像,然后以容器形式运行Nginx并映射端口。通过挂载目录实现本地文件与容器共享,便于自定义网页。使用`docker ps`检查运行状态,访问IP:8088确认部署成功。最后,介绍了停止、删除Nginx容器的命令,强调Docker简化了服务器部署和管理。
39 0
|
1天前
|
缓存 负载均衡 安全
反向代理服务器如何提升信息安全
反向代理服务器如何提升信息安全
|
3天前
|
应用服务中间件 Linux 开发工具
如何在阿里云服务器快速搭建部署Nginx环境
以下是内容的摘要: 本文档主要介绍了在阿里云上购买和配置服务器的步骤,包括注册阿里云账号、实名认证、选择和购买云服务器、配置安全组、使用Xshell和Xftp进行远程连接和文件传输,以及安装和配置Nginx服务器的过程。在完成这些步骤后,你将能够在服务器上部署和运行自己的网站或应用。
|
8天前
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器上从零开始搭建nginx服务器
阿里云ECS服务器上从零开始搭建nginx服务器
|
1月前
|
弹性计算 算法 应用服务中间件
倚天使用|Nginx性能高27%,性价比1.5倍,基于阿里云倚天ECS的Web server实践
倚天710构建的ECS产品,基于云原生独立物理核、大cache,结合CIPU新架构,倚天ECS在Nginx场景下,具备强大的性能优势。相对典型x86,Http长连接场景性能收益27%,开启gzip压缩时性能收益达到74%。 同时阿里云G8y实例售价比G7实例低23%,是Web Server最佳选择。
|
2月前
|
网络协议 Unix 应用服务中间件
如何进行 Nginx HTTPS服务器搭建
【2月更文挑战第6天】
63 0
|
2月前
|
负载均衡 JavaScript 应用服务中间件
强大的WEB服务器-Nginx
强大的WEB服务器-Nginx
29 0
|
2月前
|
Kubernetes 应用服务中间件 nginx
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器
K8S Pod Sidecar 应用场景之一 - 加入 NGINX Sidecar 做反代和 web 服务器
|
2月前
|
应用服务中间件 nginx
将树莓派转身为强大的Web服务器:使用Nginx和cpolar实现远程访问
安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行。同时结合cpolar 内网穿透工具即可实现远程访问。
|
26天前
|
Ubuntu JavaScript 关系型数据库
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客
在阿里云Ubuntu 20.04服务器上部署Ghost博客的步骤包括创建新用户、安装Nginx、MySQL和Node.js 18.x。首先,通过`adduser`命令创建非root用户,然后安装Nginx和MySQL。接着,设置Node.js环境,下载Nodesource GPG密钥并安装Node.js 18.x。之后,使用`npm`安装Ghost-CLI,创建Ghost安装目录并进行安装。配置过程中需提供博客URL、数据库连接信息等。最后,测试访问前台首页和后台管理页面。确保DNS设置正确,并根据提示完成Ghost博客的配置。
在阿里云Ubuntu 20.04服务器中搭建一个 Ghost 博客