本文档介绍如何使用一台基本配置的云服务器 ECS 实例部署 Java web 项目。
安装前准备
防火墙配置
- CentOS 系统默认防火墙
因为阿里云自身有相关的出入网配置,所以可以关闭防火墙
关闭防火墙:systemctl stop firewalld.service
关闭防火墙开机自启动功能:
systemctl disable firewalld.service
也可以在防火墙里添加规则,放行 80、443 或 8080 端口入方向规则。例如:
firewall-cmd --zone=public --add-port=8080/tcp --permanent
进行8080端口开放配置,命令解析如下:
--zone #作用域
--add-port=8080/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数设置,重启后会失效。重启防火墙,输入命令:
firewall-cmd --reload
- 阿里云配置 请参考 添加安全组规则
创建一般用户 www
该用户被用来运行 tomcat
useradd www
创建网站根目录
mkdir -p /data/wwwroot/default
新建 Tomcat 测试页面
echo Tomcat test > /data/wwwroot/default/index.jsp
chown -R www.www /data/wwwroot //将该目录的所有者设置为www(默认操作用户是root)
安装JDK
按以下步骤安装 JDK。
- 下载 JDK
可以使用wget下载网上的资源,或者自己下好后通过FTP上传到服务器上面wget http://mirrors.linuxeye.com/jdk/jdk-8u141-linux-x64.tar.gz
- 新建一个目录:
mkdir /usr/java
- 解压 jdk-8u141-linux-x64.tar.gz 到 /usr/java。
tar xzf jdk-8u141-linux-x64.tar.gz -C /usr/java
- 设置环境变量:
i. 打开 /etc/profile:vi /etc/profile。
ii. 按 i 键进入编辑模式。
iii. 在 /etc/profile 文件中添加以下信息:#set java environment export JAVA_HOME=/usr/java/jdk1.8.0_141 export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib export PATH=$JAVA_HOME/bin:$PATH
iv. 按 Esc 键退出编辑模式,输入 :wq 保存并关闭文件。
v. 加载环境变量: source /etc/profile。
vi. 查看 jdk 版本。当出现 jdk 版本信息时,表示 JDK 已经安装成功。java -version java version "1.8.0_141" Java(TM) SE Runtime Environment (build 1.8.0_141-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.141-b15, mixed mode)
安装 Tomcat
按以下步骤安装 Tomcat。
- 下载 Apache Tomcat
可以使用wget下载网上的资源,或者自己下好后通过FTP上传到服务器上面wget https://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
- 依次运行以下命令解压 apache-tomcat-8.5.23.tar.gz,重命名 Tomcat 目录,并设置用户权限。
tar xzf apache-tomcat-8.5.23.tar.gz mv apache-tomcat-8.5.23 /usr/local/tomcat/ chown -R www.www /usr/local/tomcat/
- 配置 server.xml 文件:
i. 切换到/usr/local/tomcat/conf/
目录:cd /usr/local/tomcat/conf/
。
ii. 重命名server.xml
文件:mv server.xml server.xml_bk
。
iii. 创建一个新的server.xml
文件:
iv. 运行命令vi server.xml
。
v. 单击 i 键进入编辑模式。添加以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8006" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml"/>
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="1000"
minSpareThreads="20"
acceptCount="1000"
maxHttpHeaderSize="65536"
debug="0"
disableUploadTimeout="true"
useBodyEncodingForURI="true"
enableLookups="false"
URIEncoding="UTF-8"/>
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="/data/wwwroot/default" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/data/wwwroot/default" debug="0" reloadable="false" crossContext="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>
- 设置 JVM 内存参数:
i. 运行命令vi /usr/local/tomcat/bin/setenv.sh
, 创建/usr/local/tomcat/bin/setenv.sh
。
ii. 按 i 键进入编辑模式。
iii. 添加以下内容:JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx496m -Dfile.encoding=UTF-8'
iv. 按 Esc 键退出编辑模式,输入 :wq 保存并退出文件。
- 设置 Tomcat 自启动脚本。
i. 下载脚本:wget https://github.com/lj2007331/oneinstack/raw/master/init.d/Tomcat-init
ii. 重命名 Tomcat-init:mv Tomcat-init /etc/init.d/tomcat
iii. 添加执行权限:chmod +x /etc/init.d/tomcat
iv. 运行以下命令,设置启动脚本JAVA_HOME
`。sed -i 's@^export JAVA_HOME=.*@export JAVA_HOME=/usr/java/jdk1.8.0_141@' /etc/init.d/tomcat
v. 设置自启动。
chkconfig --add tomcat chkconfig tomcat on
vi. 启动 Tomcat。
service tomcat start
vii. 在浏览器地址栏中输入 http://ip:8080 进行访问。出现如图所示页面时表示安装成功。
遇到的问题
- Tomcat 默认端口8080访问没有问题, 但是将其改为80后,无法访问.
解决方案:
增加ip table表,将外部访问至80的端口导向至8080iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
当需要使用nginx等其它程序,需要将端口恢复默认时,使用以下命令删除route表:
iptables -t nat -D PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080