当前位置:首页 > Linux > 正文

Linux部署项目实战教程

Linux部署项目通常包含:安装运行环境(如Python/Node.js)、上传项目文件、安装依赖库(如pip/npm)、配置环境变量及服务(如Nginx)、设置启动命令(如systemd服务)并开放防火墙端口。

部署前的关键准备

  1. 环境选择

    • 推荐Ubuntu LTS(20.04/22.04)或CentOS Stream(稳定性强、社区支持完善)
    • 通过lsb_release -a验证系统版本
  2. 最小权限原则

    adduser deployuser  # 创建专用部署用户
    usermod -aG sudo deployuser  # 授予必要权限
  3. 安全加固(必做)

    • 启用UFW防火墙:
      ufw allow OpenSSH
      ufw allow 80/tcp  # HTTP
      ufw allow 443/tcp # HTTPS
      ufw enable
    • 禁用root登录:修改/etc/ssh/sshd_configPermitRootLogin no

项目部署7步标准化流程

▶ 步骤1:安装运行时环境

# Node.js示例 (使用nvm管理版本)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install --lts
# Python示例
sudo apt install python3-venv  # Ubuntu
python3 -m venv .venv
source .venv/bin/activate

▶ 步骤2:获取项目代码

git clone https://github.com/yourproject.git
cd yourproject
git checkout release  # 切换到稳定分支

▶ 步骤3:配置环境变量

# 创建.env文件(切勿提交至Git)
echo "DATABASE_URL=postgres://user:pass@localhost/db" >> .env
echo "SECRET_KEY=$(openssl rand -hex 32)" >> .env

▶ 步骤4:安装依赖

# 根据技术栈选择
npm install --production  # Node.js
pip install -r requirements.txt  # Python
composer install --no-dev  # PHP

▶ 步骤5:数据库初始化

# PostgreSQL示例
CREATE DATABASE project_prod;
CREATE USER deploy_user WITH PASSWORD 'securePass';
GRANT ALL PRIVILEGES ON DATABASE project_prod TO deploy_user;

▶ 步骤6:配置反向代理(Nginx示例)

/etc/nginx/sites-available/yourproject.conf

server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_pass http://localhost:3000;  # 转发到应用端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
    # 静态文件优化
    location /static/ {
        alias /path/to/yourproject/static/;
        expires 30d;
    }
}

▶ 步骤7:进程守护(Systemd服务)

创建/etc/systemd/system/yourproject.service

Linux部署项目实战教程  第1张

[Unit]
Description=Your Project Service
After=network.target
[Service]
User=deployuser
WorkingDirectory=/opt/yourproject
ExecStart=/usr/bin/node index.js  # 替换为实际启动命令
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target

启动服务:sudo systemctl daemon-reload && sudo systemctl start yourproject


部署后关键操作

  1. 验证服务状态

    systemctl status yourproject  # 检查进程
    curl -I http://localhost:3000  # 测试内部访问
    nginx -t && systemctl reload nginx  # 重载配置
  2. 日志监控方案

    journalctl -u yourproject -f  # 实时查看日志
    # 推荐配置logrotate防止日志膨胀
  3. HTTPS加密(Let’s Encrypt)

    sudo apt install certbot python3-certbot-nginx
    sudo certbot --nginx -d yourdomain.com
  4. 自动化部署进阶

    • 使用Git Hooks实现代码推送自动部署
    • 配置GitLab CI/CD或GitHub Actions流水线

安全与性能最佳实践

  • 安全加固

    • 定期更新:sudo apt update && sudo apt upgrade -y
    • 配置fail2ban防御SSH暴力破解
    • 使用非标准端口+密钥认证(禁用密码登录)
  • 性能优化

    # Nginx调优片段
    gzip on;
    gzip_types text/css application/json;
    keepalive_timeout 65;
    client_max_body_size 50M;  # 根据需求调整
  • 备份策略

    # 每日数据库备份
    0 3 * * * pg_dump -U user dbname > /backups/db_$(date +%F).sql

权威提示:部署方案需根据实际技术栈调整,生产环境务必做到:

  1. 配置独立数据库账号(非root权限)
  2. 敏感信息通过.env管理(禁用配置文件硬编码)
  3. 至少每月执行安全更新
  4. 重要操作前创建系统快照

引用说明:本文操作指南参考Linux基金会发布的《Production Deployment Standards》及Nginx官方部署手册,结合AWS、阿里云最佳实践总结,安全建议符合CIS Linux Benchmark标准。

(全文完)

0