如何在轻量服务器上部署Node.js或Python项目?

在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量服务器等)上部署 Node.js 或 Python 项目,步骤如下。我们将分别介绍两种语言的部署流程。


🚀 一、准备工作

1. 购买并登录轻量服务器

  • 登录云服务商控制台(如腾讯云、阿里云),购买轻量服务器。
  • 选择操作系统:推荐 Ubuntu 20.04/22.04CentOS 7+
  • 获取公网 IP 和 SSH 登录凭据(用户名密码或密钥对)。

2. 使用 SSH 登录服务器

ssh root@你的服务器IP
# 或
ssh ubuntu@你的服务器IP

🟢 二、部署 Node.js 项目

1. 安装 Node.js 和 npm

推荐使用 nvm 管理 Node 版本:

# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# 重新加载 shell 配置
source ~/.bashrc

# 安装 Node.js(例如 v18)
nvm install 18
nvm use 18
node -v  # 检查版本
npm -v

2. 上传项目代码

方式一:使用 git clone

git clone https://github.com/yourname/your-node-project.git
cd your-node-project
npm install

方式二:本地打包上传(使用 scp

# 本地执行
scp -r ./your-project root@your-server-ip:/root/

3. 启动项目(建议使用 PM2 管理进程)

npm install -g pm2
pm2 start app.js --name "my-node-app"
pm2 startup    # 设置开机自启
pm2 save

4. 配置反向X_X(可选 Nginx)

安装 Nginx:

sudo apt update
sudo apt install nginx -y

配置 /etc/nginx/sites-available/default

server {
    listen 80;
    server_name your-domain.com;  # 或服务器IP

    location / {
        proxy_pass http://localhost: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;
    }
}

重启 Nginx:

sudo systemctl restart nginx

5. 开放防火墙端口

  • 在云控制台安全组中开放端口:80(HTTP)、443(HTTPS)、3000(若直接访问 Node)

🔵 三、部署 Python 项目(以 Flask/Django 为例)

1. 安装 Python 和 pip

Ubuntu 示例:

sudo apt update
sudo apt install python3 python3-pip python3-venv -y
python3 --version
pip3 --version

2. 创建虚拟环境并安装依赖

cd /path/to/your/project
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

3. 测试运行(开发模式)

python app.py  # 或 python manage.py runserver 0.0.0.0:8000

⚠️ 注意:不要用 app.run(debug=True) 上生产!

4. 使用 Gunicorn + Nginx 部署(推荐)

安装 Gunicorn

pip install gunicorn

启动 Gunicorn

gunicorn -w 4 -b 127.0.0.1:8000 app:app  # Flask 示例
# 或 Django: gunicorn myproject.wsgi:application -b 127.0.0.1:8000

配置 Nginx 反向X_X

编辑 /etc/nginx/sites-available/default

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;
    }
}

重启 Nginx:

sudo systemctl restart nginx

5. 使用 systemd 管理 Gunicorn 进程(可选)

创建服务文件 /etc/systemd/system/myflask.service

[Unit]
Description=Gunicorn for Flask App
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/root/my-flask-app
ExecStart=/root/my-flask-app/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl start myflask
sudo systemctl enable myflask

✅ 四、通用优化建议

项目 建议
域名绑定 在 DNS 解析域名到服务器 IP
HTTPS 使用 Let’s Encrypt + Certbot 免费申请 SSL 证书
日志监控 查看日志:pm2 logs / journalctl -u myflask
自动部署 可结合 GitHub Actions / Git Hooks 实现自动拉取更新

🧩 补充:常见问题

  • 端口未开放? → 检查云平台“安全组”规则是否放行对应端口(如 80、443、3000)
  • 项目无法访问? → 检查防火墙、Nginx 配置、后端服务是否监听 0.0.0.0
  • 内存不足? → 轻量服务器通常内存较小(1~2GB),避免运行过多服务

📌 总结

步骤 Node.js Python
安装环境 Node + npm + PM2 Python + venv + Gunicorn
运行服务 pm2 start gunicorn
反向X_X Nginx Nginx
进程管理 PM2 systemd
推荐结构 代码 → PM2 → Nginx → 网络 代码 → Gunicorn → Nginx → 网络

如果你提供具体的项目类型(如 Express、Flask、FastAPI、Django),我可以给出更详细的部署脚本和配置示例。欢迎继续提问!

未经允许不得转载:CLOUD云枢 » 如何在轻量服务器上部署Node.js或Python项目?