温馨提示×

如何迁移Debian的Laravel

小樊
49
2026-08-28 00:14:10
栏目: 智能运维

迁移 Debian 上的 Laravel 项目,通常包含 代码、依赖、配置、数据库、文件存储、队列/定时任务、Web 服务器 等部分。下面给你一套完整、可操作的迁移流程,适用于从一台 Debian 服务器迁移到另一台 Debian 服务器(或本地 → 服务器)。


一、迁移前准备

1️⃣ 确认环境一致(非常重要)

目标服务器上确认:

  • Debian 版本(建议一致)
  • PHP 版本(与 Laravel 要求匹配)
  • Composer 版本
  • Web 服务器(Nginx / Apache)
  • 数据库(MySQL / MariaDB / PostgreSQL)
  • Redis / Supervisor(如果用到了)
php -v
composer -V
nginx -v
mysql -V

二、迁移 Laravel 项目

✅ 方法一(推荐):代码 + 重新安装依赖

1️⃣ 在源服务器打包项目(排除不必要文件)

cd /var/www
tar --exclude=node_modules \
    --exclude=vendor \
    --exclude=.git \
    -czvf laravel.tar.gz your_project

2️⃣ 传输到目标服务器

scp laravel.tar.gz user@target_server:/var/www/

3️⃣ 在目标服务器解压

cd /var/www
tar -xzvf laravel.tar.gz

4️⃣ 安装 PHP 依赖

cd your_project
composer install --no-dev --optimize-autoloader

如果提示内存不足:

php -d memory_limit=-1 /usr/bin/composer install

三、环境配置

1️⃣ 复制环境文件

cp .env.example .env

或直接从源服务器复制 .env(注意修改数据库等配置)


2️⃣ 生成 APP_KEY(如果未复制)

php artisan key:generate

3️⃣ 设置权限(非常重要)

sudo chown -R www-data:www-data /var/www/your_project
sudo chmod -R 755 /var/www/your_project
sudo chmod -R 777 storage bootstrap/cache

四、数据库迁移

1️⃣ 在目标服务器创建数据库

CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel'@'localhost';
FLUSH PRIVILEGES;

2️⃣ 导入数据库(推荐)

在源服务器导出:

mysqldump -u user -p laravel_db > laravel.sql

传输并导入:

mysql -u laravel -p laravel_db < laravel.sql

3️⃣ 或使用 Laravel 迁移(仅结构)

php artisan migrate --force

⚠️ 不要混用 migrate + 导入数据


五、存储文件迁移

1️⃣ 迁移 storage 目录

rsync -avz storage/ user@target:/var/www/your_project/storage/

2️⃣ 配置 storage 软链接

php artisan storage:link

六、Web 服务器配置(Nginx 示例)

1️⃣ Nginx 配置

server {
    listen 80;
    server_name example.com;
    root /var/www/your_project/public;

    index index.php;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

2️⃣ 重启服务

sudo systemctl restart nginx
sudo systemctl restart php8.2-fpm

七、队列 / 定时任务迁移

1️⃣ Supervisor(队列)

sudo apt install supervisor

示例配置:

[program:laravel-worker]
command=php /var/www/your_project/artisan queue:work
autostart=true
autorestart=true
user=www-data
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker

2️⃣ Cron(任务调度)

crontab -e
* * * * * php /var/www/your_project/artisan schedule:run >> /dev/null 2>&1

八、迁移后检查清单 ✅

  • [ ] .env 配置正确
  • [ ] 数据库连接正常
  • [ ] php artisan config:clear
  • [ ] php artisan cache:clear
  • [ ] php artisan route:clear
  • [ ] 网站可访问
  • [ ] 队列 / 定时任务正常

九、常见问题

❌ 500 错误

tail -f storage/logs/laravel.log

❌ 权限问题

sudo chown -R www-data:www-data .

如果你愿意,我可以: ✅ 给你 Debian 12 + Laravel 10 完整迁移脚本
✅ 帮你 排查迁移后报错
✅ 提供 Docker / 本地 → 服务器迁移方案

只要告诉我你的 Laravel 版本 + Debian 版本 + Web 服务器 即可。

0