凌峰创科服务平台

Linux服务器部署Web项目,具体步骤有哪些?

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

Linux服务器部署Web项目,具体步骤有哪些?-图1
(图片来源网络,侵删)

目录

  1. 第一部分:准备工作

    • 1 获取一台 Linux 服务器
    • 2 连接服务器
    • 3 更新系统与安装基础工具
    • 4 创建专用部署用户
    • 5 配置防火墙
    • 6 安装必要软件 (JDK, Nginx, MySQL)
  2. 第二部分:部署应用

    • 1 准备你的项目 (打包)
    • 2 上传项目到服务器
    • 3 配置应用 (环境变量、数据库连接等)
    • 4 使用 Nginx 作为反向代理
    • 5 配置 Systemd 服务 (开机自启、管理进程)
    • 6 启动并检查应用
  3. 第三部分:进阶与最佳实践

    • 1 使用 Git 进行版本控制部署
    • 2 使用 Docker 容器化部署
    • 3 配置 SSL 证书 (HTTPS)
    • 4 日志管理
    • 5 自动化部署 (CI/CD)

第一部分:准备工作

1 获取一台 Linux 服务器

你可以选择:

Linux服务器部署Web项目,具体步骤有哪些?-图2
(图片来源网络,侵删)
  • 云服务器: 阿里云、腾讯云、AWS、Google Cloud、DigitalOcean 等,它们提供按需付费的实例,开箱即用。
  • 本地虚拟机: 使用 VMware, VirtualBox 等软件在自己的电脑上创建一个虚拟机。
  • 物理服务器: 如果你有一台闲置的电脑。

对于初学者,推荐使用云服务器,例如阿里云的轻量应用服务器或腾讯云的 CVM,通常预装了 CentOS 或 Ubuntu 系统。

2 连接服务器

使用 SSH (Secure Shell) 客户端连接你的服务器,Windows 用户推荐使用 PuTTYWindows 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 等。

Linux服务器部署Web项目,具体步骤有哪些?-图3
(图片来源网络,侵删)
# 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 包中

  1. 创建配置文件/home/deployer/ 目录下创建一个 config 目录,并放置你的 application.propertiesapplication.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
  2. 创建启动脚本 创建一个 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
分享:
扫描分享到社交APP
上一篇
下一篇