奋斗
努力

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

云计算

在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量服务器、AWS Lightsail 等)上部署 Node.js 或 Python 项目是一个常见需求。以下是详细的步骤指南,适用于 Ubuntu/Debian 系统。


🚀 一、准备工作

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

  • 登录云服务商控制台,购买轻量服务器(推荐选择 Ubuntu 20.04 / 22.04 LTS)
  • 获取公网 IP、用户名(通常是 rootubuntu)、密码或 SSH 密钥
  • 使用 SSH 登录:
    ssh root@你的公网IP
    # 或使用密钥
    ssh -i ~/.ssh/your-key.pem root@你的公网IP

🌐 二、通用基础设置

1. 更新系统

sudo apt update && sudo apt upgrade -y

2. 安装常用工具

sudo apt install -y curl wget git nginx vim

⚙️ 三、部署 Node.js 项目

1. 安装 Node.js(推荐使用 nvm)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install --lts
node -v  # 验证安装

2. 上传项目代码

方式一:克隆 GitHub 项目

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

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

scp -r ./local-project root@your-ip:/root/myapp

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

安装 PM2:

npm install -g pm2

启动项目:

pm2 start app.js --name "my-node-app"
pm2 startup    # 开机自启
pm2 save       # 保存当前进程列表

常用命令:pm2 logs, pm2 restart my-node-app, pm2 list


🐍 四、部署 Python 项目(以 Flask/Django 为例)

1. 安装 Python 环境

Ubuntu 通常自带 Python 3:

python3 --version
pip3 --version

安装 pip 和 venv:

sudo apt install -y python3-pip python3-venv

2. 创建虚拟环境并运行项目

git clone https://github.com/yourname/your-flask-app.git
cd your-flask-app

# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate

# 安装依赖
pip install -r requirements.txt

3. 使用 Gunicorn 启动(生产环境)

安装 Gunicorn:

pip install gunicorn

启动服务(例如 Flask 的 app.py):

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

4. 使用进程管理器(推荐 Supervisor)

安装 Supervisor:

sudo apt install -y supervisor

创建配置文件 /etc/supervisor/conf.d/myflask.conf

[program:myflask]
command=/root/your-flask-app/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
directory=/root/your-flask-app
user=root
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/myflask.log

重载 Supervisor:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl status

🌍 五、配置 Nginx 反向X_X(让项目通过 80 端口访问)

1. 编辑 Nginx 配置

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

Node.js 示例配置:

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

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

2. 测试并重启 Nginx

sudo nginx -t         # 检查语法
sudo systemctl reload nginx

🔐 六、安全与优化建议

  1. 防火墙设置(UFW)

    sudo ufw allow OpenSSH
    sudo ufw allow 'Nginx Full'
    sudo ufw enable
  2. 绑定域名 + HTTPS(可选)

    • 绑定域名到公网 IP
    • 使用 Certbot 部署免费 SSL 证书:
      sudo apt install -y certbot python3-certbot-nginx
      sudo certbot --nginx -d yourdomain.com
  3. 定期备份代码和数据库


✅ 七、验证部署成功

在浏览器中访问:

http://你的公网IP

应能看到你的网站正常运行。


📌 总结对比

项目类型 运行方式 进程管理 Web 服务器
Node.js node app.js 或 PM2 PM2 Nginx 反向X_X
Python Gunicorn + Supervisor Supervisor Nginx 反向X_X

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

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