NiceLeeのBlog 用爱发电 bilibili~

阿里云CentOS JDK + Tomcat部署

2018-11-05
nIceLee

阅读:


本文档介绍如何使用一台基本配置的云服务器 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。

  1. 下载 JDK
    可以使用wget下载网上的资源,或者自己下好后通过FTP上传到服务器上面
    wget http://mirrors.linuxeye.com/jdk/jdk-8u141-linux-x64.tar.gz
    
  2. 新建一个目录:
    mkdir /usr/java
    
  3. 解压 jdk-8u141-linux-x64.tar.gz 到 /usr/java。
    tar xzf jdk-8u141-linux-x64.tar.gz -C /usr/java
    
  4. 设置环境变量:
    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。

  1. 下载 Apache Tomcat
    可以使用wget下载网上的资源,或者自己下好后通过FTP上传到服务器上面
    wget https://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.23/bin/apache-tomcat-8.5.23.tar.gz
    
  2. 依次运行以下命令解压 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/
    
  3. 配置 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 &quot;%r&quot; %s %b" />
</Host>
</Engine>
</Service>
</Server>
  1. 设置 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 保存并退出文件。

  2. 设置 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 '[email protected]^export JAVA_HOME=.*@export JAVA_HOME=/usr/java/[email protected]' /etc/init.d/tomcat
    

    v. 设置自启动。

    chkconfig --add tomcat
    chkconfig tomcat on
    

    vi. 启动 Tomcat。

    service tomcat start
    

    vii. 在浏览器地址栏中输入 http://ip:8080 进行访问。出现如图所示页面时表示安装成功。 Tomcat test

遇到的问题

  • Tomcat 默认端口8080访问没有问题, 但是将其改为80后,无法访问.
    解决方案:
    增加ip table表,将外部访问至80的端口导向至8080
    iptables -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
    

内容
隐藏