努力
奋斗

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

服务器

在轻量服务器上部署 Node.js 或 Python 项目,核心步骤包括:环境配置 → 代码上传 → 依赖安装 → 进程管理 → 域名/端口映射。以下是详细指南:


一、通用准备(适用于两种语言)

1. 登录服务器

ssh root@your_server_ip

2. 更新系统 & 安装基础工具

sudo apt update && sudo apt upgrade -y   # Debian/Ubuntu
# 或
sudo yum update -y                       # CentOS/RHEL

# 安装常用工具
sudo apt install curl git unzip wget -y

3. 创建非 root 用户(推荐)

adduser deploy
usermod -aG sudo deploy
su - deploy
cd ~

✅ 安全最佳实践:避免直接用 root 运行应用。


二、部署 Node.js 项目

1. 安装 Node.js(使用 nvm 或官方二进制包)

方法 A:使用 nvm(灵活版本管理)

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

方法 B:使用 NodeSource 仓库(稳定生产环境推荐)

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

2. 上传项目代码

# 方式1:Git 克隆
git clone https://github.com/yourusername/your-project.git
cd your-project

# 方式2:SCP 上传本地文件
scp -r ./local-project/* deploy@your_server_ip:/home/deploy/your-project

3. 安装依赖

npm install    # 或 yarn install / pnpm install

4. 启动应用(开发模式测试)

npm start      # 确保 package.json 中有 "start" 脚本
# 或
node app.js

⚠️ 默认监听 localhost:3000,外部无法访问。需配置防火墙或反向X_X。

5. 使用 PM2 进行进程守护(生产环境必备)

npm install -g pm2

# 启动并命名进程
pm2 start app.js --name my-app

# 开机自启
pm2 startup systemd
pm2 save

# 查看状态
pm2 list
pm2 logs my-app

6. 配置 Nginx 反向X_X(可选但推荐)

sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/default

替换为:

server {
    listen 80;
    server_name your_domain.com;  # 或 IP

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
sudo nginx -t          # 测试配置
sudo systemctl restart nginx

7. 设置 HTTPS(Let’s Encrypt)

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com

三、部署 Python 项目

1. 安装 Python 和 pip

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

2. 创建虚拟环境(隔离依赖)

cd ~/your-project
python3 -m venv venv
source venv/bin/activate

3. 安装依赖

# 假设你有 requirements.txt
pip install -r requirements.txt

# 常见框架依赖示例:
# Flask: flask gunicorn
# Django: django psycopg2-binary gunicorn
# FastAPI: fastapi uvicorn[standard]

4. 启动应用(开发模式测试)

Flask 示例

export FLASK_APP=app.py
flask run --host=0.0.0.0 --port=5000

Django 示例

python manage.py migrate
python manage.py collectstatic
python manage.py runserver 0.0.0.0:8000

FastAPI 示例

uvicorn main:app --host 0.0.0.0 --port 8000

⚠️ 同样需要反向X_X才能从外部访问。

5. 使用 Gunicorn + Nginx(生产环境推荐)

安装 Gunicorn

pip install gunicorn

启动 Gunicorn

# Flask
gunicorn -w 4 -b 127.0.0.1:5000 app:app

# Django
gunicorn -w 4 -b 127.0.0.1:8000 your_project.wsgi:application

# FastAPI
gunicorn -w 4 -b 127.0.0.1:8000 main:app

使用 systemd 管理 Gunicorn(替代 Supervisor/PM2)

创建服务文件:

sudo nano /etc/systemd/system/myapp.service

内容示例(Flask):

[Unit]
Description=Gunicorn instance to serve my Flask app
After=network.target

[Service]
User=deploy
Group=www-data
WorkingDirectory=/home/deploy/my-flask-app
Environment="PATH=/home/deploy/my-flask-app/venv/bin"
ExecStart=/home/deploy/my-flask-app/venv/bin/gunicorn --workers 4 --bind unix:myapp.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp

6. 配置 Nginx 反向X_X

修改 /etc/nginx/sites-available/default:

server {
    listen 80;
    server_name your_domain.com;

    location / {
        include proxy_params;
        proxy_pass http://unix:/home/deploy/my-flask-app/myapp.sock;
    }
}
sudo nginx -t
sudo systemctl reload nginx

7. 设置 HTTPS

同 Node.js 部分,使用 Certbot:

sudo certbot --nginx -d your_domain.com

四、关键注意事项

项目 说明
防火墙 确保只开放 80/443 端口,SSH 端口(如 22)限制 IP 访问
数据库 MySQL/PostgreSQL 需单独安装,并配置远程访问权限
环境变量 使用 .env 文件 + dotenv 库,或通过 systemd 的 Environment= 注入
日志监控 PM2(Node)或 journalctl(systemd,Python)查看日志
自动重启 systemd 或 PM2 可配置崩溃后自动重启
备份策略 定期备份代码、数据库、配置文件

五、快速对比总结

步骤 Node.js Python
运行时 Node.js + PM2 Python + Gunicorn + systemd
进程管理 pm2 systemd
Web 服务器 Nginx 反向X_X Nginx 反向X_X(通过 Unix Socket)
典型命令 pm2 start app.js systemctl start myapp
优势 事件驱动、适合 I/O 密集型 生态丰富、适合数据科学/AI

六、一键检查清单

✅ SSH 登录成功
✅ 创建非 root 用户
✅ 安装对应运行时(Node/Python)
✅ 上传代码并安装依赖
✅ 使用进程管理器守护应用
✅ 配置 Nginx 反向X_X
✅ 设置 HTTPS(Certbot)
✅ 开放必要端口(80/443)
✅ 测试访问 http://your_domain.com

按照以上步骤,你可以稳定地在轻量服务器上部署 Node.js 或 Python 项目。如有特定框架(如 Next.js、Django、FastAPI),可进一步细化配置。

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