在 Debian 上运行 Laravel(无论是本地开发还是生产环境),有几个系统层面和Laravel 本身的关键点需要注意。下面按“常见坑 + 最佳实践”给你梳理一下。
Laravel 对 PHP 版本要求较新:
Debian 默认源可能较旧(如 Debian 11 是 PHP 7.4),建议:
sudo apt install lsb-release ca-certificates apt-transport-https software-properties-common
sudo add-apt-repository ppa:ondrej/php # Ubuntu
⚠️ Debian 没有直接 PPA,可用
deb.sury.org的源(onrej 维护)
Laravel 运行最少需要:
php-cli php-fpm php-mysql php-xml php-mbstring php-curl php-zip php-gd php-bcmath php-intl
常见缺扩展导致的问题:
php-xml 缺失 → Composer 报错php-mbstring 缺失 → Laravel 无法启动php-bcmath → 支付/精度计算问题示例 Nginx 配置要点:
server {
listen 80;
server_name example.com;
root /var/www/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}
}
⚠️ root 必须指向 public/,否则有严重安全风险
www-dataroot推荐做法:
sudo chown -R www-data:www-data /var/www/laravel
sudo chmod -R 755 /var/www/laravel
sudo chmod -R 775 storage bootstrap/cache
或更安全方式(推荐):
sudo usermod -aG www-data youruser
composer install --no-dev --optimize-autoloader
生产环境不要:
composer install(带 dev 依赖)
部署后必须执行:
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan migrate --force
.env 不能被 Web 访问chmod 640 .env
chown www-data:youruser .env
生产环境:
APP_DEBUG=false
APP_ENV=production
Laravel 队列不要用 sync
使用:
php artisan queue:work
生产建议:
Supervisor 示例:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/laravel/artisan queue:work
autostart=true
autorestart=true
user=www-data
* * * * * www-data php /var/www/laravel/artisan schedule:run
| 问题 | 原因 |
|---|---|
| 500 错误 | storage 无写权限 |
| 白屏 | APP_DEBUG=false + 日志未看 |
| 路由 404 | Nginx try_files 错误 |
| Composer 报错 | PHP 扩展缺失 |
| 慢 | 未 cache 配置 |
✅ PHP ≥ 8.2
✅ Nginx + php-fpm
✅ root = public
✅ storage 可写
✅ composer --no-dev
✅ artisan cache
✅ supervisor + cron
如果你愿意,我可以:
你现在是 开发环境还是生产服务器?