云服务器部署 JavaWeb 项目

一、部署前准备

1. 服务器基础配置

  • 远程连接服务器 :使用 SSH 工具(Xshell、FinalShell、Windows 自带的 cmd/powershell)连接,命令:

    bash

    运行

    复制代码
    ssh 用户名@服务器公网IP  # 例如 ssh root@123.45.67.89

    首次连接输入服务器密码即可登录(推荐配置 SSH 密钥登录,更安全)。

  • 安全组 / 防火墙配置 :云服务器控制台(阿里云 / 腾讯云 / 华为云)需开放以下端口:

    • 22:SSH 连接(默认开放)
    • 80:HTTP 访问
    • 443:HTTPS 访问(可选)
    • 8080:Tomcat 默认端口(测试用,生产建议改)
    • 3306:MySQL 端口(仅测试用,生产建议仅内网访问)系统防火墙开放端口命令(CentOS 7+):

    bash

    运行

    复制代码
    # 开放8080端口
    firewall-cmd --add-port=8080/tcp --permanent
    # 重启防火墙生效
    firewall-cmd --reload
    # 查看已开放端口
    firewall-cmd --list-ports

2. 安装基础依赖

JavaWeb 项目核心依赖:JDK(Java 运行环境)、Tomcat(Web 服务器)、MySQL(数据库,若项目用到)。

(1)安装 JDK
  • 方式 1:yum 安装(推荐,自动配置环境变量) bash

    运行

    复制代码
    # 查看可安装的JDK版本
    yum list java*devel*
    # 安装JDK 8(最常用,适配多数项目)
    yum install -y java-1.8.0-openjdk-devel.x86_64
    # 验证安装
    java -version
    # 输出如下则成功:
    # openjdk version "1.8.0_xxx"
    # OpenJDK Runtime Environment (build 1.8.0_xxx-bxx)
    # OpenJDK 64-Bit Server VM (build xxx, mixed mode)
  • 方式 2:手动下载安装(自定义版本)若需要 Oracle JDK,可从官网下载 tar 包,上传到服务器后解压: bash

    运行

    复制代码
    # 解压到/usr/local/java目录
    tar -zxvf jdk-8u381-linux-x64.tar.gz -C /usr/local/java
    # 配置环境变量(编辑/etc/profile)
    vi /etc/profile
    # 在文件末尾添加:
    export JAVA_HOME=/usr/local/java/jdk1.8.0_381
    export PATH=$PATH:$JAVA_HOME/bin
    # 生效环境变量
    source /etc/profile
(2)安装 Tomcat
  • 下载并解压 Tomcat 8/9(推荐 9): bash

    运行

    复制代码
    # 进入/usr/local目录
    cd /usr/local
    # 下载Tomcat 9(也可手动下载后上传)
    wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.85/bin/apache-tomcat-9.0.85.tar.gz
    # 解压
    tar -zxvf apache-tomcat-9.0.85.tar.gz
    # 重命名(方便使用)
    mv apache-tomcat-9.0.85 tomcat
  • 配置 Tomcat 权限和启动: bash

    运行

    复制代码
    # 赋予启动脚本执行权限
    chmod +x /usr/local/tomcat/bin/*.sh
    # 启动Tomcat
    /usr/local/tomcat/bin/startup.sh
    # 验证启动:访问 http://服务器公网IP:8080,能看到Tomcat首页则成功
    # 停止Tomcat命令
    /usr/local/tomcat/bin/shutdown.sh
  • (可选)设置 Tomcat 开机自启: bash

    运行

    复制代码
    # 创建服务文件
    vi /usr/lib/systemd/system/tomcat.service
    # 写入以下内容(注意JAVA_HOME和Tomcat路径匹配)
    [Unit]
    Description=Tomcat
    After=network.target
    
    [Service]
    Type=forking
    Environment="JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk"
    ExecStart=/usr/local/tomcat/bin/startup.sh
    ExecStop=/usr/local/tomcat/bin/shutdown.sh
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    # 重新加载服务配置
    systemctl daemon-reload
    # 设置开机自启
    systemctl enable tomcat
    # 启动/停止/查看状态
    systemctl start tomcat
    systemctl stop tomcat
    systemctl status tomcat
(3)安装 MySQL(若项目依赖)
  • 安装 MySQL 8.0(主流版本): bash

    运行

    复制代码
    # 配置MySQL yum源
    wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    rpm -ivh mysql80-community-release-el7-3.noarch.rpm
    # 安装MySQL服务器
    yum install -y mysql-community-server
    # 启动MySQL
    systemctl start mysqld
    # 设置开机自启
    systemctl enable mysqld
    # 查看初始密码
    grep 'temporary password' /var/log/mysqld.log
    # 登录MySQL(输入初始密码)
    mysql -uroot -p
    # 修改密码(必须包含大小写、数字、特殊字符)
    ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
    # 授权远程访问(生产环境建议限制IP)
    use mysql;
    update user set host='%' where user='root';
    flush privileges;
    # 退出MySQL
    exit;

二、项目打包(本地操作)

JavaWeb 项目需打包为 WAR 包(或 JAR 包,若为 SpringBoot),以 Maven 项目为例:

1. 普通 JavaWeb 项目(SSM/SSH 等)

  • 本地 IDE(Eclipse/IDEA)中,确认项目配置正确(数据库连接指向服务器 IP);
  • 使用 Maven 打包:
    • 方式 1:IDE 中执行clean package(跳过测试:clean package -DskipTests);
    • 方式 2:本地 cmd 执行mvn clean package -DskipTests
  • 打包完成后,在项目的target目录下生成xxx.war文件。

2. SpringBoot 项目(可打 WAR/JAR)

  • 若打 WAR 包:
    1. 修改 pom.xml,将打包方式改为 war:<packaging>war</packaging>

    2. 排除内置 Tomcat: xml

      复制代码
      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-tomcat</artifactId>
          <scope>provided</scope>
      </dependency>
    3. 启动类继承SpringBootServletInitializer并重写configure方法:

      java

      运行

      复制代码
      @SpringBootApplication
      public class DemoApplication extends SpringBootServletInitializer {
          @Override
          protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
              return application.sources(DemoApplication.class);
          }
          public static void main(String[] args) {
              SpringApplication.run(DemoApplication.class, args);
          }
      }
    4. 执行mvn clean package -DskipTests生成 WAR 包。

  • 若打 JAR 包:直接执行mvn clean package -DskipTests,无需修改上述配置,生成 JAR 包(可直接通过 java -jar 运行)。

三、上传项目到服务器

1. 上传 WAR 包(部署到 Tomcat)

  • 方式 1:使用 SFTP 工具(FinalShell/Xshell 自带),将 WAR 包上传到服务器的/usr/local/tomcat/webapps目录;

  • 方式 2:使用 scp 命令(本地终端执行): bash

    运行

    复制代码
    scp 本地WAR包路径 root@服务器IP:/usr/local/tomcat/webapps
    # 示例:scp D:\demo.war root@123.45.67.89:/usr/local/tomcat/webapps
  • Tomcat 会自动解压 WAR 包,访问路径为:http://服务器IP:8080/WAR包名(若 WAR 包名为 ROOT.war,则直接访问http://服务器IP:8080)。

2. 运行 JAR 包(SpringBoot 专属)

  • 上传 JAR 包到服务器(如/usr/local/project目录);

  • 启动 JAR 包: bash

    运行

    复制代码
    # 进入目录
    cd /usr/local/project
    # 前台启动(关闭终端则停止)
    java -jar demo.jar
    # 后台启动(推荐)
    nohup java -jar demo.jar > project.log 2>&1 &
    # 查看启动日志
    tail -f project.log
    # 停止JAR包(先查进程ID,再杀死)
    ps -ef | grep demo.jar
    kill -9 进程ID
  • (可选)设置 JAR 包开机自启: bash

    运行

    复制代码
    vi /usr/lib/systemd/system/demo.service
    # 写入内容
    [Unit]
    Description=Demo Project
    After=network.target mysqld.service
    
    [Service]
    Type=simple
    User=root
    ExecStart=/usr/bin/java -jar /usr/local/project/demo.jar
    ExecStop=/bin/kill -15 $MAINPID
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    # 生效配置
    systemctl daemon-reload
    systemctl enable demo
    systemctl start demo

四、部署后配置与测试

1. 数据库配置

  • 本地项目中修改数据库连接配置(jdbc.url 指向服务器 MySQL 的 IP,用户名 / 密码为服务器 MySQL 的账号);

  • 服务器 MySQL 中创建项目所需的数据库: bash

    运行

    复制代码
    mysql -uroot -p
    create database 数据库名 character set utf8mb4;
    exit;
  • 导入项目的 SQL 脚本(可选): bash

    运行

    复制代码
    # 方式1:本地上传SQL文件到服务器,执行导入
    mysql -uroot -p 数据库名 < /usr/local/project/sql/demo.sql
    # 方式2:远程导入(本地终端执行)
    mysqldump -h服务器IP -uroot -p 数据库名 > demo.sql

2. 项目访问测试

  • 若为 WAR 包:访问http://服务器公网IP:8080/项目名,能正常显示页面 / 接口返回数据则部署成功;
  • 若为 JAR 包:访问http://服务器公网IP:项目端口/接口路径(端口为 application.yml 中配置的 server.port)。

3. 常见问题排查

  • Tomcat 启动失败:查看日志tail -f /usr/local/tomcat/logs/catalina.out
  • 项目访问 404:检查 WAR 包是否解压、访问路径是否正确、Tomcat 端口是否开放;
  • 数据库连接失败:检查服务器 MySQL 是否允许远程访问、防火墙是否开放 3306 端口、账号密码是否正确。

五、生产环境优化(可选)

  1. 修改 Tomcat 端口 :编辑/usr/local/tomcat/conf/server.xml,将 8080 改为 80(默认 HTTP 端口,访问无需加端口);
  2. 配置 Tomcat 线程池 :优化server.xml中的 Connector 配置,提高并发能力;
  3. 配置 HTTPS:申请 SSL 证书(阿里云 / 腾讯云免费),在 Tomcat 中配置 HTTPS 端口 443;
  4. 日志管理:定期清理 Tomcat / 项目日志,避免占用磁盘空间;
  5. 监控:安装 Prometheus+Grafana 监控服务器和项目运行状态。

总结

  1. 部署核心步骤:服务器环境配置(JDK+Tomcat/MySQL)→ 本地项目打包 → 上传到服务器 → 启动测试;
  2. 不同项目类型部署差异:普通 JavaWeb 打 WAR 包放 Tomcat 的 webapps 目录,SpringBoot 可打 WAR 包(依赖 Tomcat)或 JAR 包(独立运行);
  3. 排错关键:优先查看日志(Tomcat 的 catalina.out、项目日志),检查端口 / 权限 / 数据库连接三大核心点。
相关推荐
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz3 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
古城小栈3 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
程序猿阿伟3 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome