以下是在 WSL2 (Ubuntu 24.04 LTS) 上部署 Laravel 项目的完整步骤,基于已搭建的 Nginx + PHP-FPM + MySQL + Redis 环境:
1. 准备工作
确保已完成:
- WSL2 + Ubuntu 24.04 安装
- Nginx + PHP 8.3 + MySQL + Redis 环境配置
2. 安装 Composer(PHP 依赖管理)
# 下载 Composer
curl -sS https://getcomposer.org/installer | php
# 全局安装
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
# 验证安装
composer --version
3. 部署 Laravel 项目
方法 1:全新安装 Laravel
# 进入 Web 根目录
cd /var/www
# 使用 Composer 创建 Laravel 项目
sudo composer create-project laravel/laravel myproject
# 设置权限(确保 Nginx 可读写)
sudo chown -R www-data:www-data /var/www/myproject
sudo chmod -R 775 /var/www/myproject/storage
方法 2:部署现有 Laravel 项目
cd /var/www
sudo git clone https://github.com/your/repo.git myproject
cd myproject
# 安装依赖
composer install --no-dev
# 复制环境文件并配置
cp .env.example .env
nano .env # 修改数据库、Redis 等配置
# 生成应用密钥
php artisan key:generate
# 设置权限
sudo chown -R www-data:www-data /var/www/myproject
sudo chmod -R 775 storage bootstrap/cache
4. 配置 MySQL 数据库
# 登录 MySQL
sudo mysql -u root -p
# 创建数据库
CREATE DATABASE laravel_db;
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
EXIT;
在 Laravel 的 .env
中配置:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=your_password
运行数据库迁移:
php artisan migrate
5. 配置 Nginx
编辑 Nginx 站点配置:
sudo nano /etc/nginx/sites-available/laravel.conf
写入以下内容(替换 myproject
为你的项目名):
server {
listen 80;
server_name laravel.test;
root /var/www/myproject/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
启用配置并测试:
sudo ln -s /etc/nginx/sites-available/laravel.conf /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # 移除默认配置
sudo nginx -t # 测试配置
sudo systemctl restart nginx
6. 配置本地 hosts 文件(Windows)
在 Windows 的 C:\Windows\System32\drivers\etc\hosts
中添加:
127.0.0.1 laravel.test
(需用管理员权限编辑)
7. 配置 Redis(可选)
在 .env
中启用 Redis:
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
测试 Redis 连接:
php artisan tinker
>>> Redis::ping(); # 应返回 "PONG"
8. 优化 Laravel 性能
# 优化自动加载
composer dump-autoload --optimize
# 缓存路由和配置
php artisan config:cache
php artisan route:cache
php artisan view:cache
# 队列服务(如需)
php artisan queue:work --daemon
9. 访问项目
浏览器访问:
http://laravel.test
应看到 Laravel 欢迎页面。
10. 常见问题排查
问题 1:403 Forbidden
- 检查
/var/www/myproject
权限:sudo chown -R www-data:www-data /var/www/myproject sudo chmod -R 775 storage bootstrap/cache
问题 2:502 Bad Gateway
- 检查 PHP-FPM 是否运行:
sudo systemctl status php8.3-fpm
- 确认 Nginx 配置中的
fastcgi_pass
路径正确:ls /run/php/php8.3-fpm.sock
问题 3:数据库连接失败
- 检查
.env
中的数据库配置 - 确认 MySQL 用户权限:
sudo mysql -u root -p SHOW GRANTS FOR 'laravel_user'@'localhost';
总结
✅ Laravel 项目已成功部署,环境包含:
- Nginx 作为 Web 服务器
- PHP 8.3-FPM 处理请求
- MySQL 存储数据
- Redis 缓存/队列支持
🚀 下一步建议:
- 使用
Certbot
配置 HTTPS - 设置任务调度(Cron Job)
- 部署到生产服务器(如 AWS/Laravel Forge)
如有问题,可检查日志:
# Nginx 错误日志
sudo tail -f /var/log/nginx/error.log
# Laravel 日志
tail -f /var/www/myproject/storage/logs/laravel.log