在轻量服务器上部署 Python 或 Node.js 应用,通常遵循以下通用流程。下面分别以 Python(Flask/Django) 和 Node.js(Express) 为例,提供从环境准备到上线的完整步骤(以 Ubuntu 22.04 LTS + Nginx 反向X_X为例):
🌐 一、前期准备
- 购买并登录轻量服务器(如阿里云、腾讯云、AWS Lightsail 等)
- SSH 登录:
ssh root@your_server_ip - 更新系统 & 安装基础工具:
sudo apt update && sudo apt upgrade -y sudo apt install -y curl git wget vim ufw
🐍 二、部署 Python 应用(以 Flask 为例)
1️⃣ 安装 Python 与虚拟环境
# 安装 Python 3.10+ 和 pip
sudo apt install -y python3-pip python3-venv
# 创建项目目录
mkdir ~/my_flask_app && cd ~/my_flask_app
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖(假设你的 requirements.txt 已存在)
pip install flask gunicorn
✅
gunicorn是生产级 WSGI 服务器,比flask run更适合部署。
2️⃣ 编写简单 Flask 应用(app.py)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello from Flask on Lightweight Server!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
3️⃣ 使用 systemd 管理 Gunicorn 服务
创建服务文件 /etc/systemd/system/myflask.service:
[Unit]
Description=Gunicorn instance to serve my_flask_app
After=network.target
[Service]
User=ubuntu # 替换为你的用户名
Group=www-data
WorkingDirectory=/home/ubuntu/my_flask_app
Environment="PATH=/home/ubuntu/my_flask_app/venv/bin"
ExecStart=/home/ubuntu/my_flask_app/venv/bin/gunicorn
--workers 3
--bind unix:/home/ubuntu/my_flask_app/myflask.sock
myflask:app
[Install]
WantedBy=multi-user.target
⚠️ 注意:将
myflask:app中的myflask改为实际模块名(即app.py去掉.py)。
启用并启动服务:
sudo systemctl daemon-reload
sudo systemctl enable myflask
sudo systemctl start myflask
sudo systemctl status myflask
🟢 三、部署 Node.js 应用(以 Express 为例)
1️⃣ 安装 Node.js(推荐用 nvm 或官方源)
# 方法一:使用 NodeSource 源(推荐 LTS 版本)
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
# 验证
node -v && npm -v
2️⃣ 创建项目并安装依赖
mkdir ~/my_node_app && cd ~/my_node_app
npm init -y
npm install express pm2
示例 index.js:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello from Node.js!');
});
app.listen(port, () => {
console.log(`App running at http://localhost:${port}`);
});
3️⃣ 使用 PM2 管理进程(生产推荐)
pm2 start index.js --name my-node-app
pm2 save
pm2 startup # 生成并执行自动启动命令(按提示操作)
✅ PM2 支持进程守护、日志管理、自动重启,比直接
node app.js更可靠。
🔒 四、配置 Nginx 反向X_X(Python & Node 通用)
1️⃣ 安装 Nginx
sudo apt install -y nginx
2️⃣ 配置站点(以 Python Flask 为例)
编辑 /etc/nginx/sites-available/myflask:
server {
listen 80;
server_name your_domain_or_ip;
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/my_flask_app/myflask.sock;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
对 Node.js 应用,将
proxy_pass改为http://127.0.0.1:3000(PM2 默认端口)。
启用配置:
sudo ln -s /etc/nginx/sites-available/myflask /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
3️⃣ 开放防火墙(UFW)
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
sudo ufw enable
🛡️ 五、安全加固建议
- ✅ 禁用 root SSH 登录,改用密钥认证
- ✅ 安装 Fail2Ban 防暴力破解:
sudo apt install fail2ban sudo systemctl enable fail2ban - ✅ 定期更新系统:
sudo apt update && sudo apt upgrade -y - ✅ 使用 Let’s Encrypt 免费 HTTPS(可选):
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d your_domain
📦 六、部署方式对比速查表
| 方案 | Python | Node.js | 适用场景 |
|---|---|---|---|
| Gunicorn + Nginx | ✅ 推荐 | ❌ | 高并发、稳定生产 |
| PM2 + Nginx | ⚠️ 可用但非最佳 | ✅ 强烈推荐 | JS/TS 生态主流方案 |
| Docker | ✅ 灵活隔离 | ✅ 同上 | 多服务、CI/CD 集成 |
| Serverless/FaaS | AWS Lambda | Vercel/Netlify | 无运维、弹性伸缩需求 |
需要我为你生成:
- 📄 完整的
requirements.txt/package.json模板? - 🐳 Docker Compose 部署脚本(含 Nginx + App)?
- 🔄 GitHub Actions 自动化部署 CI/CD 配置?
欢迎告诉我你的具体技术栈和需求,我可以进一步定制方案!
CLOUD云计算