温馨提示×

Debian部署Laravel要注意什么

小樊
33
2026-10-08 04:15:29
栏目: 智能运维

在 Debian 上部署 Laravel(无论是物理机、虚拟机还是云服务器),通常需要兼顾系统环境、权限、性能、安全和可维护性。下面按“部署前 → 部署中 → 部署后”的结构说明关键注意事项。


一、系统与基础环境

1. 选择合适的 Debian 版本

  • 推荐使用 Debian 11 (Bullseye) 或 Debian 12 (Bookworm)
  • 使用 LTS 支持周期长的版本,避免过早 EOL

2. 安装必要组件

典型组合:

  • Web 服务器:Nginx(最常用)或 Apache
  • PHP:≥ 8.1(Laravel 10+ 要求)
  • 数据库:MySQL / MariaDB / PostgreSQL
  • 其他:
    php-cli php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-bcmath
    composer
    

3. PHP 版本与扩展

Laravel 对 PHP 版本敏感:

  • Laravel 10 → PHP 8.1+
  • Laravel 11 → PHP 8.2+

常见必装扩展:

mbstring, xml, ctype, json, tokenizer, bcmath, openssl

二、代码部署方式

1. 不要直接放 /var/www/html

推荐目录结构:

/var/www/yourproject
├── app
├── bootstrap
├── storage
├── public
└── ...

Nginx root 指向:

root /var/www/yourproject/public;

2. 使用 Composer 安装依赖

composer install --no-dev --optimize-autoloader
  • 生产环境禁用 dev 依赖
  • 开启 autoloader 优化

3. 环境变量

  • 使用 .env
  • 不要提交 .env 到 Git
  • 设置:
    APP_ENV=production
    APP_DEBUG=false
    

三、权限与用户

1. 用户隔离

  • Web 服务用户(如 www-data)不应拥有代码修改权
  • 推荐:
    chown -R deploy:www-data /var/www/yourproject
    chmod -R 755 /var/www/yourproject
    

2. storage 和 bootstrap/cache 可写

chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache

3. 避免 777

❌ 不要用 chmod 777 ✅ 用组权限 + PHP-FPM 用户一致


四、Web 服务器配置

Nginx 要点

  • 入口:public/index.php
  • 关闭 .env 访问:
location ~ /\.env {
    deny all;
}
  • 启用 try_files:
try_files $uri $uri/ /index.php?$query_string;

PHP-FPM

  • 使用 unix socket
  • 调整 pm.max_children 防止内存炸

五、Laravel 生产优化

部署后务必执行:

php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize

队列(如有):

php artisan queue:restart

六、安全与防火墙

1. 防火墙

ufw allow 22
ufw allow 80
ufw allow 443
ufw enable

2. HTTPS(强烈建议)

  • Let’s Encrypt + Certbot
  • 强制 301 跳转 HTTPS

3. 保护敏感路径

  • /.git
  • /storage
  • /vendor

七、日志与监控

1. 日志位置

  • Laravel:storage/logs/laravel.log
  • Nginx:/var/log/nginx/
  • PHP-FPM:/var/log/php-fpm.log

2. 日志轮转

Debian 自带 logrotate,确认启用


八、常见坑点总结

问题 原因
500 错误 .env 缺失 / 权限错误
样式丢失 Nginx root 设错
队列不执行 未启动 queue:work
内存爆 PHP-FPM 配置不合理
被扫 .env Nginx 未 deny

九、进阶建议(可选)

  • 使用 Supervisor 管理队列
  • 使用 GitHub Actions / GitLab CI 自动部署
  • 使用 Docker + Debian 隔离环境
  • 数据库定期备份

如果你愿意,我可以:

  • 给你一份 Debian + Nginx + PHP-FPM 完整部署脚本
  • 或按 Laravel 版本(9 / 10 / 11) 精确给出配置

你现在是准备部署到哪种环境?(云服务器 / 本地 / Docker)

0 踩