一、部署前准备
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;
- 方式 1:IDE 中执行
- 打包完成后,在项目的
target目录下生成xxx.war文件。
2. SpringBoot 项目(可打 WAR/JAR)
- 若打 WAR 包:
-
修改 pom.xml,将打包方式改为 war:
<packaging>war</packaging>; -
排除内置 Tomcat: xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> -
启动类继承
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); } } -
执行
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 端口、账号密码是否正确。
五、生产环境优化(可选)
- 修改 Tomcat 端口 :编辑
/usr/local/tomcat/conf/server.xml,将 8080 改为 80(默认 HTTP 端口,访问无需加端口); - 配置 Tomcat 线程池 :优化
server.xml中的 Connector 配置,提高并发能力; - 配置 HTTPS:申请 SSL 证书(阿里云 / 腾讯云免费),在 Tomcat 中配置 HTTPS 端口 443;
- 日志管理:定期清理 Tomcat / 项目日志,避免占用磁盘空间;
- 监控:安装 Prometheus+Grafana 监控服务器和项目运行状态。
总结
- 部署核心步骤:服务器环境配置(JDK+Tomcat/MySQL)→ 本地项目打包 → 上传到服务器 → 启动测试;
- 不同项目类型部署差异:普通 JavaWeb 打 WAR 包放 Tomcat 的 webapps 目录,SpringBoot 可打 WAR 包(依赖 Tomcat)或 JAR 包(独立运行);
- 排错关键:优先查看日志(Tomcat 的 catalina.out、项目日志),检查端口 / 权限 / 数据库连接三大核心点。