温馨提示×

debian跑laravel要注意什么

小樊
35
2026-09-05 08:41:04
栏目: 智能运维

在 Debian 上跑 Laravel,和在其他 Linux 发行版上基本思路一致,但 Debian 有一些“发行版特性”和常见坑需要注意。下面按系统层面 → 运行环境 → Laravel 本身 → 安全与运维来梳理。


一、系统版本与软件源

1. 使用较新的 Debian 版本

  • 推荐:Debian 11 (Bullseye)Debian 12 (Bookworm)
  • 老版本(如 Debian 9/10)自带 PHP 版本偏低,跑新 Laravel 会很痛苦

2 PHP 版本

Laravel 对 PHP 版本要求较新:

Laravel PHP
10 ≥ 8.1
11 ≥ 8.2

Debian 默认源 PHP 可能偏旧,常见做法:

sudo apt install php php-cli php-fpm php-mbstring php-xml php-curl php-mysql php-zip php-gd php-bcmath

如需要新 PHP:

sudo apt install lsb-release ca-certificates apt-transport-https
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt update

二、Web 服务器选择

Nginx(推荐)

Debian 上 Nginx + PHP-FPM 是最稳组合

注意:

  • php-fpm sock 路径
  • fastcgi 权限
  • client_max_body_size

示例关键点:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
}

Apache(也可用)

  • 必须启用 mod_rewrite
  • 推荐 mpm_event + php-fpm

三、权限问题(最常见坑)

Laravel 需要写:

  • storage
  • bootstrap/cache

错误示例:

The stream or file could not be opened

正确做法(不要 777):

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

如果你用部署用户(如 deploy):

sudo usermod -aG www-data deploy

四、Composer 与部署

1 安装 Composer

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

2 生产环境安装

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

3 缓存优化

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

五、队列 / 定时任务

1 队列(很关键)

Debian 不要用 php artisan serve 跑生产

推荐:

  • Supervisor
  • systemd

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

2 Cron

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

六、数据库

MySQL / MariaDB

Debian 12 默认是 MariaDB 10.11

注意:

  • 字符集用 utf8mb4
  • 远程连接要开防火墙
  • 不要用 root 跑 Laravel

七、安全建议

  • 关闭 debugAPP_DEBUG=false
  • 限制 .env 访问
  • Nginx 屏蔽:
location ~ /\.env {
    deny all;
}
  • 定期 apt upgrade
  • 使用 UFW 或 nftables

八、常见坑总结

✅ PHP 版本太低
✅ storage 没写权限
✅ 队列没常驻
✅ 用 root 跑 Laravel
✅ 没关 debug
✅ 用 artisan serve 上生产


如果你愿意,可以告诉我:

  • Debian 版本
  • Laravel 版本
  • 用 Nginx 还是 Apache
  • 是否上生产

我可以直接给你一份可复制的部署方案

0