云服务器部署 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、项目日志),检查端口 / 权限 / 数据库连接三大核心点。
相关推荐
清泉影月2 小时前
Linux:Squid正向代理实现内网访问互联网
linux·运维·服务器
霖霖总总2 小时前
[小技巧39]Linux 文件与命令查找工具(which、whereis、locate、find)全面解析
linux·运维
ayaya_mana2 小时前
在 CentOS 7/RHEL 7 上安装并切换至新版内核
linux·运维·centos
康康的AI博客2 小时前
工业数据中台:PLC、SCADA、MES的实时协同架构
java·服务器·网络
三不原则3 小时前
故障案例:数据库慢查询导致交易延迟,AIOps 如何自动定位?
运维·数据库
gzxx2007sddx3 小时前
ubuntu挂载访问windows的共享文件夹
linux·运维·ubuntu·挂载·共享
市安3 小时前
基于 LVS+Keepalived+NFS 的高可用 Web 集群构建与验证
运维·服务器·网络·lvs·keepalived·ipvsadm
AC赳赳老秦3 小时前
Dify工作流+DeepSeek:运维自动化闭环(数据采集→报告生成)
android·大数据·运维·数据库·人工智能·golang·deepseek
鹿角片ljp3 小时前
Java网络编程入门:从Socket到多线程服务器
java·服务器·网络