温馨提示×

debian部署laravel有哪些坑

小樊
43
2026-10-02 07:56:49
栏目: 智能运维

在 Debian 上部署 Laravel(尤其是生产环境)时,常见的“坑”主要集中在系统依赖、权限、PHP 版本、Web 服务器、队列/定时任务、缓存与安全等方面。下面按实际部署顺序梳理:


一、系统 & 基础环境坑

1. PHP 版本太低(最常见)

Debian 稳定版(如 Debian 11/12)自带 PHP 可能较旧。

  • Laravel 10 需要 PHP ≥ 8.1
  • Laravel 11 需要 PHP ≥ 8.2

✅ 解决:

sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip php8.2-gd php8.2-bcmath

或使用 surury / ondrej 第三方源(Debian 上较少用,Ubuntu 更常见)。


2. 缺少 PHP 扩展

很多错误是扩展没装:

常见缺失:

  • mbstring
  • xml
  • bcmath
  • gd
  • zip
  • curl
  • intl

✅ 验证:

php -m

二、Composer 相关坑

3. Composer 内存不足

PHP Fatal error: Allowed memory size exhausted

✅ 解决:

COMPOSER_MEMORY_LIMIT=-1 composer install

或:

php -d memory_limit=-1 /usr/local/bin/composer install

4. 在服务器上跑 composer install 而不是 composer install --no-dev

生产环境一定要:

composer install --optimize-autoloader --no-dev

否则:

  • 性能差
  • 可能暴露调试工具

三、权限 & 目录坑(最致命)

5. storage / bootstrap/cache 没写权限

报错:

The stream or file "/var/www/laravel/storage/logs/laravel.log" could not be opened

✅ 正确做法(推荐 www-data):

sudo chown -R www-data:www-data /var/www/laravel
sudo chmod -R 755 /var/www/laravel
sudo chmod -R 775 storage bootstrap/cache

❌ 不要直接 chmod 777


6. SELinux?

Debian 默认没有 SELinux(有 AppArmor),但如果你从 CentOS 迁移经验过来,别被误导。


四、Web 服务器坑(Nginx 最常见)

7. Nginx 没指向 public/

错误:

404 / 500

✅ 正确 root:

root /var/www/laravel/public;

8. Nginx 没配置 rewrite

缺少:

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

否则路由全 404。


9. PHP-FPM socket 配置错误

Nginx 中:

fastcgi_pass unix:/run/php/php8.2-fpm.sock;

版本要对应。


五、Env & 配置坑

10. .env 没复制或没生成 key

cp .env.example .env
php artisan key:generate

否则:

No application encryption key has been specified.

11. 生产环境没关 debug

.env:

APP_ENV=production
APP_DEBUG=false

否则会泄露堆栈信息。


六、队列 & 定时任务坑(容易被忽略)

12. 队列没启动

php artisan queue:work

退出终端就停了。

✅ 生产用:

  • supervisor
  • 或 systemd

示例 systemd:

[Service]
ExecStart=/usr/bin/php /var/www/laravel/artisan queue:work

13. Cron 没配置

Laravel 调度需要:

* * * * * www-data php /var/www/laravel/artisan schedule:run

七、缓存 & 性能坑

14. 没清缓存导致“改了不生效”

php artisan config:clear
php artisan route:clear
php artisan view:clear

部署后建议:

php artisan config:cache
php artisan route:cache

八、数据库坑

15. MySQL/MariaDB 字符集问题

推荐:

DB_CONNECTION=mysql
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci

否则 emoji 存不进。


九、安全坑

16. 暴露 .env

Nginx 中:

location ~ /\.env {
    deny all;
}

十、日志 & 排错建议

快速排查顺序

  1. php artisan --version
  2. php -m
  3. tail -f storage/logs/laravel.log
  4. nginx error.log
  5. php-fpm.log

总结一句话

Debian 部署 Laravel 的坑,80% 是 PHP 版本 + 权限 + Nginx 配置 + 队列没跑。

如果你愿意,我可以:

  • 给你一份 Debian + Nginx + PHP-FPM 完整部署脚本
  • 或针对 Laravel 11 + Debian 12 的实战手册

0 踩