前提条件

  1. 已购买阿里云 ECS 云服务器(或轻量应用服务器)
  2. 系统为 Linux(推荐 Ubuntu 22.04 / CentOS 7+)
  3. 本地电脑可 SSH 连接服务器
  4. 你的项目代码已准备好(例如在 GitHub 或本地)

🔧 第一步:登录服务器

1. 获取公网 IP

在阿里云控制台 → 云服务器 ECS → 实例 → 找到你的 公网 IP 地址

2. 用 SSH 登录(Windows 可用 PowerShell / Xshell;Mac/Linux 用终端)

bash

ssh root@你的公网IP

输入密码(或使用密钥)

⚠️ 首次登录建议创建普通用户(安全),但为简化,这里用 root

🔒 第二步:配置安全组(关键!)

在阿里云控制台:

❗ 如果不开放端口,外网无法访问你的服务!

  • 进入 ECS 实例 → 安全组 → 配置规则
  • 开放端口(根据你的项目):
    • HTTP: 80
    • HTTPS: 443
    • 自定义端口(如 Flask 默认 5000):5000
    • SSH: 22(已默认开放)

📦 第三步:安装必要软件

以 Ubuntu 22.04 为例(CentOS 用 yum 替代 apt):

bash

# 更新系统
apt update && apt upgrade -y

# 安装 Git、Python、pip、Nginx(反向代理用)
apt install -y git python3 python3-pip nginx

# 检查 Python 版本
python3 --version

其他项目类型:

  • Node.js:安装 nodejs npm
  • Java:安装 openjdk-17-jdk
  • 静态网站:只需 Nginx

🚀 第四步:上传并部署你的项目(可以新开一个powershell,更方便)

方式 A:从 GitHub 克隆(推荐)

bash

cd /root
git clone https://github.com/你的用户名/你的项目.git
cd 你的项目

方式 B:本地上传(用 scp

使用本地地址

bash

# 本地终端执行(非服务器)
scp -r ./my_project root@你的IP:/root/
# 将会在/root/下创建一个和你的项目同名的文件夹,并把所有的文件内容放到里面
例子:

✅ 方法:使用 scp 命令(Secure Copy)

scp 是基于 SSH 的安全文件传输命令,直接通过终端就能把本地文件夹或文件上传到服务器,不需要额外工具(Windows 10/11、macOS、Linux 都自带)。


🔧 操作步骤(以你的本地项目为例)

假设:

  • 你的 本地项目路径 是:C:\my_project(Windows)或 /Users/yourname/my_project(Mac/Linux)

  • 你的 阿里云服务器公网 IP 是:47.95.123.45

  • 你用的用户名是:root(也可以是其他用户)


🖥️ 在你 本地电脑的终端/命令行 执行:

▶️ Windows(PowerShell 或 CMD)

powershell

# 注意:路径用正斜杠 / 或双反斜杠 \\
scp -r C:/my_project root@47.95.123.45:/root/

如果提示 scp 不是命令(旧版 Windows),可改用 WSL 或安装 OpenSSH 客户端

安装依赖(以 Python Flask 为例)

bash

pip3 install -r requirements.txt

▶️ 第五步:运行你的项目(临时测试)

bash

# Flask 示例(确保 app.py 中 host='0.0.0.0')
python3 app.py

✅ 此时在浏览器访问 http://你的IP:5000 应能看到页面
❌ 但关闭 SSH 后进程会退出 → 需要用 后台服务管理

🔄 第六步:用 systemd 管理服务(持久运行)

创建服务文件:

bash

nano /etc/systemd/system/myapp.service

粘贴以下内容(Flask 示例):

ini

[Unit]
Description=My Flask App
After=network.target

[Service]
User=root
WorkingDirectory=/root/你的项目
ExecStart=/usr/bin/python3 /root/你的项目/app.py
Restart=always

[Install]
WantedBy=multi-user.target

启用服务:

bash

systemctl daemon-reexec
systemctl start myapp
systemctl enable myapp  # 开机自启

检查状态:

bash

systemctl status myapp

🌐 第七步:配置 Nginx 反向代理(推荐)

编辑 Nginx 配置:

bash

nano /etc/nginx/sites-available/default

修改 server 块:

nginx

server {
    listen 80;
    server_name your_domain_or_ip;

    location / {
        proxy_pass http://127.0.0.1:5000;  # 转发到 Flask
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

重载 Nginx:

bash

nginx -t && systemctl reload nginx

✅ 现在访问 http://你的IP(无需端口)即可看到网站!

🛡️ 第八步:基础安全建议

  1. 不要长期用 root → 创建普通用户 + sudo
  2. 设置防火墙(UFW):
    bash
    ufw allow 22
    ufw allow 80
    ufw allow 443
    ufw enable
  3. 定期更新系统apt upgrade -y
  4. 敏感信息不要硬编码(用环境变量)

📌 不同项目类型简要说明

表格

项目类型关键步骤差异
Node.js用 npm installExecStart=/usr/bin/node app.js
Django需 collectstatic,用 Gunicorn + Nginx
静态网站直接把文件放 /var/www/html,Nginx 指向即可
Java JARExecStart=/usr/bin/java -jar app.jar

更多推荐