Laravel框架Linux下如何部署
导读:Linux 下部署 Laravel 的完整流程 一 环境准备 系统建议:Ubuntu 20.04/22.04 或 CentOS 7/8;Web 服务器:Nginx/Apache;数据库:MySQL/MariaDB;PHP 版本需满足 La...
Linux 下部署 Laravel 的完整流程
一 环境准备
- 系统建议:Ubuntu 20.04/22.04 或 CentOS 7/8;Web 服务器:Nginx/Apache;数据库:MySQL/MariaDB;PHP 版本需满足 Laravel 要求,建议 PHP 8.1+。
- Ubuntu/Debian 安装基础组件:
sudo apt update
sudo apt install -y nginx mysql-server php-fpm php-cli php-mysql php-curl php-gd php-mbstring php-xml php-zip git composer - CentOS 7 安装思路:先启用 EPEL,再通过 Remi 仓库安装所需版本的 PHP-FPM 与扩展,然后安装 Nginx 与 MariaDB/MySQL。
- 说明:Laravel 8.x 通常要求 PHP > = 7.3,Laravel 9/10/11 建议 PHP 8.1+,请以项目实际要求为准。
二 部署代码与安装依赖
- 放置代码:推荐将项目放在 /var/www/your-project,可通过 Git 克隆或 SFTP 上传。
- 安装依赖(生产环境):
cd /var/www/your-project
composer install --optimize-autoloader --no-dev - 配置环境:
cp .env.example .env编辑 .env,设置 APP_ENV=production、APP_DEBUG=false、数据库连接等
php artisan key:generate - 目录权限与存储链接:确保 storage 与 bootstrap/cache 可写,并创建符号链接(如使用本地文件系统):
php artisan storage:link - 数据库初始化:
php artisan migrate --force如需演示数据:php artisan db:seed --force
三 Web 服务器配置
- Nginx 站点示例(将 root 指向 public,开启 PATH_INFO,限制隐藏文件访问):
server {
listen 80;
server_name yourdomain.com;
root /var/www/your-project/public;
index index.php index.html;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ .php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 按实际 PHP 版本调整
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.(?!well-known).* {
deny all;
}
}
启用站点并校验:
sudo ln -s /etc/nginx/sites-available/your-project /etc/nginx/sites-enabled/
sudo nginx -t & & sudo systemctl reload nginx - Apache 要点:启用 mod_rewrite,将虚拟主机 DocumentRoot 指向 /var/www/your-project/public,并配置 AllowOverride All。
四 生产环境优化与安全
- 优化配置与缓存:
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan optimize - 计划任务(Laravel Scheduler):在服务器 crontab 添加
-
-
-
-
- cd /var/www/your-project & & php artisan schedule:run > > /dev/null 2> & 1
-
-
-
-
- 队列监听(如使用队列):
php artisan queue:work --queue=default --tries=3 --sleep=3 & - 启用 HTTPS:使用 Certbot 获取并自动配置 Let’s Encrypt 证书,强制 HTTPS 并开启 HSTS。
- 安全要点:关闭 APP_DEBUG;限制上传目录执行权限;仅开放必要端口;定期更新系统与依赖。
五 常见问题排查
- 404/白屏:确认 root 指向 public,Nginx 配置包含 try_files $uri $uri/ /index.php?$query_string; ,并确保 mod_rewrite 已启用(Apache)。
- 权限错误:检查 storage、bootstrap/cache 目录属主与权限,必要时执行:
chown -R www-data:www-data /var/www/your-project/storage /var/www/your-project/bootstrap/cache
chmod -R 775 /var/www/your-project/storage /var/www/your-project/bootstrap/cache - 502 Bad Gateway:多为 PHP-FPM 未运行或 fastcgi_pass 路径不匹配,确认 php-fpm 服务状态与 sock 文件路径(如 /var/run/php/php8.1-fpm.sock)。
- 类未找到/依赖缺失:确认已执行 composer install --optimize-autoloader --no-dev,并检查 composer.json 与 autoload 配置。
- 数据库连接失败:核对 .env 中 DB_HOST/DB_PORT/DB_DATABASE/DB_USERNAME/DB_PASSWORD,确保数据库已创建且远程访问权限正确。
- 查看日志定位问题:Nginx 错误日志(/var/log/nginx/error.log)、PHP-FPM 日志、Laravel 日志(storage/logs/laravel.log)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Laravel框架Linux下如何部署
本文地址: https://pptw.com/jishu/786965.html
