Перенос Laravel на другой сервер
Несколько моментов, с которыми столкнулся при переносе проекта на Laravel с одного сервера на другой. Все в окружении nginx+php-fpm.

Перенос Laravel без использования composer

  1. Архивируем файлы проекта
  2. Выкачиваем дамп базы данных
  3. Заливаем на новый сервер архив и распаковываем
  4. Коректируем nginx под новый путь папки public в проекте
  5. Меняем доступы к файлам (chown & chmod)
  6. Заливаем базу данных на сервер. В документе .env смотрим параметры подключения к БД (пользователь/пароль/порт, если нужно) и создаем аналогичного юзера в базе.

На этом все. Не нужно запускать миграции, composser update и остальные программы. Ларавел спокойно запуститься, но будет ряд моментов, связанных с symlink и БД.

Исправляем символьные ссылки

Устанавливаем Symlink для папки Storage:

ln -s /var/www/PROJECTROOT/storage/ /var/www/PROJECTROOT/public/

В папке Storage был симлинк на папку с изображениями, которые использовались в проекте. Чтобы все было ок и картинки работали, запускаем аналогичную команду:

ln -s /var/www/PROJECTROOT/storage/app/public/images /var/www/PROJECTROOT/storage/

Проблема: General error: 1615 Prepared statement needs to be re-prepared

На одной из страниц проекта была проблема с запросами в базу данных. Отмечу, что используется mysql. Для решения проблемы в файл /config/database.php добавил сточку:

'options'   => [
                \PDO::ATTR_EMULATE_PREPARES => true
            ]

В общем, конфиг выглядел так:

'mysql' => [
    'driver'    => 'mysql',
    'host'      => env('DB_HOST', 'localhost'),
    'database'  => env('DB_DATABASE', 'forge'),
    'username'  => env('DB_USERNAME', 'forge'),
    'password'  => env('DB_PASSWORD', ''),
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'strict'    => false,
    'options'   => [
        \PDO::ATTR_EMULATE_PREPARES => true
    ]
],

На этом все. Перенесли проект вместе с папкой vendor и всеми зависимостями.


# PHP