部署前的关键准备
-
环境选择
- 推荐Ubuntu LTS(20.04/22.04)或CentOS Stream(稳定性强、社区支持完善)
- 通过
lsb_release -a
验证系统版本
-
最小权限原则
adduser deployuser # 创建专用部署用户 usermod -aG sudo deployuser # 授予必要权限
-
安全加固(必做)
- 启用UFW防火墙:
ufw allow OpenSSH ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS ufw enable
- 禁用root登录:修改
/etc/ssh/sshd_config
中PermitRootLogin no
- 启用UFW防火墙:
项目部署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
:
[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
部署后关键操作
-
验证服务状态
systemctl status yourproject # 检查进程 curl -I http://localhost:3000 # 测试内部访问 nginx -t && systemctl reload nginx # 重载配置
-
日志监控方案
journalctl -u yourproject -f # 实时查看日志 # 推荐配置logrotate防止日志膨胀
-
HTTPS加密(Let’s Encrypt)
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d yourdomain.com
-
自动化部署进阶
- 使用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
权威提示:部署方案需根据实际技术栈调整,生产环境务必做到:
- 配置独立数据库账号(非root权限)
- 敏感信息通过
.env
管理(禁用配置文件硬编码)- 至少每月执行安全更新
- 重要操作前创建系统快照
引用说明:本文操作指南参考Linux基金会发布的《Production Deployment Standards》及Nginx官方部署手册,结合AWS、阿里云最佳实践总结,安全建议符合CIS Linux Benchmark标准。
(全文完)
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/16500.html