在 Linux 上部署与优化 Laravel 的实用方案
一 基础环境搭建
- 更新系统并安装依赖:PHP(含常用扩展)、Composer、Web 服务器(Nginx/Apache)、数据库(MySQL/PostgreSQL)。示例(Debian/Ubuntu):sudo apt update && sudo apt install php php-cli php-fpm php-mysql php-curl php-mbstring php-xml php-zip php-gd php-bcmath nginx mysql-server。安装 Composer:curl -sS https://getcomposer.org/installer | php && sudo mv composer.phar /usr/local/bin/composer。创建项目:composer create-project --prefer-dist laravel/laravel project-name。以上为后续所有部署与优化的基石。
二 Web 服务器与 PHP-FPM 配置
- Nginx 站点配置要点:将 root 指向项目的 public 目录,启用 try_files 将所有请求导向 index.php;为 PHP 请求设置 fastcgi_pass 到 Unix Socket(如:unix:/var/run/php/php7.4-fpm.sock),并设置 SCRIPT_FILENAME 为 $realpath_root$fastcgi_script_name;添加安全头(X-Frame-Options、X-XSS-Protection、X-Content-Type-Options);隐藏敏感文件 location ~ /.(?!well-known).* { deny all; }。示例片段:root /path/to/your/laravel/public; try_files $uri $uri/ /index.php?$query_string; location ~ .php$ { fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; }。Apache 侧需启用 mod_rewrite 并配置 DocumentRoot 为 public、AllowOverride All。PHP-FPM 建议关闭 cgi.fix_pathinfo=0 以提升安全与稳定性。
三 应用配置与权限
- 环境变量与密钥:复制 .env.example 为 .env,配置数据库连接(DB_HOST/DB_DATABASE/DB_USERNAME/DB_PASSWORD 等),生成应用密钥:php artisan key:generate;数据库迁移:php artisan migrate。文件权限与属主:确保 storage 与 bootstrap/cache 可写,常见做法为将属主设为 Web 服务用户(如 www-data),权限 775:sudo chown -R www-data:www-data /path/to/your/laravel/{storage,bootstrap/cache} && sudo chmod -R 775 /path/to/your/laravel/{storage,bootstrap/cache}。这些步骤是上线前的关键配置与安全检查点。
四 性能与安全优化
- PHP 运行时:启用 OPcache(如 opcache.enable=1、opcache.memory_consumption=128、opcache.max_accelerated_files=10000、opcache.revalidate_freq=60),优先使用 PHP-FPM 与 Nginx 的组合以获得更好的并发与资源利用。Laravel 应用层:配置缓存驱动为 Redis/Memcached(CACHE_DRIVER、SESSION_DRIVER),执行 php artisan config:cache、php artisan route:cache、php artisan view:cache,使用队列(queue:work)处理耗时任务,必要时引入 Laravel Octane 提升常驻进程性能。数据库与代码:为高频查询字段建立索引,使用 Eager Loading 解决 N+1 查询,避免 SELECT *,按需分页。安全与交付:为站点配置 HTTPS/TLS(Let’s Encrypt),在 Nginx 中启用 HTTP/2,并对 .env、storage、vendor 进行严格访问控制。上述优化能显著提升吞吐、降低延迟并增强稳定性。
五 部署与运维实践
- 交付与自动化:使用 Git 管理代码,结合 GitLab CI/CD 实现自动化测试、构建与部署;本地开发可使用 Laravel Sail(基于 Docker)统一环境。进程与任务:配置 Supervisor 守护队列与 Horizon(如 horizon.conf 指定 command=php /var/www/artisan horizon、numprocs=1、autostart=true、autorestart=true、user=www-data、redirect_stderr=true、stdout_logfile=/var/log/horizon.log),确保异常自动恢复。监控与日志:集中采集 Nginx 访问/错误日志 与 Laravel 日志,必要时接入 Prometheus/Grafana 或 APM(如 New Relic/Datadog)进行性能观测与告警。这些实践有助于在 Linux 上构建可观测、可回滚、可扩展的生产体系。