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

服务器

在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量服务器、DigitalOcean Droplet 等)上部署 Node.js 或 Python 项目,可以按照以下通用步骤进行。这里以 Ubuntu 系统为例,介绍基本流程。


? 准备工作

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

    • 获取公网 IP 地址和 SSH 登录信息(用户名通常是 rootubuntu
    • 使用 SSH 连接:
      ssh root@your_server_ip
  2. 更新系统包

    sudo apt update && sudo apt upgrade -y

✅ 部署 Node.js 项目

1. 安装 Node.js 和 npm

推荐使用 NodeSource 提供的安装方式:

# 安装 Node.js 18.x
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
  • 方法二:使用 scp 本地上传
    scp -r ./local-project root@your_server_ip:/root/your-node-project

3. 安装依赖

npm install

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

安装 PM2:

npm install -g pm2

启动项目:

pm2 start app.js --name "my-node-app"

设置开机自启:

pm2 startup
pm2 save

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

安装 Nginx:

sudo apt install nginx -y

编辑配置文件:

sudo nano /etc/nginx/sites-available/default

添加反向X_X配置:

server {
    listen 80;
    server_name your_domain_or_ip;

    location / {
        proxy_pass http://127.0.0.1:3000;  # 假设你的 Node.js 服务运行在 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;
    }
}

重启 Nginx:

sudo systemctl restart nginx

✅ 部署 Python 项目(以 Flask/Django 为例)

1. 安装 Python 环境

Ubuntu 通常自带 Python3,检查版本:

python3 --version
pip3 --version

安装 pip(若没有):

sudo apt install python3-pip python3-venv -y

2. 上传项目代码

同上,使用 git clonescp

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

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

4. 启动服务(推荐使用 Gunicorn + Nginx)

安装 Gunicorn:

pip install gunicorn

测试启动(例如 Flask 项目):

gunicorn -w 4 -b 127.0.0.1:8000 app:app

注意:app:app 表示文件名:Flask 实例名

5. 使用 systemd 管理服务(后台运行)

创建服务文件:

sudo nano /etc/systemd/system/my-flask-app.service

内容示例:

[Unit]
Description=Gunicorn instance to serve my-flask-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 daemon-reexec
sudo systemctl start my-flask-app
sudo systemctl enable my-flask-app

6. 配置 Nginx 反向X_X(同上)

修改 Nginx 配置,指向 Gunicorn:

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

? 安全建议

  1. 开放必要端口(如 80、443),关闭其他端口(通过防火墙或安全组)
  2. 使用 UFW 防火墙:
    sudo ufw allow 'Nginx Full'
    sudo ufw enable
  3. 为域名配置 HTTPS(使用 Let’s Encrypt + Certbot):
    sudo apt install certbot python3-certbot-nginx -y
    sudo certbot --nginx -d yourdomain.com

? 总结对比

步骤 Node.js Python (Flask/Django)
运行时 Node.js + npm Python + pip + virtualenv
进程管理 PM2 Gunicorn + systemd
Web 服务器 直接运行或 Nginx 反向X_X Nginx + Gunicorn 反向X_X
推荐前端X_X Nginx Nginx
HTTPS Certbot Certbot

如果你提供具体项目类型(如 Express、FastAPI、Django、Next.js 等),我可以给出更精确的部署脚本和配置。欢迎继续提问!

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