下面我将为你提供一个从零开始、全面且结构化的部署指南,涵盖了从准备工作到生产环境部署的完整流程,我们将以一个典型的 Java Spring Boot 项目为例,因为它的部署流程比较通用,也适用于 Python (Django/Flask)、Node.js 等后端应用。

目录
-
第一部分:准备工作
- 1 获取一台 Linux 服务器
- 2 连接服务器
- 3 更新系统与安装基础工具
- 4 创建专用部署用户
- 5 配置防火墙
- 6 安装必要软件 (JDK, Nginx, MySQL)
-
第二部分:部署应用
- 1 准备你的项目 (打包)
- 2 上传项目到服务器
- 3 配置应用 (环境变量、数据库连接等)
- 4 使用 Nginx 作为反向代理
- 5 配置 Systemd 服务 (开机自启、管理进程)
- 6 启动并检查应用
-
第三部分:进阶与最佳实践
- 1 使用 Git 进行版本控制部署
- 2 使用 Docker 容器化部署
- 3 配置 SSL 证书 (HTTPS)
- 4 日志管理
- 5 自动化部署 (CI/CD)
第一部分:准备工作
1 获取一台 Linux 服务器
你可以选择:

- 云服务器: 阿里云、腾讯云、AWS、Google Cloud、DigitalOcean 等,它们提供按需付费的实例,开箱即用。
- 本地虚拟机: 使用 VMware, VirtualBox 等软件在自己的电脑上创建一个虚拟机。
- 物理服务器: 如果你有一台闲置的电脑。
对于初学者,推荐使用云服务器,例如阿里云的轻量应用服务器或腾讯云的 CVM,通常预装了 CentOS 或 Ubuntu 系统。
2 连接服务器
使用 SSH (Secure Shell) 客户端连接你的服务器,Windows 用户推荐使用 PuTTY 或 Windows Terminal + WSL,macOS 和 Linux 用户自带 ssh 命令。
# 基本语法 ssh username@server_ip_address # 示例:使用 root 用户连接 IP 为 123.45.67.89 的服务器 ssh root@123.45.67.89 ``首次连接时,系统会提示你确认服务器的指纹,输入 `yes` 即可。 #### **1.3 更新系统与安装基础工具** 连接成功后,首先更新系统软件包列表并升级已安装的包。 **对于 Debian/Ubuntu 系统:** ```bash sudo apt update sudo apt upgrade -y
对于 CentOS/RHEL 系统:
sudo yum update -y
然后安装一些常用的基础工具,如 wget, curl, vim, net-tools 等。

# Debian/Ubuntu sudo apt install -y wget curl vim net-tools # CentOS/RHEL sudo yum install -y wget curl vim net-tools
4 创建专用部署用户
强烈建议不要直接使用 root 用户进行日常操作,创建一个普通用户,并赋予 sudo 权限。
# 创建一个名为 deployer 的用户 adduser deployer # 将 deployer 用户添加到 sudo 组 usermod -aG sudo deployer # 切换到 deployer 用户 su - deployer
5 配置防火墙
为了安全,需要开放必要的端口(如 SSH 端口 22,HTTP 端口 80,HTTPS 端口 443),并关闭其他不必要的端口。
对于 Ubuntu (使用 UFW):
# 允许 SSH 连接 (默认已开启,但显式写出是好习惯) sudo ufw allow OpenSSH # 允许 HTTP 流量 sudo ufw allow http # 允许 HTTPS 流量 sudo ufw allow https # 启用防火墙 sudo ufw enable
对于 CentOS (使用 Firewalld):
# 启动 firewalld 服务 sudo systemctl start firewalld sudo systemctl enable firewalld # 添加端口 sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https # 重新加载防火墙配置 sudo firewall-cmd --reload
6 安装必要软件
根据你的项目需求安装运行环境。
-
Java (以 JDK 17 为例):
# Ubuntu/Debian sudo apt update sudo apt install -y openjdk-17-jdk # CentOS/RHEL sudo yum install -y java-17-openjdk
-
Nginx (Web 服务器和反向代理):
# Ubuntu/Debian sudo apt install -y nginx # CentOS/RHEL sudo yum install -y nginx
-
MySQL (数据库):
# Ubuntu/Debian sudo apt install -y mysql-server # CentOS/RHEL sudo yum install -y mysql-server
安装后需要运行安全脚本进行初始配置:
sudo mysql_secure_installation
根据提示设置 root 密码、移除匿名用户等。
第二部分:部署应用
假设我们有一个已经开发完成的 Spring Boot 项目。
1 准备你的项目 (打包)
在本地开发机器上,使用 Maven 或 Gradle 将项目打包成一个可执行的 JAR 文件。
# 在项目根目录下执行 mvn clean package -DskipTests
执行成功后,你会在 target 目录下找到一个类似 my-web-app-0.0.1-SNAPSHOT.jar 的文件。
2 上传项目到服务器
有多种方式可以将 JAR 文件上传到服务器:
-
使用
scp(简单直接)# 在本地终端执行 scp /path/to/your/my-web-app-0.0.1-SNAPSHOT.jar deployer@123.45.67.89:/home/deployer/
-
使用
rsync(适合大文件和增量同步)# 在本地终端执行 rsync -avz /path/to/your/my-web-app-0.0.1-SNAPSHOT.jar deployer@123.45.67.89:/home/deployer/
-
使用 SFTP 客户端 (如 FileZilla, MobaXterm) 通过图形界面拖拽上传,非常直观。
上传后,登录服务器检查文件是否已成功到达 /home/deployer/ 目录。
3 配置应用
应用程序通常需要一些配置,例如数据库连接、API 密钥等。最佳实践是不要将配置信息硬编码在 JAR 包中。
-
创建配置文件 在
/home/deployer/目录下创建一个config目录,并放置你的application.properties或application.yml文件。mkdir /home/deployer/config vim /home/deployer/config/application.properties
在
application.properties中写入你的配置:server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC spring.datasource.username=myuser spring.datasource.password=mypassword
-
创建启动脚本 创建一个
start.sh脚本来启动你的应用,并指定配置文件路径。vim /home/deployer/start.sh
#!/bin/bash # 定义应用名和JAR文件名 APP_NAME="my-web-app" JAR_FILE="$APP_NAME-0.0.1-SNAPSHOT.jar" # 定义配置文件路径 CONFIG_DIR="/home/deployer/config" # 定义日志文件路径 LOG_FILE="/var/log/$APP_NAME.log" # 检查JAR文件是否存在 if [ ! -f "$JAR_FILE" ]; then echo "Error: JAR file not found: $JAR_FILE
