虽然在Amazon EC2的Ubuntu实例上设置Tomcat服务器看似简单,但其中一些步骤并不那么明显。本文旨在记录这些关键步骤,以便下次操作时能节省时间。
创建Amazon AWS账户是一个简单的步骤。可以访问Amazon网站完成注册。Amazon提供了不同级别的服务。对于目的,只是创建了一个为期一年的免费账户。Amazon需要电子邮件地址、信用卡和电话号码来完成注册。他们承诺如果不超过使用配额,就不会向收费。按照Amazon的指示创建账户并不难。但想提醒,如果使用不是出于任何商业目的,就不要超过免费配额。否则将被收费。
完成注册后,可以通过Amazon AWS链接登录到AWS管理控制台。由于AWS管理控制台的UI可能会随着时间不断变化,不想详细说明启动过程。只想记录重要的步骤。当开始启动AWS实例时,Amazon会提供许多机器镜像供选择。"Ubuntu Server"镜像将对拥有免费层账户的用户可用。作为免费用户,只能启动一个"微型"实例,它只有非常有限的CPU和内存数量。但这应该足够测试应用程序了。启动实例时,应该记住以下事项:
成功启动Ubuntu实例后,Amazon网页会显示有关该实例的重要信息,如公共IP、安全组和密钥对。
Ubuntu实例可以从运行任何操作系统的本地计算机访问。由于有一台Linux Mint,将使用Linux机器通过SSH访问Ubuntu实例。如果计算机上没有安装SSH,需要自己安装。在运行SSH之前,需要确保密钥对文件只能由自己访问,通过发布以下命令:
chmod 400 song-aws-keypair.pem
文件"song-aws-keypair.pem"是计算机上的密钥对文件。更改密钥对文件属性后,可以通过以下命令连接到Ubuntu实例:
ssh -i "$HOME/Development/amazon-aws/keys/song-aws-keypair.pem" ubuntu@52.35.120.158
需要确保密钥对文件的路径和Ubuntu实例的公共IP是正确的。SSH将为Ubuntu实例提供一个终端,可以在Amazon云中的Ubuntu实例上发出任何shell命令。
SSH使能够通过shell命令管理Ubuntu实例。但并不是所有人都使用shell命令作为他们使用Linux的主要方式。对于许多用户来说,使用一些GUI客户端连接到Ubuntu实例仍然很好。这里展示的方法是从这个YouTube视频中借鉴的。
要从Ubuntu实例启用对TightVNC的支持,需要使用SSH连接到实例。然后可以发布以下命令来安装"ubuntu-desktop":
sudo apt-get install ubuntu-desktop
可能需要在安装之前运行更新以使安装成功:
sudo apt-get update
还需要安装"vnc4server"和"gnome-panel":
sudo apt-get install vnc4server
sudo apt-get install gnome-panel
安装完成后,可以通过以下命令运行"vnc4server":
vnc4server
当第一次运行"vnc4server"时,它会要求指定一个密码。这将是GUI客户端用来访问服务器的密码。在可以从本地计算机的GUI客户端访问Ubuntu实例之前,需要进一步配置服务器。需要通过以下命令关闭服务器:
vncserver -kill :1
然后可以修改".vnc/xstartup"文件,如下所示并保存文件。然后可以通过以下命令重新启动vnc服务器,以便VNC客户端可以连接到Ubuntu实例:
vnc4server
还需要使用Amazon AWS管理控制台来更改安全组,以接受端口5901,以便GUI客户端连接到VNC服务器。现在Unbuntu实例已经准备好连接了。作为第一个VNC客户端,选择了TightVNC。可以访问下载页面下载TightVNC。由于已经在Ubuntu实例上安装了VNC服务器,只需要"TightVNC Java Viewer"。解压缩zip文件后,如果本地计算机上有适当的JRE,可以运行"tightvnc-jviewer.jar"文件。
需要登录到VNC服务器的密码是第一次运行"vnc4server"时指定的密码。成功登录到VNC服务器后,应该能够从TightVNC查看器看到"ubuntu-desktop"。如果觉得自己更习惯于shell命令而不是GUI,显然不需要通过TightVNC连接到Ubuntu实例。但如果觉得可以使用GUI来提高生产力,可以设置它。
在GUI客户端的帮助下,可以使用Ubuntu实例上的Firefox从相应的网站下载Java和Tomcat。
可以访问下载Java。使用的版本是"jre-8u65";可以访问下载tomcat。使用的版本是"7.0.67"。下载Java和Tomcat后,可以将它们解压缩到选择的目录。
为了让Linux终端找到正确的JRE和"catalina.sh",可以将以下行添加到"ubuntu"用户的".profile"文件中。需要将正确的路径放到文件中。
export JAVA_HOME=$HOME/Installation/jdk1.8.9_65
PATH=$HOME/Installation/apache-tomcat-7.0.67/bin:PATH
在重启Ubuntu实例或发布命令"source $HOME/.profile"之后,可以通过以下命令启动tomcat:
catalina.sh start
可以通过以下命令停止tomcat:
catalina.sh stop
如果tomcat已经启动,可以在Ubuntu实例上的Firefox中打开,并在URL中输入"http://localhost:8080",应该看到以下网页。
现在tomcat正在运行,可能会期望可以直接去任何浏览器并输入URL "http://52.35.120.158",应该看到tomcat首页。但网页无法访问。需要运行以下命令将任何TCP请求重定向到端口80到8080。
sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
为了保存"iptables",需要安装"iptables-persistent"。
sudo apt-get install iptables-persistent
然后可以通过以下命令保存"iptables":
sudo /etc/init.d/iptables-persistent save
最后,需要在"server.xml"中的HTTP连接器配置中包含proxyPort属性,以便Web应用程序中的servlets表现得就像传入的请求被定向到端口80一样。
<Connector port="8080" proxyPort="80" .../>
现在如果打开任何有互联网访问权限的Web浏览器并输入带有Ubuntu实例公共IP的URL,应该看到Tomcat首页。
这是一篇关于在Amazon EC2Ubuntu实例上设置Tomcat的学习笔记;
免费的AWS服务可以作为一个不错的游乐场,让在互联网上测试应用程序,如果没有具有公共IP的服务器;
如果是AWS和Ubuntu的专家,可能会发现方法过于冗长。但记录步骤是很好的,这样如果将来再次这样做,就会更容易;