Apache Tomcat是一个Web服务器和servlet容器,用于为Java应用程序提供服务。Tomcat是Apache Software Foundation发布的Java Servlet和JavaServer Pages技术的开源实现。本教程介绍了Ubuntu 16.04服务器上Tomcat 8的最新版本的基本安装和一些配置。
在开始本教程之前,您应该拥有一个在您的服务器上设置了sudo
权限的非root用户。
没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
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服务。
出于安全考虑,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。
安装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
接下来,我们可以为我们的安装设置适当的用户权限。
我们设置的用户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
用户设置为webapps
,work
,temp
,和logs
目录的所有者:
sudo chown -R tomcat webapps/ work/ temp/ logs/
现在已经设置了适当的权限,我们可以创建一个systemd服务文件来管理Tomcat进程。
我们希望能够将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
现在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
为了使用Tomcat附带的管理器Web应用程序,我们必须向Tomcat服务器添加登录。我们将通过编辑tomcat-users.xml
文件来完成此操作:
sudo nano /opt/tomcat/conf/tomcat-users.xml
您将需要添加可以访问manager-gui
和admin-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
现在我们已经创建了一个用户,我们可以在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加密连接。
想要了解更多关于安装Apache Tomcat 8的相关教程,请前往腾讯云+社区学习更多知识。
参考文献:《How To Install Apache Tomcat 8 on Ubuntu 16.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。