Ubuntu如何部署Laravel应用
导读:在 Ubuntu 上部署 Laravel 应用 一 准备与版本要求 系统建议:Ubuntu 22.04/24.04,具备 sudo 权限与防火墙放行(HTTP/HTTPS)。 PHP 版本:Laravel 10 需要 PHP ≥ 8.1;...
在 Ubuntu 上部署 Laravel 应用
一 准备与版本要求
- 系统建议:Ubuntu 22.04/24.04,具备 sudo 权限与防火墙放行(HTTP/HTTPS)。
- PHP 版本:Laravel 10 需要 PHP ≥ 8.1;Laravel 11 需要 PHP ≥ 8.2。
- 基础组件:Nginx/Apache、PHP-FPM、MySQL/PostgreSQL、Composer、可选 Node.js + NPM(用于前端资源编译)。
- 基本检查:
- 查看 PHP 版本:
php -v - 查看已安装扩展:
php -m(确保包含 mbstring、openssl、pdo_mysql、tokenizer、xml、ctype、json 等)
上述版本与扩展为 Laravel 官方运行要求与常见实践,部署前请先核对。
- 查看 PHP 版本:
二 安装与配置 LEMP 或 LAMP
- 更新系统并安装基础软件:
sudo apt update & & sudo apt upgrade -y- 安装 Nginx:
sudo apt install nginx -y & & sudo systemctl enable --now nginx - 安装 PHP 与常用扩展(以 PHP 8.1 为例):
sudo apt install php8.1 php8.1-fpm php8.1-mysql php8.1-xml php8.1-mbstring php8.1-curl php8.1-zip php8.1-gd php8.1-bcmath -y - 安装 MySQL:
sudo apt install mysql-server -y & & sudo mysql_secure_installation
- 创建数据库与专用用户(示例):
sudo mysql -u root -pCREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'StrongPass!';GRANT ALL ON laravel_db.* TO 'laravel_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
- 安装 Composer(全局):
curl -sS https://getcomposer.org/installer | phpsudo mv composer.phar /usr/local/bin/composer & & composer -V
以上步骤完成后,LEMP 环境即具备运行 Laravel 的条件。
三 部署 Laravel 应用
- 方式 A(全新项目):
cd /var/wwwcomposer create-project --prefer-dist laravel/laravel laravel_app
- 方式 B(已有项目):将代码上传至 /var/www/laravel_app(Git 或 SCP),然后进入目录安装依赖:
composer install --optimize-autoloader --no-dev - 配置环境:
cp .env.example .env并编辑:APP_ENV=production、APP_DEBUG=falseAPP_URL=https://your_domain- 数据库:
DB_CONNECTION=mysql、DB_HOST=127.0.0.1、DB_PORT=3306、DB_DATABASE=laravel_db、DB_USERNAME=laravel_user、DB_PASSWORD=StrongPass!
- 生成应用密钥:
php artisan key:generate
- 数据库迁移与可选填充:
php artisan migrate --force,如需演示数据:php artisan db:seed --force - 权限设置(安全且常用做法):
sudo chown -R www-data:www-data /var/www/laravel_appfind /var/www/laravel_app -type d -exec chmod 755 { } \;find /var/www/laravel_app -type f -exec chmod 644 { } \;chmod -R ug+rwx storage bootstrap/cache
以上覆盖了从拉取代码、安装依赖、配置环境到数据库迁移与权限设置的关键环节。
四 配置 Nginx 与启用 HTTPS
- 创建站点配置(示例:/etc/nginx/sites-available/laravel_app):
- 注意将 fastcgi_pass 中的 PHP 版本与系统一致(如 php8.1-fpm.sock)。
- 将 root 指向项目的 public 目录,使用
try_files将所有请求转发给index.php。
- 启用站点并测试:
sudo ln -s /etc/nginx/sites-available/laravel_app /etc/nginx/sites-enabled/sudo nginx -t & & sudo systemctl reload nginx
- 申请并配置 Let’s Encrypt 免费证书(Certbot):
- 安装:
sudo apt install certbot python3-certbot-nginx -y - 获取证书并自动配置 HTTPS(将域名替换为你的域名):
sudo certbot --nginx -d your_domain -d www.your_domain - 证书自动续期测试:
sudo certbot renew --dry-run
Nginx 配置要点是“根目录指向 public、路由统一转发给 index.php”,HTTPS 通过 Certbot 一键完成。
- 安装:
五 生产优化与常见问题
- 性能与缓存(生产推荐):
- 配置缓存:
php artisan config:cache、php artisan route:cache、php artisan view:cache - 队列处理(如邮件、异步任务):
php artisan queue:work --queue=default --tries=3
- 配置缓存:
- 安全与排错:
- 关闭调试:
APP_DEBUG=false;确保.env不在 Web 可访问路径;隐藏敏感文件:在 Nginx 中加入location ~ /\.(?!well-known).* { deny all; } - 目录权限:仅对 storage、bootstrap/cache 放开组写,其他目录与文件遵循 755/644 原则,避免 777 带来的安全风险。
- 常见问题速查:
- “路由 404/白屏”:确认 Nginx
root指向 public 且try_files $uri $uri/ /index.php?$query_string;正确; - “No input file specified”:检查
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;与 PHP-FPM 监听路径; - “Permission denied”:核对目录所有者为 www-data,并按上文权限策略修正;
- “数据库连接失败”:核对 .env 中 DB 配置与数据库用户权限;
- “Composer 安装慢”:可临时使用国内镜像加速(如
composer config -g repo.packagist composer https://packagist.phpcomposer.com)。
- “路由 404/白屏”:确认 Nginx
- 关闭调试:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu如何部署Laravel应用
本文地址: https://pptw.com/jishu/777868.html
