如何部署 Tomcat 站点

Tomcat 是 Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。由于有了 Sun 的参与和支持,最新的 Servlet 和 JSP 规范总是能在 Tomcat 中得到体现,Tomcat 支持最新的 Servlet 2.4 和 JSP 2.0 规范。因为 Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。

建立 Tomcat 站点需要您拥有一台服务器,这样可以帮助您更好的进行部署。如果您还没有云服务器,我建议您可以先点击这里进行免费套餐的试用。免费套餐包含企业版和个人版,超过11款热门产品和42款长期免费的云产品可以供您选择。如果您有长期搭建服务器的需求的话,可以点击这里进行服务器的购买。

第1步:安装Java

Tomcat 要求在服务器上安装 Java,以便可以执行任何 Java Web 应用程序代码。我们可以通过 apt-get 安装 OpenJDK 来满足这个要求。

首先,更新 apt-get 包索引:

sudo apt-get update

然后使用 apt-get 安装 Java Development Kit 包:

sudo apt-get install default-jdk

现在已经安装了 Java,我们可以创建一个tomcat用户来运行 Tomcat 服务。

第2步:创建Tomcat用户

出于安全考虑,Tomcat 应该作为非特权用户运行(即不是 root 用户)。我们将创建一个将运行 Tomcat 服务的新用户和组。

首先,创建一个新tomcat组:

sudo groupadd tomcat

接下来,创建一个新 tomcat用户。我们将使该用户成为tomcat组的成员,其主目录为/opt/tomcat(我们将在此安装 Tomcat),shell 为和/bin/false(因此没有人可以登录该帐户):

sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat

现在我们的tomcat用户已经设置好了,让我们下载并安装 Tomcat。

第3步:安装Tomcat

安装 Tomcat 8 的最佳方法是下载最新的二进制版本,然后手动配置它。

Tomcat 8下载页面上 找到最新版本的 Tomcat 8 。在 Binary Distributions 部分下,以及在 Core 列表下,将链接复制到“tar.gz”。

接下来,切换到服务器上的目录/tmp。这是一个很好的下载短暂项目的目录,比如 Tomcat tarball,在提取 Tomcat 内容后我们不需要这样:

cd /tmp

使用curl下载,您从 Tomcat 网站复制的链接:

curl -O http://apache.mirrors.ionfish.org/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

我们将 Tomcat 安装到/opt/tomcat目录中。创建目录,然后使用以下命令将存档解压缩到它:

sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-8*tar.gz -C /opt/tomcat --strip-components=1

接下来,我们可以为我们的安装设置适当的用户权限。

第4步:更新权限

我们设置的用户tomcat需要能够访问 Tomcat 安装。我们现在就把它搞定。

切换到我们解压缩 Tomcat 安装的目录:

cd /opt/tomcat

在整个安装目录中授予tomcat组权限:

sudo chgrp -R tomcat /opt/tomcat

接下来,为tomcat组提供对conf目录及其所有内容的读访问权限,并执行对目录本身的访问:

sudo chmod -R g+r conf
sudo chmod g+x conf

tomcat用户设置为webappsworktemp,和logs目录的所有者:

sudo chown -R tomcat webapps/ work/ temp/ logs/

现在已经设置了适当的权限,我们可以创建一个systemd服务文件来管理Tomcat进程。

第5步:创建systemd服务文件

我们希望能够将 Tomcat 作为服务运行,因此我们将设置 systemd 服务文件。

Tomcat 需要知道 Java 的安装位置。此路径通常称为“JAVA_HOME”。查找该位置的最简单方法是运行此命令:

sudo update-java-alternatives -l
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64

可以通过获取最后一列的输出并附加/jre到结尾来构造正确的变量JAVA_HOME。鉴于上面的示例,此服务器的正确的 JAVA_HOME将是:

JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre

你的JAVA_HOME可能会有所不同。

有了这条信息,我们就可以创建 systemd 服务文件了。通过键入以下内容在/etc/systemd/system目录中打开一个名为tomcat.service的文件:

sudo nano /etc/systemd/system/tomcat.service

将以下内容粘贴到您的服务文件中。如有必要,修改值JAVA_HOME以匹配您在系统上找到的值。您可能还想修改在CATALINA_OPTS位置指定的内存分配设置:

[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
​
[Service]
Type=forking
​
Environment=JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64/jre
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
​
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
​
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
​
[Install]
WantedBy=multi-user.target

完成后,保存并关闭文件。

接下来,重新加载 systemd 守护程序,以便它知道我们的服务文件:

sudo systemctl daemon-reload

键入以下命令启动 Tomcat 服务:

sudo systemctl start tomcat

键入以下内容,仔细检查它是否正常启动:

sudo systemctl status tomcat

步骤6:调整防火墙并测试Tomcat服务器

现在Tomcat服务已启动,我们可以测试以确保默认页面可用。

在我们这样做之前,我们需要调整防火墙以允许我们的请求到达服务。如果您是按照教程准备的,则当前将启用防火墙ufw

Tomcat使用端口8080接受传统请求。输入以下内容允许到该端口的流量:

sudo ufw allow 8080

修改防火墙后,您可以通过访问域或后跟:8080的 IP 地址在 Web 浏览器中访问默认启动页面:

Open in web browser
http://server_domain_or_IP:8080

除了其他信息之外,您还将看到默认的 Tomcat 启动页面。但是,如果单击 Manager App 的链接,则您将被拒绝访问。我们接下来可以配置该访问。

如果您能够成功访问 Tomcat,现在是启用服务文件的好时机,以便 Tomcat 在启动时自动启动:

sudo systemctl enable tomcat

步骤7:配置Tomcat Web管理界面

为了使用 Tomcat 附带的管理器 Web 应用程序,我们必须向 Tomcat 服务器添加登录。我们将通过编辑tomcat-users.xml文件来完成此操作:

sudo nano /opt/tomcat/conf/tomcat-users.xml

您将需要添加可以访问manager-guiadmin-gui(Tomcat附带的Web应用程序)的用户。您可以通过在tomcat-users标记之间定义用户(类似于下面的示例)来实现此目的。请务必将用户名和密码更改为安全的内容:

<tomcat-users . . .>
    <user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>

完成后保存并关闭文件。

默认情况下,较新版本的 Tomcat 将对 Manager 和 Host Manager 应用程序的访问限制为来自服务器本身的连接。由于我们在远程计算机上安装,您可能希望删除或更改此限制。要更改对这些的IP地址限制,请打开相应的context.xml文件。

对于 Manager 应用,请键入:

sudo nano /opt/tomcat/webapps/manager/META-INF/context.xml

对 于Host Manager 应用程序,请键入:

sudo nano /opt/tomcat/webapps/host-manager/META-INF/context.xml

在内部,注释掉IP地址限制以允许来自任何地方的连接。或者,如果您只允许访问来自您自己的IP地址的连接,您可以将您的公共IP地址添加到列表中:

<Context antiResourceLocking="false" privileged="true" >
  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>

完成后保存并关闭文件。

要使我们的更改生效,请重新启动 Tomcat 服务:

sudo systemctl restart tomcat

步骤8:访问Web界面

现在我们已经创建了一个用户,我们可以在 Web 浏览器中再次访问 Web 管理界面。再一次,您可以通过在浏览器中输入端口 8080 后面的服务器域名或 IP 地址来访问正确的界面:

Open in web browserhttp://server_domain_or_IP:8080

您看到的页面应该与您之前测试时给出的页面相同:

我们来看看 Manager App,可以通过链接或http://server_domain_or_IP:8080/manager/html访问。您需要输入添加到tomcat-users.xml文件中的帐户凭据。之后,您应该看到如下所示的页面:

Web 应用程序管理器用于管理 Java 应用程序。您可以在此处启动,停止,重新加载,部署和取消部署。您还可以在应用程序上运行一些诊断程序(即查找内存泄漏)。最后,本页最下方提供了有关您的服务器的信息。

现在让我们看看主机管理器,可通过链接或http://server_domain_or_IP:8080/host-manager/html/访问:

在 Virtual Host Manager 页面中,您可以添加虚拟主机以便为您的应用程序提供服务。

结论

你的 Tomcat 安装完成了!您现在可以自由部署自己的 Java Web 应用程序了!目前,您的 Tomcat 安装功能正常,但完全未加密。这意味着所有数据(包括密码等敏感项目)都以纯文本形式发送,可以被互联网上的其他方拦截和阅读。为了防止这种情况发生,强烈建议您使用 SSL 加密连接。腾讯云 SSL证书(SSL Certificates)提供了安全套接层(SSL)证书的一站式服务,包括证书申请、管理及部署功能,与顶级的数字证书授权(CA)机构和代理商合作,为您的网站、移动应用提供 HTTPS 解决方案。如果您还未决定是否进行购买,可以先点击这里进行 SSL 证书的试用,在体验加密证书的优势之后再进行抉择。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

WCF服务发布到IIS时候,只能根据hostname访问,不能根据IP地址访问的解决办法

本文转载:http://www.cnblogs.com/deerbox/archive/2013/05/13/3076248.html

752
来自专栏Puppeteer学习

超越Ctrl+S保存页面所有资源

页面所有资源包含本页面所在域资源以及第三方域资源,同主域的资源也认为第三方域资源,这种资源一般是以绝对路径的方式标识,同域下资源主要有三种表现方式 (以ht...

4913
来自专栏云计算教程系列

如何在CentOS 7上安装和配置scponly

scponly是匿名FTP的安全替代品。它使管理员能够设置具有受限远程文件访问权限且无法访问交互式shell的安全用户帐户。

620
来自专栏云计算教程系列

如何在Ubuntu 16.04上为匿名下载设置vsftpd

FTP是文件传输协议的缩写,是一种曾经广泛用于在客户端和服务器之间移动文件的网络协议。它已被更快,更安全,更方便的文件传输方式所取代。许多休闲网民希望直接从他们...

60
来自专栏IT笔记

Consul+Prometheus系统监控之注册发现

缘起 前面几篇文章分别对系统服务、MySql以及Redis相关软件做了监控预警,但是大家有没有发现,在prometheus.yml里配置需要监听的服务时,我们需...

1.3K6
来自专栏开发之途

Android 系统权限

1254
来自专栏IT笔记

Nginx学习之HTTP/2.0配置

哎呀,一不小心自己的博客也是HTTP/2.0了,前段时间对网站进行了https迁移并上了CDN,最终的结果是这酱紫的(重点小绿锁,安全标示以及HTTP/2.0请...

35314
来自专栏崔庆才的专栏

腾讯云主机Python3环境安装Scrapy爬虫框架过程及常见错误

Scrapy安装介绍Scrapy的安装有多种方式,它支持Python2.7版本及以上或Python3.3版本及以上。下面说明Python3环境下的安装过程。Sc...

1.9K0
来自专栏北京马哥教育

PXE批量部署linux操作系统

前言 在实际生产环境中,有时候我们会碰到为几十上百甚至上千台服务器安装Linux操作系统的需求,如果我们还是常规的去使用移动介质逐台安装,显然是一件 低...

2836
来自专栏dotnet core相关

这可能是最low的发布dotnet core站点到centos7教程

不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash。。我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的。

653

扫码关注云+社区