在轻量服务器上部署 Node.js 或 Python 项目,核心步骤包括:环境配置 → 代码上传 → 依赖安装 → 进程管理 → 域名/端口映射。以下是详细指南:
一、通用准备(适用于两种语言)
1. 登录服务器
ssh root@your_server_ip
2. 更新系统 & 安装基础工具
sudo apt update && sudo apt upgrade -y # Debian/Ubuntu
# 或
sudo yum update -y # CentOS/RHEL
# 安装常用工具
sudo apt install curl git unzip wget -y
3. 创建非 root 用户(推荐)
adduser deploy
usermod -aG sudo deploy
su - deploy
cd ~
✅ 安全最佳实践:避免直接用 root 运行应用。
二、部署 Node.js 项目
1. 安装 Node.js(使用 nvm 或官方二进制包)
方法 A:使用 nvm(灵活版本管理)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts # 安装最新 LTS 版本
node -v # 验证
npm -v # 验证
方法 B:使用 NodeSource 仓库(稳定生产环境推荐)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
2. 上传项目代码
# 方式1:Git 克隆
git clone https://github.com/yourusername/your-project.git
cd your-project
# 方式2:SCP 上传本地文件
scp -r ./local-project/* deploy@your_server_ip:/home/deploy/your-project
3. 安装依赖
npm install # 或 yarn install / pnpm install
4. 启动应用(开发模式测试)
npm start # 确保 package.json 中有 "start" 脚本
# 或
node app.js
⚠️ 默认监听
localhost:3000,外部无法访问。需配置防火墙或反向X_X。
5. 使用 PM2 进行进程守护(生产环境必备)
npm install -g pm2
# 启动并命名进程
pm2 start app.js --name my-app
# 开机自启
pm2 startup systemd
pm2 save
# 查看状态
pm2 list
pm2 logs my-app
6. 配置 Nginx 反向X_X(可选但推荐)
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/default
替换为:
server {
listen 80;
server_name your_domain.com; # 或 IP
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
sudo nginx -t # 测试配置
sudo systemctl restart nginx
7. 设置 HTTPS(Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com
三、部署 Python 项目
1. 安装 Python 和 pip
sudo apt install python3 python3-pip python3-venv -y
python3 --version
pip3 --version
2. 创建虚拟环境(隔离依赖)
cd ~/your-project
python3 -m venv venv
source venv/bin/activate
3. 安装依赖
# 假设你有 requirements.txt
pip install -r requirements.txt
# 常见框架依赖示例:
# Flask: flask gunicorn
# Django: django psycopg2-binary gunicorn
# FastAPI: fastapi uvicorn[standard]
4. 启动应用(开发模式测试)
Flask 示例
export FLASK_APP=app.py
flask run --host=0.0.0.0 --port=5000
Django 示例
python manage.py migrate
python manage.py collectstatic
python manage.py runserver 0.0.0.0:8000
FastAPI 示例
uvicorn main:app --host 0.0.0.0 --port 8000
⚠️ 同样需要反向X_X才能从外部访问。
5. 使用 Gunicorn + Nginx(生产环境推荐)
安装 Gunicorn
pip install gunicorn
启动 Gunicorn
# Flask
gunicorn -w 4 -b 127.0.0.1:5000 app:app
# Django
gunicorn -w 4 -b 127.0.0.1:8000 your_project.wsgi:application
# FastAPI
gunicorn -w 4 -b 127.0.0.1:8000 main:app
使用 systemd 管理 Gunicorn(替代 Supervisor/PM2)
创建服务文件:
sudo nano /etc/systemd/system/myapp.service
内容示例(Flask):
[Unit]
Description=Gunicorn instance to serve my Flask app
After=network.target
[Service]
User=deploy
Group=www-data
WorkingDirectory=/home/deploy/my-flask-app
Environment="PATH=/home/deploy/my-flask-app/venv/bin"
ExecStart=/home/deploy/my-flask-app/venv/bin/gunicorn --workers 4 --bind unix:myapp.sock -m 007 wsgi:app
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp
6. 配置 Nginx 反向X_X
修改 /etc/nginx/sites-available/default:
server {
listen 80;
server_name your_domain.com;
location / {
include proxy_params;
proxy_pass http://unix:/home/deploy/my-flask-app/myapp.sock;
}
}
sudo nginx -t
sudo systemctl reload nginx
7. 设置 HTTPS
同 Node.js 部分,使用 Certbot:
sudo certbot --nginx -d your_domain.com
四、关键注意事项
| 项目 | 说明 |
|---|---|
| 防火墙 | 确保只开放 80/443 端口,SSH 端口(如 22)限制 IP 访问 |
| 数据库 | MySQL/PostgreSQL 需单独安装,并配置远程访问权限 |
| 环境变量 | 使用 .env 文件 + dotenv 库,或通过 systemd 的 Environment= 注入 |
| 日志监控 | PM2(Node)或 journalctl(systemd,Python)查看日志 |
| 自动重启 | systemd 或 PM2 可配置崩溃后自动重启 |
| 备份策略 | 定期备份代码、数据库、配置文件 |
五、快速对比总结
| 步骤 | Node.js | Python |
|---|---|---|
| 运行时 | Node.js + PM2 | Python + Gunicorn + systemd |
| 进程管理 | pm2 |
systemd |
| Web 服务器 | Nginx 反向X_X | Nginx 反向X_X(通过 Unix Socket) |
| 典型命令 | pm2 start app.js |
systemctl start myapp |
| 优势 | 事件驱动、适合 I/O 密集型 | 生态丰富、适合数据科学/AI |
六、一键检查清单
✅ SSH 登录成功
✅ 创建非 root 用户
✅ 安装对应运行时(Node/Python)
✅ 上传代码并安装依赖
✅ 使用进程管理器守护应用
✅ 配置 Nginx 反向X_X
✅ 设置 HTTPS(Certbot)
✅ 开放必要端口(80/443)
✅ 测试访问 http://your_domain.com
按照以上步骤,你可以稳定地在轻量服务器上部署 Node.js 或 Python 项目。如有特定框架(如 Next.js、Django、FastAPI),可进一步细化配置。
轻量云Cloud