最近几天一直在研究nginx+tomcat集群的搭建,作为一名年轻程序猿,必不可少的走了不少弯路,所以写下这篇文章,希望对和我一样刚刚踏上程序猿之路的小白有所帮助,如果有大触愿意伸出猿手指点一二,那就太感谢不过了,废话不多说,上正文
工具:centOS7 NGINX tomcat8 jdk1.8
NGINX 安装准备
1.下载centOS虚拟机镜像,这里用到的是CentOS-7-x86_64-Minimal-1708.iso系统
2.安装centOS虚拟机之后,先修改网卡配置文件,注意centOS7网卡配置文件不再是eth0,1,2,而是ens33文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33
将该文件中最后一行的ONBOOT=no修改为为ONBOOT=yes,执行 service network restart将网络重启
执行yum -y install vim进行测试,如果下载成功则表示网络已连接
(vim 文本编辑器,后面需要使用,可以选择性下载,如果不下载只需将后面的命令中的vim修改为vi即可)
安装NGINX:
战前准备:
NGINX安装需要本地已经安装以下支持
gcc g++、pcre库,zlib、及openssl
由于centos7自带后三种,所以这里我们只需要安装gcc 即可
1:安装make
yum -y install gcc automake autoconf libtool make
2:安装gcc
yum -y install gcc gcc-c++
安装实战:
前面的准备工作我们已经做完了,下面直接上干货
cd /usr/local/src/
wget http://nginx.org/download/ngnix-1.12.0.tar.gz
tar -zvxf ngnix-1.12.0.tar.gz
cd nginx-1.12.0
./configure
make && make install
这里使用的是默认安装,考虑到很多和我一样白的不能在白的小白,有时候指定文件路径会把兴趣打消掉,学习嘛,循序渐进就好,所以现在用无脑的方式,等大家熟练了再往深处研究
如果上面的命令没有报错的话,那么恭喜你,nginx已经成功安装到你的虚拟机上了,现在我们启动它,执行 /usr/local/nginx/sbin/nginx
此时nginx启动完毕
由于虚拟机的端口并未开放,以此时无法用宿主机访问虚拟机IP
那么怎么查看nginx是否启动呢?有两种方法查看nginx是否成功启动
1.命令查看url页面代码
curl http://localhost
curl命令:将后面的url的访问页面中的代码返回
由于nginx的默认端口是80,所以我们用http://locahost即可获得nginx的欢迎页代码
看到那个硕大的Welcome to nginx没有!!,恭喜你,现在nginx已经牢牢的安装在你的虚拟机里了!
2.修改centos7防火墙设置,将80端口开放出来
考虑到一会还要搭建nginx+tomcat集群,如果每次都要用命令去访问,真的累眼睛
所以这里在介绍一种centos7开放端口的方法
如果大家上网查询开放段口的方法,大家会发现很多都是要你修改iptables文件,但是等你一个字母一个字母把cd /etc/sysconfig/路径敲完,按下回车就会发现,WTF???,说好的iptables文件呢???
所以为了避免大家来来回回的找浪费大家的时间,这里我就直接把我来来回回找完的结果告诉大家
首先centos7中并没有iptables-services,所以要开放端口需要先下载iptables-services,在下载之前需要关闭防火墙
systemctl stop firewalld
yum -y install iptables-services
systemctl start iptables
systemctl enable iptables
这个时候再进入/etc/sysconfig/文件夹,你会发现iptables文件已经像你女朋友一样在等你了(希望大家都有)
此时我们需要做的就是好好照顾自己的女朋友
vim iptables
打开这个文件
在-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 下面(或者上面)填写一条新的端口,最好是挨着22不要在最下面,因为之前查资料时有人说在最下面可能出问题
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT编辑完毕之后按下ESC 然后输入:wq 按下回车即可保存,此时要开放的端口号已经放进iptables文件中
systemctl restart iptables
重启之后意味着80端口已经开放出来了,我们要做的就是查询虚拟机的IP,然后用宿主机去访问它
ip addr 查询ip命令
ens33下面的inet 就是虚拟机的IP,用宿主机浏览器直接访问,可以看到你的nginx首页,也就证明你的第一个nginx已经搭建完毕啦
nginx+tomcat8 负载均衡集群
工具:已经搭建好的nginx、tomcat8.5.tar.gz、jdk1.8.tar.gz
战前准备:
在opt文件夹下新建tools文件夹
cd /opt/tools
mkdir tools
由于jdk不支持wget下载,所以此时我们需要xftp工具,将下载好的jdk.tar.gz及tomcat8.5.tar.gz上传的我们的centos中,用我们上文查到的ip以及安装centos系统时的root账号即可连接,如果xftp工具连接出现问题(连接失败),可以换用xshell工具,
一样的填写虚拟机IP、用户名、密码即可连接
如果连接则操作台应如上图,此时按下ctrl+alt+F,即可打开文件上传工具,
将左侧已经下载好的jdk1.8及tomcat8.5的包放进/opt/tools文件夹下
此时我们回到虚拟机界面(其实用xshell也可以继续搭建),ll查看tools文件夹,就能发现刚才上传的包
安装实战:
安装JDK:
tar -zvxf jdk-8u161-linux=x64.tar.gz
mv jdk1.8.0_161 jdk
此时我们需要配置JAVA环境,
vim /etc/profile 在该文件最后填写以下代码
编写完成后esc + :wq保存退出
source /etc/profile
java -version查询,如果出现下面就证明jdk安装完毕
tar -zvxf apache-tomcat-8.5.28.tar.gz
mv apche-tomcat-8.5.28/ tomcat1
tar -zvxf apache-tomcat-8.5.28.tar.gz
mv apche-tomcat-8.5.28/ tomcat2
在搭建nginx集群时我们需要修改个地方
1.修改两个tomcat的server.xml信息用以区别这是两个不同tomcat
2.修改nginx配置文件nginx.conf,将请求转发到某个tomcat上
修改tomcat配置文件:
tomcat1:
tomcat2:
另外,为了更只直观的区别两只cat,我们将两个tomcat/webapps/ROOT/index.jsp删除
rm -rf /opt/tools/tomcat1/webapps/ROOT/index.jsp
rm -rf /opt/tools/tomcat2/webapps/ROOT/index.jsp
在分别重建一个新的index.jsp
cd /opt/tools/tomcat1/webapps/ROOT/
vim index.jsp
在打开的jsp文件中分别键入以下代码
按esc 输入 :wq保存退出
此时两只cat的区别已经修改完毕我们分别进入两个tomcat/bin文件夹执行
./startup.sh
即可启动这两只修改完的cat
修改nginx配置文件
执行vim /usr/local/nginx/conf/nginx.conf
在上图中1位置添加upstream 代码,即服务器集群,test.com是集群的名称,server:集群的服务器列表,最终我们访问的请求对装发给列表中的服务器,weight:服务器权重,后面的数值越大,则被分配到的几率越大
将上图中2位置location中的代码删除,添加图中 的代码,需注意的是proxy_pass后面的http://test.com必须和1框中的服务器集群名称相同
确认修改完毕之后,按下ESC 输入:wq保存退出
重启nginx
/usr/nginx/sbin/nginx -s reload
用宿主机上的浏览器直接访问虚拟机ip
刷新几次,你会发现tomcat2的页面要多于tomcat1,这就是nginx.conf文件中配置的tomcat2 weight=2结果
至此,nginx+tomcat负载均衡集群已经搭建完毕,以上是我最近自己查了各位大神的文章慢慢总结的,以下是原文网址
http://blog.youkuaiyun.com/iamzhangyouzhi/article/details/41978537
由于本人第一次写这种文章,如果有不对的地方希望大家尽量指出,以免误导各位其他人,还有就是感谢大神们写的文章,让其他人学习的路上避免了许许多多的弯路,祝大家新年快乐,一生平安