在 Debian 上部署 Laravel(无论是物理机、虚拟机还是云服务器),通常需要兼顾系统环境、权限、性能、安全和可维护性。下面按“部署前 → 部署中 → 部署后”的结构说明关键注意事项。
典型组合:
php-cli php-fpm php-mysql php-mbstring php-xml php-curl php-zip php-gd php-bcmath
composer
Laravel 对 PHP 版本敏感:
常见必装扩展:
mbstring, xml, ctype, json, tokenizer, bcmath, openssl
/var/www/html推荐目录结构:
/var/www/yourproject
├── app
├── bootstrap
├── storage
├── public
└── ...
Nginx root 指向:
root /var/www/yourproject/public;
composer install --no-dev --optimize-autoloader
.env.env 到 GitAPP_ENV=production
APP_DEBUG=false
www-data)不应拥有代码修改权chown -R deploy:www-data /var/www/yourproject
chmod -R 755 /var/www/yourproject
chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data storage bootstrap/cache
❌ 不要用 chmod 777
✅ 用组权限 + PHP-FPM 用户一致
public/index.php.env 访问:location ~ /\.env {
deny all;
}
try_files:try_files $uri $uri/ /index.php?$query_string;
unix socketpm.max_children 防止内存炸部署后务必执行:
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize
队列(如有):
php artisan queue:restart
ufw allow 22
ufw allow 80
ufw allow 443
ufw enable
/.git/storage/vendorstorage/logs/laravel.log/var/log/nginx//var/log/php-fpm.logDebian 自带 logrotate,确认启用
| 问题 | 原因 |
|---|---|
| 500 错误 | .env 缺失 / 权限错误 |
| 样式丢失 | Nginx root 设错 |
| 队列不执行 | 未启动 queue:work |
| 内存爆 | PHP-FPM 配置不合理 |
被扫 .env |
Nginx 未 deny |
如果你愿意,我可以:
你现在是准备部署到哪种环境?(云服务器 / 本地 / Docker)