在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量服务器或 AWS Lightsail)上部署 Node.js 或 Python 项目,主要步骤如下。以下是通用的部署流程,适用于大多数 Linux 系统(如 Ubuntu/CentOS)。
🛠️ 前提准备
-
购买并登录轻量服务器
- 获取公网 IP 地址
- 使用 SSH 登录(如
ssh root@your_server_ip)
-
更新系统
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian # 或 sudo yum update -y # CentOS/RHEL
✅ 部署 Node.js 项目
1. 安装 Node.js 和 npm
推荐使用 NodeSource 提供的安装方式:
# 添加 NodeSource 源(以 Node.js 18 为例)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# 验证安装
node --version
npm --version
2. 上传项目代码
方式一:使用 Git 克隆
git clone https://github.com/yourname/your-node-project.git
cd your-node-project
npm install
方式二:本地打包上传(使用 scp 或 SFTP 工具)
# 本地执行
scp -r ./your-project root@your-server-ip:/root/your-project
3. 启动项目(建议使用 PM2 进程管理)
安装 PM2:
npm install -g pm2
启动项目:
pm2 start app.js --name "my-node-app"
设置开机自启:
pm2 startup
pm2 save
4. 配置反向X_X(Nginx)
安装 Nginx:
sudo apt install nginx -y
配置站点(/etc/nginx/sites-available/myapp):
server {
listen 80;
server_name your-domain.com; # 或服务器IP
location / {
proxy_pass http://127.0.0.1:3000; # 假设Node监听3000端口
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
}
}
启用配置:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
✅ 部署 Python 项目(以 Flask/Django 为例)
1. 安装 Python 和 pip
Ubuntu 示例:
sudo apt install python3 python3-pip python3-venv -y
2. 上传代码 & 创建虚拟环境
git clone https://github.com/yourname/your-python-project.git
cd your-python-project
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
3. 使用 Gunicorn 启动(生产推荐)
安装 Gunicorn:
pip install gunicorn
测试运行(Flask 示例):
gunicorn -w 4 -b 127.0.0.1:8000 app:app
-w 4: 4个工作进程
app:app: 模块名:应用变量名
4. 使用 PM2 或 systemd 管理进程(推荐)
方法一:使用 PM2(跨语言支持)
npm install -g pm2
pm2 start "gunicorn -w 4 -b 127.0.0.1:8000 app:app" --name "my-python-app"
pm2 startup
pm2 save
方法二:使用 systemd(更原生)
创建服务文件 /etc/systemd/system/my-python-app.service:
[Unit]
Description=Gunicorn instance for my Python app
After=network.target
[Service]
User=root
Group=www-data
WorkingDirectory=/root/your-python-project
Environment="PATH=/root/your-python-project/venv/bin"
ExecStart=/root/your-python-project/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl start my-python-app
sudo systemctl enable my-python-app
5. 配置 Nginx 反向X_X(同 Node.js 类似)
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重启 Nginx:
sudo systemctl reload nginx
🔐 安全与优化建议
-
开放防火墙端口
- 轻量服务器控制台 → 安全组 → 放行
80(HTTP)、443(HTTPS)
- 轻量服务器控制台 → 安全组 → 放行
-
使用 HTTPS(Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your-domain.com -
设置域名解析
- 将域名 A 记录指向服务器公网 IP
-
定期备份和监控
- 备份代码、数据库
- 使用
pm2 monit或htop监控资源
📌 总结
| 步骤 | Node.js | Python |
|---|---|---|
| 安装运行环境 | Node.js + npm | Python + pip + venv |
| 进程管理 | PM2 推荐 | PM2 或 systemd + Gunicorn |
| Web 服务器 | Nginx 反向X_X | Nginx 反向X_X |
| 生产启动命令 | pm2 start app.js |
gunicorn -b 127.0.0.1:8000 ... |
| 自动重启 | pm2 startup |
systemctl enable xxx |
✅ 完成以上步骤后,你的项目就可以通过公网 IP 或域名访问了!
如果你提供具体的项目类型(如 Express、FastAPI、Django),我可以给出更详细的部署脚本。需要吗?
CLOUD技术博