首页 运维 linux运维 tomcat和Nginx的服务器部署

tomcat和Nginx的服务器部署

Jul 15, 2017 am 11:38 AM
linux tomcat

一、准备工作

  首先你需要一台linux服务器,知道用户名和密码,然后你需要在windows电脑上安装两个可以连上linux服务器的工具,Xshell 5和Xftp 5,安装教程不多说,补图说明如何连上服务器:

  xshell连接界面如下,输入好主机ip后点击确定,xshell会弹出窗口输入用户名和密码即可连接成功!

  

  xftp连接界面如下,填空就可以了,很简单不多说,提一下这里为什么选择SFTP而不选择FTP呢,看就可以明白了!

  

二、安装部署工作

  若要部署项目到到linux服务器上,安装jdk和tomcat是必不可少的,在这里要强调的是,如果你的一个服务器上要部署多个应用时,那就需要针对每一个应用都有自己的tomcat,因为不同的应用下面,tomcat的配置肯定是不一样的,对于这种情况,可以安装一个tomcat安装目录和多个应用下的tomcat的工作目录,对于相同的部分可以共享安装目录的tomcat,下面再分别详细介绍该如何操作,如何安装tomcat和jdk到你的服务器上

  1.目录划分   

  这是很重要的一步,可以按照下图这种方式新建目录,该目录下面放置与项目启动和部署访问相关的一些文件,大家可以看到,我在这个目录下面放置了多个版本的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.补充一句,推荐使用第二种方式,操作简单,成功率高,就拿我来说吧,当我使用第一种方式修改防火墙配置的时候,重启失败,使用第二种方式,完美成功

三、总结

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


 

以上是tomcat和Nginx的服务器部署的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

centos和ubuntu的区别 centos和ubuntu的区别 Apr 14, 2025 pm 09:09 PM

CentOS 和 Ubuntu 的关键差异在于:起源(CentOS 源自 Red Hat,面向企业;Ubuntu 源自 Debian,面向个人)、包管理(CentOS 使用 yum,注重稳定;Ubuntu 使用 apt,更新频率高)、支持周期(CentOS 提供 10 年支持,Ubuntu 提供 5 年 LTS 支持)、社区支持(CentOS 侧重稳定,Ubuntu 提供广泛教程和文档)、用途(CentOS 偏向服务器,Ubuntu 适用于服务器和桌面),其他差异包括安装精简度(CentOS 精

docker desktop怎么用 docker desktop怎么用 Apr 15, 2025 am 11:45 AM

如何使用 Docker Desktop?Docker Desktop 是一款工具,用于在本地机器上运行 Docker 容器。其使用步骤包括:1. 安装 Docker Desktop;2. 启动 Docker Desktop;3. 创建 Docker 镜像(使用 Dockerfile);4. 构建 Docker 镜像(使用 docker build);5. 运行 Docker 容器(使用 docker run)。

Centos停止维护后的选择 Centos停止维护后的选择 Apr 14, 2025 pm 08:51 PM

CentOS 已停止维护,替代选择包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(与 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商业版,付费许可);5. Oracle Linux(与 CentOS 和 RHEL 兼容)。在迁移时,考虑因素有:兼容性、可用性、支持、成本和社区支持。

centos如何安装 centos如何安装 Apr 14, 2025 pm 09:03 PM

CentOS 安装步骤:下载 ISO 映像并刻录可引导媒体;启动并选择安装源;选择语言和键盘布局;配置网络;分区硬盘;设置系统时钟;创建 root 用户;选择软件包;开始安装;安装完成后重启并从硬盘启动。

怎么看docker进程 怎么看docker进程 Apr 15, 2025 am 11:48 AM

Docker 进程查看方法:1. Docker CLI 命令:docker ps;2. Systemd CLI 命令:systemctl status docker;3. Docker Compose CLI 命令:docker-compose ps;4. Process Explorer(Windows);5. /proc 目录(Linux)。

docker原理详解 docker原理详解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

vscode需要什么电脑配置 vscode需要什么电脑配置 Apr 15, 2025 pm 09:48 PM

VS Code 系统要求:操作系统:Windows 10 及以上、macOS 10.12 及以上、Linux 发行版处理器:最低 1.6 GHz,推荐 2.0 GHz 及以上内存:最低 512 MB,推荐 4 GB 及以上存储空间:最低 250 MB,推荐 1 GB 及以上其他要求:稳定网络连接,Xorg/Wayland(Linux)

docker镜像失败怎么办 docker镜像失败怎么办 Apr 15, 2025 am 11:21 AM

Docker镜像构建失败的故障排除步骤:检查Dockerfile语法和依赖项版本。检查构建上下文中是否包含所需源代码和依赖项。查看构建日志以获取错误详细信息。使用--target选项构建分层阶段以识别失败点。确保使用最新版本的Docker引擎。使用--t [image-name]:debug模式构建镜像以调试问题。检查磁盘空间并确保足够。禁用SELinux以防止干扰构建过程。向社区平台寻求帮助,提供Dockerfile和构建日志描述以获得更具体的建议。

See all articles