linux服务器部署tomcat和Nginx

  项目须要,申请了三台测试机器,好在测试机里面光秃秃的什么都没有,我就能够好好的学习一把玩一把了!接下来以图文的形式讲一下我所碰到的坑以及小小的收获吧!html

1、准备工做linux

  首先你得有一台能够玩的linux服务器,知道用户名和密码,而后你须要在windows电脑上安装两个能够连上linux服务器的工具,Xshell 5和Xftp 5,安装教程很少说,补图说明如何连上服务器:nginx

  xshell链接界面以下,输入好主机ip后点击肯定,xshell会弹出窗口输入用户名和密码便可链接成功!web

  

  xftp链接界面以下,填空就能够了,很简单很少说,提一下这里为何选择SFTP而不选择FTP呢,看http://blog.sina.com.cn/s/blog_7a06b2f7010116rw.html就能够明白了!shell

  

2、安装部署工做windows

  若要部署项目到到linux服务器上,安装jdk和tomcat是必不可少的,在这里要强调的是,若是你的一个服务器上要部署多个应用时,那就须要针对每个应用都有本身的tomcat,由于不一样的应用下面,tomcat的配置确定是不同的,对于这种状况,能够安装一个tomcat安装目录和多个应用下的tomcat的工做目录,对于相同的部分能够共享安装目录的tomcat,下面再分别详细介绍该如何操做,如何安装tomcat和jdk到你的服务器上centos

  1.目录划分   tomcat

  这是很重要的一步,能够按照下图这种方式新建目录,该目录下面放置与项目启动和部署访问相关的一些文件,你们能够看到,我在这个目录下面放置了多个版本的jdk和多个版本的tomcat,项目部署过程当中具体使用哪一个tomcat和jdk都是能够经过配置实现的。服务器

   

  对于实际的应用,咱们专门放在一个实例目录下,创建好每一个应用的名字,而后该目录下面放置相应的war包,以及解压后的文件,等着tomcat读取该目录部署该应用,以下:网络

     

  2.修改配置  

  每一个应用下面的tomcat咱们也放置在一个目录下面方便管理,以下图,可是得注意每一个tomcat的配置

      

  /bin目录下面,start.sh文件和stop.sh文件都要修改,首先要指定jdk路径,相似于配置环境变量,其次就是要,指定tomcat工做目录的tomcat路径,你们能够注意到,CATALINA_HOME和CATALINA_BASE分别对应tomcat的安装目录和工做目录,而后你们从最后一行能够看到项目启动使用的是安装目录下面的start.sh,可是项目启动使用的tomcat配置文件则是每一个应用tomcat本身所配置的配置文件。stop.sh也是一样的道理。

  对于使用xshell执行./start.sh和./stop.sh都是须要权限的,若出现没有权限,我们可使用xftp对start.sh邮件修改权限,按如图所示,打上勾勾便可。

  

  /conf目录下面,须要注意修改的配置有,首先是server.xml文件,修改对应的端口号,每一个应用的tomcat都须要修改不一样的端口号,否则会致使启动多个tomcat时端口占用而无法启动,最好记住这个这个应用配置的tomcat的端口号,后面使用nginx作端口映射时会用到; 

  

  另一个要修改的地方就是,Catalina目录下的localhost目录下的ROOT.xml文件,该文件用于指定tomcat启动时,加载哪一个目录下的项目实例

  

  其余的/logs目录、/temp目录、/webapps目录、/work目录不须要修改;从上面也能够看出来,目录划分很是清晰,分别划分为,服务安装目录(jdk、tomcat、nginx等),应用实例目录,以及应用部署目录,你们在使用玩linux服务器部署多个项目时,也能够按照这种方式划分。

  3.nginx实现80端口反向代理

  按道理说,这个时候咱们就能够把咱们本身应用的war包传到相应的目录下面解压,而后去对应的应用tomcat工做目录下面执行./start.sh就能够启动该项目了!你们不妨能够先试试看。

  项目部署好后,咱们配置好hosts开始访问了,这个时候咱们会发现,必须得加上上面配置好的tomcat端口号才能够访问,咱们能不能不加上端口号(使用默认的80端口)访问呢?上面也提到了,对于不一样的tomcat咱们配置了不一样的端口号,缘由就是一个端口号只能给一个tomcat去使用,这就意味着,项目访问必须得添加端口号访问,可是,要作到每个应用均可以使用80端口访问咱们也是能够作到的,这时候就要使用到nginx了,安装好nginx后咱们添加部分配置就能够作到反向代理,对不一样应用使用的80端口访问转发到相应的端口号,在tomcat看来,外部请求仍是使用了tomcat配置的端口号,这样也就实现了咱们想要的效果,具体配置以下(固然咱们也得作好相应的目录划分工做):

  nginx目录以下:

  

  咱们只须要关心/conf目录下面的nginx.conf配置文件,具体配置信息我也打开给你们看了,注意到最后一行了么,"include domains/*",表示该配置尚未完,包含/domains目录下的全部配置文件,

  

  这个时候咱们把相应的每一个应用的nginx配置,用不一样命名的文件配置好就能够了

  

  而后再来看看怎么配置吧,监听auction.center.jd.net:80域名访问,而后转发到本机的127.0.0.1的1605端口访问,从配置中咱们也能够看到,对于一些异常状态,如http_500 http_502 http_504等会记录下来,作不一样的处理,通常状况下能够跳转到网站首页等等,而后就是记录日志,配置好了这个配置文件,咱们必定不能忘了新建日志目录,否则nginx找不到目录,启动会报错。

  

  作完了这些工做以后,还没完,咱们须要重启nginx,具体怎么重启我就很少说了,百度上不少相关资料,若是重启失败,我们干脆来狠招,杀掉nginx进程,而后再使用nginx service start命令启动nginx服务。

  在咱们作完这些工做以后,是否是就可使用咱们熟悉的方式(不添加端口号)访问了呢,嗯对是的没错就是这样的,不少人在顾虑是否是还要重启tomcat从新部署应用,那只能说明你对网络层的nginx路由转换那一层没有理解,咱们访问的域名首先经过咱们配置的hosts作DNS解析,转换到对应的Ip,找到ip对应的服务器,通过服务器的防火墙,而后当咱们对服务器配置Nginx后,Nginx首先会拦截请求,对请求作处理和分发,最终才会打到相应的tomcat上(我的理解,可能理解的也不到位,勿喷),这时候咱们就能够满怀信心的访问域名发送请求了!!

  4.踩坑

  额。。很差!!空欢喜一场,跳转到首页,仍是无法访问指定应用,当我试着加上端口号后,“奇迹”般的能访问,这就说明我们配置的Nginx没有生效,问题出在哪呢?

  下面说下个人解题思路吧,首先咱们得确认全部的请求都走到了Nginx,这时候就体现了日志的好处了,当咱们使用80端口访问咱们的应用时,盯着日志去看,一遍两遍三遍。。没有日志,这个时候咱们粗略的能够判定根本就没有通过Nginx服务,并不能肯定nginx服务对于服务器没有生效,应为也许是我们的日志配置的有问题呢,这个时候我作出一个大胆的操做,那就是关掉,nginx服务访问,仍是跳转到网站首页,怎么回事?难道跳转到首页不是经过nginx配置的?的确,公司在网络层就已经作了处理,这个时候我很迷茫,彻底就是各类尝试,不妨修改tomcat配置,把其中一个应用配置成80端口,这样总能够访问了吧,很快,修改完成并部署好,就等着地址栏输入域名访问了,由于Nginx服务已经关闭了,这时候的请求确定是直接打到tomcat上的,访问一次两次三次,“奇迹”般的竟然不能访问,纳尼???这时候灵光一闪,绝对是服务器防火墙禁用了80端口,赶忙试着在本地telnet 192.168.108.37 80 果真不能访问,证实了个人猜想是对的,这时候就好办了,只要在防火墙中开通80端口访问权限便可,下面补充下如何在CentOS下配置iptables防火墙放开80端口。

  1.打开iptables的配置文件,代码以下:vi /etc/sysconfig/iptables

  2.经过/etc/init.d/iptables status,命令查询是否有打开80端口,若是没有可经过两种方式处理

  3.第一种方式:修改vi /etc/sysconfig/iptables命令添加使防火墙开放80端口,代码以下: 

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

  4.关闭/开启/重启防火墙 代码以下:/etc/init.d/iptables stop    (#start 开启  、#restart 重启)

    5.第二种方式:经过命令去添加端口,代码以下:

[root@centos httpd]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@centos httpd]# /etc/rc.d/init.d/iptables save
[root@centos httpd]# /etc/init.d/iptables restart

  6.查看效果:[root@centos httpd]# /etc/init.d/iptables status

  7.补充一句,推荐使用第二种方式,操做简单,成功率高,就拿我来讲吧,当我使用第一种方式修改防火墙配置的时候,重启失败,使用第二种方式,完美成功

3、总结

  最后结果也是预料之中,即便tomcat配置了1605端口,咱们照样能使用80端口访问,这就是nginx的强大之处,不过几兆的安装包,竟然能发挥如此多的做用,这是我刚学nginx入门,了解的很浅陋,可是经过这一次实践让我对nginx有所好感,慢慢的我会从认识到了解到熟知(虽然不能相知相爱)。

  补充:上面讲的这么多都是基于会一些基本linux命令的,对于不知道如何建立文件,修改文件,上传war包,启动tomcat,查看进程,查看日志等等基本命令的,最好仍是先学习下基本的linux命令,慢慢的你会发现,许多能用xftp可视化界面作的事情,咱们更喜欢去用命令操做。

相关文章
相关标签/搜索