# 基于Tomcat构建Java web环境（CentOS 7.4）
#### 应用场景
Tomcat是一个被广泛使用的Java Web应用服务器。本文介绍了在华为云弹性云服务器上部署Java Web环境的操作步骤。首先需要下载部署Java Web环境所需的安装包，并将安装包上传至云服务器，然后设置弹性云服务器安全组规则，再安装并配置相关软件，完成开发环境的配置。
本文使用的云服务器以华为云CentOS 7.4 64bit操作系统云服务器为例。
#### 方案架构
图1基于Tomcat构建Java web环境示意图   
![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001289342784.png "点击放大")
 #### 资源和成本规划
 表1资源和成本规划 
| 资源     | 资源说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | 成本说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| 虚拟私有云VPC | VPC网段：192.168.0.0/16                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 免费                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 虚拟私有云子网  | - 可用区：可用区1  - 子网网段：192.168.0.0/24                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 免费                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| 安全组          | 入方向规则1： - 优先级：1  - 策略：允许  - 类型：IPv4  - 协议端口：ICMP: 全部  - 源地址：0.0.0.0/0   入方向规则2： - 优先级：1  - 策略：允许  - 类型：IPv4  - 协议端口：TCP: 8080   - 源地址：0.0.0.0/0   | 免费                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 弹性云服务器    | - 计费模式：包年/包月  - 可用区：可用区1  - 规格：c7.large.2  - 镜像：CentOS 7.4 64bit  - 系统盘：40G  - 弹性公网IP：现在购买  - 线路：全动态BGP  - 公网带宽：按流量计费  - 带宽大小：5 Mbit/s                                                                                                                                                                                       | ECS涉及以下几项费用： - 云服务器  - 云硬盘  - 弹性公网IP   具体的计费方式及标准请参考[计费模式概述](https://support.huaweicloud.com/price-ecs/ecs_billing_2001.html)。 |
| jdk      | Java开发工具软件。 获取方式： <https://www.oracle.com/technetwork/java/javase/downloads>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  | 免费                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| tomcat   | 是一款开源的Web应用服务器。 获取方式： <https://tomcat.apache.org/download-80.cgi>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 免费                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| PuTTY     | 跨平台远程访问工具。用于在软件安装过程中在Windows系统上访问云服务器。 获取方式： [https://www.chiark.greenend.org.uk/\~sgtatham/putty/latest.html](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 免费                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| WinSCP   | 跨平台文件传输工具。用于在Windows系统和Linux系统间传输文件。 获取方式： <https://winscp.net/>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 免费                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
[表1]中为jdk和tomcat官方获取地址，您还可以参考其他开源镜像地址获取安装包。
#### 基于Tomcat构建Java web环境操作流程（手动）
图2安装流程   
![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0205714632.png "点击放大")
#### 实施步骤（手动）
**安装前准备**
- 创建弹性云服务器，且弹性云服务器已绑定弹性公网IP。
- 为了更好地获取和更新系统和软件，建议您更新镜像源为华为云镜像源，详细操作，请参见[如何使用华为云开源镜像配置yum源(x86_64和鲲鹏)？](https://support.huaweicloud.com/ecs_faq/zh-cn_topic_0118948562.html)。
- 登录弹性云服务器，执行如下命令，新建jdk目录和tomcat目录。
  ```
  cd /home/
  mkdir webDemo
  cd webDemo/
  mkdir jdk
  mkdir tomcat
  ```
  
- 您可以选择将安装包下载至本地后使用文件传输工具将安装包上传至云服务器。或者选择使用**wget** 命令直接下载安装包至云服务器。
  - 方法一：使用文件传输工具上传安装包至云服务器。
    - 使用WinSCP工具上传jdk软件包至云服务器jdk文件夹。
    
    - 使用WinSCP工具上传tomcat软件包至云服务器tomcat文件夹。
     
  
  - 方法二：使用**wget** 命令直接下载安装包至云服务器。
    1. 执行如下命令，进入jdk目录。
       ```
       cd /home/webDemo/jdk
       ```
       
    
    2. 执行如下命令，下载jdk软件包。
       ```
       wget jdk软件包下载地址
       ```
       请参考[表1]查询jdk下载地址，或者使用其他开源镜像地址获取安装包。
       例如：以[jdk17](https://www.oracle.com/java/technologies/downloads/)为例，在列表中查看可用的JDK软件包版本，以jdk-17_linux-x64_bin.tar.gz安装包为例，执行以下命令。
       ```
       wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
       ```
       
    
    3. 执行如下命令，进入tomcat目录。
       ```
       cd /home/webDemo/tomcat
       ```
       
    
    4. 执行如下命令，下载tomcat软件包。 请参考[表1]查询tomcat下载地址，或者使用其他开源镜像地址获取安装包。
       ```
       wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-x/vx.x.xx/bin/apache-tomcat-x.x.xx.tar.gz
       ```
       例如：单击[开源镜像地址](https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/)，查询当前可用版本，以v8.5.***xx***版本安装包为例，执行以下命令。
       ```
       wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.xx/bin/apache-tomcat-8.5.xx.tar.gz --no-check-certificate
       ```
       
     
   
**设置弹性云服务器安全组规则**
1. 单击弹性云服务器名称，查看弹性云服务器详情，在弹性云服务器详情页面，选择"安全组"。
2. 在"安全组"界面，单击"配置规则"，进入安全组详情界面。
3. 在安全组详情界面，单击"添加规则"，弹出添加规则窗口。
4. 根据界面提示配置安全组规则。 部署Java Web环境需为弹性云服务器添加两个安全组规则。
   1. 为云服务器添加ICMP安全组规则。 如果云服务器默认设置是禁止ICMP规则，当ping弹性服务器IP时会显示超时。因此首先为云服务器添加ICMP规则。
      图3添加ICMP规则   
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002160245680.png "点击放大") 
   
   2. 为云服务器添加web项目分配端口的访问规则，以8080端口为例。
      图4添加8080端口   
      ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002160405720.png "点击放大") 
    
**安装jdk**
1. 执行如下命令，进入jdk目录。
   ```
   cd /home/webDemo/jdk
   ```
   
2. 解压jdk安装包到jdk目录下。
   ```
   tar -xvf jdk-17_linux-x64_bin.tar.gz -C /home/webDemo/jdk/
   ```
   
3. 配置环境变量。
   ```
   vim /etc/profile
   ```
   
4. 在底部添加以下内容。
   ```
   #set java environment
   JAVA_HOME=/home/webDemo/jdk/jdk-17.0.x
   JRE_HOME=$JAVA_HOME
   PATH=$JAVA_HOME/bin:$PATH
   CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JRE_HOME/lib/tools.jar
   export JAVA_HOME JRE_HOME PATH CLASSPATH
   ```
   ![](https://support.huaweicloud.com/bestpractice-ecs/public_sys-resources/note_3.0-zh-cn.png)
   "*jdk-17.0.* *x* "表示jdk安装包的具体版本，实际值需要从步骤[2]的返回值中获取。
   例如：jdk-17.0.9
   
5. 执行以下命令保存并退出。
   ```
   :wq
   ```
   
6. 执行以下命令使/etc/profile里的配置生效。
   ```
   source /etc/profile
   ```
   
7. 验证安装。
   ```
   java -version
   ```
   回显信息如下所示验证安装jdk成功。
   ```
   [root@ecs-c525-web ~]# java -version
   java version "17.0.9" 2023-10-17 LTS
   Java(TM) SE Runtime Environment (build 17.0.9+11-LTS-201)
   Java HotSpot(TM) 64-Bit Server VM (build 17.0.9+11-LTS-201, mixed mode, sharing)
   ```
   
**安装tomcat**
1. 执行如下命令，进入tomcat目录。
   ```
   cd /home/webDemo/tomcat
   ```
   
2. 解压tomcat安装包到tomcat目录下。
   ```
   tar -xvf apache-tomcat-x.x.xx.tar.gz -C /home/webDemo/tomcat/
   ```
   例如：以v8.5.***xx***版本安装包为例，执行以下命令。
   ```
   tar -xvf apache-tomcat-8.5.xx.tar.gz -C /home/webDemo/tomcat/
   ```
   
3. 进入tomcat的bin目录，执行以下命令安装tomcat。
   ```
   cd /home/webDemo/tomcat/apache-tomcat-x.x.xx/
   ```
   ```
   cd bin/
   ```
   例如：以v8.5.***xx***版本安装包为例，执行以下命令。
   ```
   cd /home/webDemo/tomcat/apache-tomcat-8.5.xx/
   ```
   ```
   cd bin/
   ```
   
4. 执行如下命令编辑setclasspath.sh脚本。
   ```
   vi setclasspath.sh
   ```
   并在setclasspath.sh脚本底部添加以下内容。
   请根据[资源和成本规划]中jdk的版本号替换如下内容中的jdk版本号。
   ```
   export JAVA_HOME=/home/webDemo/jdk/jdk-17.0.9
   export JRE_HOME=$JAVA_HOME
   ```
   
5. 执行如下命令保存后退出。
   ```
   :wq
   ```
   
6. 可输入以下命令启动tomcat。
   ```
   ./startup.sh
   ```
   
7. 执行如下命令查看tomcat进程。
   ```
   ps -ef | grep tomcat
   ```
   若返回如下图所示，表示tomcat启动成功。
   图5查看tomcat进程   
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001294015861.png "点击放大") 
**验证Java Web环境搭建完成**
在浏览器输入以下内容。
**http:** **//** ***云服务器弹性公网IP*** **:8080**
如果界面跳转至默认的Tomcat界面，证明Java Web环境搭建完成。就可以在公网访问云服务器的8080端口了。
图6访问云服务器的8080端口   
![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000001293896677.png "点击放大")
#### 实施步骤（自动）
请参见[基于Tomcat快速构建Java Web环境](https://www.huaweicloud.com/solution/implementations/build-a-java-web-environment-based-on-tomcat.html)。
#### 常见问题
**启动Tomcat报错NB: JAVA_HOME should point to a JDK not a JRE**
问题现象：
启动Tomcat报错NB: JAVA_HOME should point to a JDK not a JRE
![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002163418505.png "点击放大")
原因分析：
环境变量JAVA_HOME设置不正确，应指向JDK而不是JRE。本示例中，*/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7 _9.x86_64/jre/bin/* 这个路径是JRE的，JAVA_HOME只需要设置到*/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.402.b06-1.el7_9.x86_64/* 即可。
处理方法：
1. 执行以下命令，修改环境变量。
   ```
   vim /etc/profile
   ```
   修改结果如下：
   ![](https://support.huaweicloud.com/bestpractice-ecs/zh-cn_image_0000002163714981.png "点击放大")
   
2. 执行以下命令保存并退出。
   ```
   :wq
   ```
   
3. 执行以下命令使/etc/profile里的配置生效。
   ```
   source /etc/profile
   ```
   
4. 重新启动Tomcat。
   ```
   ./startup.sh
   ```
   
 
