个人用户如何手动在ECS实例上部署Java web项目?

本文涉及的产品
云防火墙,500元 1000GB
简介: 本篇文档介绍如何手动在ECS实例上部署Java web项目。适用于刚开始使用阿里云进行建站的个人用户。

本篇文档介绍如何手动在ECS实例上部署Java web项目。适用于刚开始使用阿里云进行建站的个人用户。

项目配置

本篇教程在示例步骤中使用了以下版本的软件。操作时,请您以实际软件版本为准。

  • 操作系统:CentOS 7.4

  • Tomcat 版本:Tomcat 8.5.34

  • JDK 版本:JDK 1.8.0_191

下载源代码

  1. 下载 Apache Tomcat

    说明 源代码版本会不断升级。您可以在https://mirrors.aliyun.com/apache/tomcat/tomcat-8/获取合适的安装包地址。

  2. 下载 JDK

    1. 下载JDK安装压缩包jdk-8u191-linux-x64 .tar.gz

      说明 直接用 wget命令在实例中下载JDK安装压缩包,在解压缩时会出错。您可以下载JDK安装压缩包,再上传到实例上。

    2. 登录 ECS管理控制台ECS 管理控制台。

    3. 在左边导航栏中,单击 实例,进入 ECS 实例列表页。

    4. 选择所购 ECS 实例所在的地域,找到已购的 ECS 实例,在 IP 地址 列获取该实例的公网 IP 地址。

    5. 在Winscp工具里用公网 IP 地址连接Linux实例,然后将下载好的JDK安装压缩包上传到Linux实例的根目录下。

安装前准备

  1. 使用管理终端连接ECS实例

  2. 参考添加安全组规则,放行所需端口入方向规则。

  3. 关闭防火墙。

    输入systemctl status firewalld命令查看当前防火墙的状态。



    如果防火墙的状态参数是active,则防火墙为开启状态。如果防火墙的状态参数是inactive,则防火墙为关闭状态。如上图所示,此处防火墙为开启状态,需要运行如下命令关闭防火墙:

    • 如果您想临时关闭防火墙,输入命令systemctl stop firewalld

      说明 这只是暂时关闭防火墙,下次重启Linux后,防火墙还会开启。

    • 如果您想永久关闭防火墙,输入命令systemctl disable firewalld

      说明 您可参考firewalld官网信息来决定何时开启防火墙。

  4. 关闭SELinux。

    • 如果您想临时关闭SELinux,输入命令setenforce 0

      说明 这只是暂时关闭SELinux,下次重启Linux后,SELinux依旧会开启。

    • 如果您想永久关闭SELinux,输入命令vi /etc/selinux/config编辑SELinux配置文件。回车后,把光标移动到SELINUX=enforcing这一行,按下i键进入编辑模式,修改为SELINUX=disabled,按Esc键,然后输入:wq并回车以保存并关闭SELinux配置文件。

      说明 您可参考redhat关于SELinux的官方文档来决定何时开启SELinux。

    1. 运行getenforce命令查看当前SELinux的状态。如果显示Disabled,则SELinux为关闭状态。如果显示Enforcing,则SELinux为开启状态,运行如下命令关闭SELinux:

    2. 重启系统使设置生效。

  5. 创建一般用户 www来运行Tomcat:

    useradd www
  6. 创建网站根目录:

    mkdir -p /data/wwwroot/default
  7. 将需要部署的Java Web项目文件WAR包上传到网站根目录下,然后将网站根目录下文件权限改为 www。本示例将直接在网站根目录下新建一个 Tomcat 测试页面:

    echo Tomcat test > /data/wwwroot/default/index.jsp
    chown -R www.www /data/wwwroot

安装 JDK

按以下步骤安装 JDK。

  1. 新建一个目录:

    mkdir /usr/java
  2. 解压 jdk-8u191-linux-x64.tar.gz 到/usr/java

    chmod +x jdk-8u191-linux-x64.tar.gz
    tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/java
  3. 设置环境变量:

    1. 打开/etc/profile:vi /etc/profile

    2. 按下i 键进入编辑模式。

    3. 在/etc/profile 文件中添加以下信息:

      # set java environmentexport JAVA_HOME=/usr/java/jdk1.8.0_191export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/libexport PATH=$JAVA_HOME/bin:$PATH
    4. 按下Esc键退出编辑模式,输入:wq保存并关闭文件。

  4. 加载环境变量: source /etc/profile

  5. 运行java -version命令,显示JDK版本信息时,表示 JDK 已经安装成功。

安装 Apache Tomcat

  1. 依次运行以下命令解压apache-tomcat-8.5.34.tar.gz,重命名Tomcat目录,并设置用户权限。

    tar xzf apache-tomcat-8.5.34.tar.gz
    mv apache-tomcat-8.5.34 /usr/local/tomcat/
    chown -R www.www /usr/local/tomcat/

    在 /usr/local/tomcat/目录中:

    • bin:存放 Tomcat 的一些脚本文件,包含启动和关闭 Tomcat 服务脚本。

    • conf:存放 Tomcat 服务器的各种全局配置文件,其中最重要的是 server.xml 和 web.xml

    • webapps:Tomcat 的主要 Web 发布目录,默认情况下把 Web 应用文件放于此目录。

    • logs:存放 Tomcat 执行时的日志文件。

  2. 配置server.xml文件:

    1. 运行命令vi server.xml

    2. 按下i键进入编辑模式。

    3. 添加以下内容:

    1. 切换到/usr/local/tomcat/conf/ 目录:cd /usr/local/tomcat/conf/

    2. 重命名server.xml 文件:mv server.xml server.xml_bk

    3. 创建一个新的server.xml 文件:

      <?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>
    4. Esc 键退出编辑模式,输入:wq保存并退出编辑。

  3. 设置 JVM 内存参数:

    1. 运行命令vi /usr/local/tomcat/bin/setenv.sh, 创建/usr/local/tomcat/bin/setenv.sh。

    2. 按下i键进入编辑模式。

    3. 添加以下内容:

      JAVA_OPTS='-Djava.security.egd=file:/dev/./urandom -server -Xms256m -Xmx496m -Dfile.encoding=UTF-8'
    4. 按下Esc 键退出编辑模式,输入:wq保存并退出文件。

  4. 设置Tomcat 自启动脚本。

    1. 下载脚本:wget https://github.com/lj2007331/oneinstack/raw/master/init.d/Tomcat-init

    2. 重命名Tomcat-init:mv Tomcat-init /etc/init.d/tomcat

    3. 添加执行权限:chmod +x /etc/init.d/tomcat

    4. 运行以下命令,设置启动脚本JAVA_HOME。

      sed -i 's@^export JAVA_HOME=.*@export JAVA_HOME=/usr/java/jdk1.8.0_191@' /etc/init.d/tomcat
  5. 设置自启动。

    chkconfig --add tomcat
    chkconfig tomcat on
  6. 启动Tomcat。

    service tomcat start
  7. 在浏览器地址栏中输入http://公网IP:8080进行访问。出现下图所示页面时表示安装成功。

  8. 使用Web服务为ECS Linux实例配置网站及绑定域名。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
74 7
|
1月前
|
安全 Linux 开发工具
零基础构建开源项目OpenIM桌面应用和pc web- Electron篇
OpenIM 为开发者提供开源即时通讯 SDK,作为 Twilio、Sendbird 等云服务的替代方案。借助 OpenIM,开发者可以构建安全可靠的即时通讯应用,如 WeChat、Zoom、Slack 等。 本仓库基于开源版 OpenIM SDK 开发,提供了一款基于 Electron 的即时通讯应用。您可以使用此应用程序作为 OpenIM SDK 的参考实现。本项目同时引用了 @openim/electron-client-sdk 和 @openim/wasm-client-sdk,分别为 Electron 版本和 Web 版本的 SDK,可以同时构建 PC Web 程序和桌面应用(Wi
74 2
|
2月前
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
4月前
|
缓存 JSON 监控
如何在项目中保证 Web 组件化的性能
保证 Web 组件化的性能需要从多个方面入手,综合运用各种优化方法和策略。通过持续的优化和改进,能够提高组件化的整体性能,为用户提供更好的体验,同时也有助于提高项目的开发效率和质量。
140 64
|
4月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
127 63
|
2月前
|
Java Windows
【Azure Function】部署Java Function失败:报错deploy [ERROR] Status code 401和警告 'China North 3' may not be a valid region
1:deploy [ERROR] Status code 401, (empty body). 2: China North 3 may not be a valid region,please refer to https://aka.ms/maven_function_configuration#supported-regions for values. 3:  <azure.functions.maven.plugin.version>1.36.0</azure.functions.maven.plugin.version>
49 11
|
3月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
227 26
|
19天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
146 60
【Java并发】【线程池】带你从0-1入门线程池
|
8天前
|
存储 网络协议 安全
Java网络编程,多线程,IO流综合小项目一一ChatBoxes
**项目介绍**:本项目实现了一个基于TCP协议的C/S架构控制台聊天室,支持局域网内多客户端同时聊天。用户需注册并登录,用户名唯一,密码格式为字母开头加纯数字。登录后可实时聊天,服务端负责验证用户信息并转发消息。 **项目亮点**: - **C/S架构**:客户端与服务端通过TCP连接通信。 - **多线程**:采用多线程处理多个客户端的并发请求,确保实时交互。 - **IO流**:使用BufferedReader和BufferedWriter进行数据传输,确保高效稳定的通信。 - **线程安全**:通过同步代码块和锁机制保证共享数据的安全性。
59 23
|
15天前
|
Java 调度
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码
当我们创建一个`ThreadPoolExecutor`的时候,你是否会好奇🤔,它到底发生了什么?比如:我传的拒绝策略、线程工厂是啥时候被使用的? 核心线程数是个啥?最大线程数和它又有什么关系?线程池,它是怎么调度,我们传入的线程?...不要着急,小手手点上关注、点赞、收藏。主播马上从源码的角度带你们探索神秘线程池的世界...
83 0
【源码】【Java并发】【线程池】邀请您从0-1阅读ThreadPoolExecutor源码

热门文章

最新文章