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

在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量服务器或 AWS Lightsail)上部署 Node.js 或 Python 项目,主要步骤如下。以下是通用的部署流程,适用于大多数 Linux 系统(如 Ubuntu/CentOS)。


🛠️ 前提准备

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

    • 获取公网 IP 地址
    • 使用 SSH 登录(如 ssh root@your_server_ip)
  2. 更新系统

    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

🔐 安全与优化建议

  1. 开放防火墙端口

    • 轻量服务器控制台 → 安全组 → 放行 80 (HTTP)、443 (HTTPS)
  2. 使用 HTTPS(Let’s Encrypt)

    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d your-domain.com
  3. 设置域名解析

    • 将域名 A 记录指向服务器公网 IP
  4. 定期备份和监控

    • 备份代码、数据库
    • 使用 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技术博 » 如何在轻量服务器上部署Node.js或Python项目?