如何部署Laravel项目到WSL2的Ubuntu 24.04环境?

以下是在 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值