Оглавление

В этой статье я опишу процесс переноса Laravel-проекта cybertools.cc с сервера, работающего под Hestia Control Panel, на новый сервер с WordOps. Мы сосредоточимся на безопасной миграции – без раскрытия конфиденциальных данных (паролей, IP‑адресов). Все команды и пути адаптированы под структуру и настройки cybertools.cc, но вы можете аналогично действовать для любого Laravel-сайта.


Шаг 1: Подготовка к переносу

  1. Доступ к серверам
    • Hestia: Есть root-доступ (или доступ администратора). Сайт cybertools.cc находится в папке наподобие: /home/<username>/web/cybertools.cc/public_html
    • WordOps: На новом сервере установите WordOps. Для Ubuntu: wget -qO wo wops.cc && sudo bash wo WordOps требует 512 МБ RAM и минимум 100 МБ свободного места на диске; поддерживает Ubuntu 18.04+, Debian 9/10 (64-bit).
  2. Резервное копирование
    • В Hestia сделайте бэкап пользователя: v-backup-user <username> Архив появится в /backup. Скопируйте его к себе локально (SCP или SFTP).
  3. Проверка зависимостей
    • На новом сервере с WordOps установите необходимые компоненты: wo stack install Это поставит Nginx, PHP (рекомендуется 8.3), MySQL и все базовые зависимости для запуска Laravel.

Шаг 2: Перенос файлов проекта

  1. Скачивание файлов с Hestia
    • Основные файлы Laravel‑проекта лежат в /home/<username>/web/cybertools.cc/public_html. Заархивируйте их: tar -czf cybertools.tar.gz /home/<username>/web/cybertools.cc/public_html
    • Скопируйте архив себе на локальный компьютер или сразу на новый сервер WordOps (через scp).
  2. Создание сайта на WordOps
    • На новом сервере выполните: wo site create cybertools.cc --php WordOps создаст структуру в /var/www/cybertools.cc/htdocs, настроит Nginx и PHP под Laravel.
  3. Загрузка и распаковка
    • Перейдите в папку: cd /var/www/cybertools.cc/htdocs
    • Загрузите cybertools.tar.gz (SCP) и распакуйте: tar -xzf cybertools.tar.gz
    • Если архив содержал public_html, перенесите файлы внутрь текущего каталога: mv public_html/* . rmdir public_html
  4. Настройка правchown -R www-data:www-data /var/www/cybertools.cc/htdocs chmod -R 755 /var/www/cybertools.cc/htdocs chmod -R 775 /var/www/cybertools.cc/htdocs/storage chmod -R 775 /var/www/cybertools.cc/htdocs/bootstrap/cache
    • Ограничьте доступ к .env: chmod 640 /var/www/cybertools.cc/htdocs/.env chown www-data:www-data /var/www/cybertools.cc/htdocs/.env

Шаг 3: Перенос базы данных

  1. Экспорт БД на Hestia
    • Если база называется cybertools_db, экспортируйте её: mysqldump -u <dbuser> -p cybertools_db > cybertools_db.sql
    • Скопируйте cybertools_db.sql на новый сервер (SCP).
  2. Создание БД на WordOps
    • Выполните: wo db create cybertools_db WordOps создаст базу с новым пользователем и паролем. Запишите их.
  3. Импорт
    • На новом сервере импортируйте: mysql -u <dbuser> -p cybertools_db < cybertools_db.sql
  4. Обновление .env
    • Откройте /var/www/cybertools.cc/htdocs/.env: nano /var/www/cybertools.cc/htdocs/.env
    • Обновите настройки: DB_HOST=localhost DB_DATABASE=cybertools_db DB_USERNAME=<dbuser> DB_PASSWORD=<dbpassword>
    • Остальные секреты (ключи Socialite/Stripe) перенесите без раскрытия в файле.

Шаг 4: Настройка зависимостей

  1. Composer
    • Установите зависимости: cd /var/www/cybertools.cc/htdocs composer install --no-dev
    • Если видите предупреждения о Monolog/Illuminate\Log, обновитесь: composer update composer require monolog/monolog:^2.9 composer require laravel/framework:^10.0
  2. Обновление PHP (при необходимости)
    • Если нужно, установите PHP 8.3: apt update apt install -y php8.3 php8.3-fpm ...
    • Настройте Nginx в /etc/nginx/sites-available/cybertools.cc (или в WordOps-конфигурации) на php8.3-fpm.sock, перезагрузите: systemctl restart php8.3-fpm wo stack reload
  3. Настройка Nginx под Laravel
    • Убедитесь, что в Nginx-конфигурации сайта указано: location / { try_files $uri $uri/ /index.php?$query_string; }
    • Также убедитесь, что указан правильный сокет PHP: fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    • После изменений: wo stack reload

Шаг 5: Финальная настройка Laravel

  1. Кэширование и оптимизация php artisan cache:clear php artisan config:clear php artisan config:cache php artisan route:clear php artisan route:cache php artisan view:clear php artisan view:cache
  2. Символическая ссылка storage php artisan storage:link
  3. Планировщик
    • Настройте cron: crontab -u www-data -e
    • Добавьте: * * * * * cd /var/www/cybertools.cc/htdocs && php artisan schedule:run >> /dev/null 2>&1

Шаг 6: Тестирование

  1. Проверьте страницы
  2. Проверка функционала
    • Авторизация (Socialite) → /auth/social-login
    • Платежи (Stripe) → /pricing
    • Отправка писем (Mail)
  3. Логи и ошибки tail -f /var/log/nginx/cybertools.cc.error.log tail -f /var/www/cybertools.cc/htdocs/storage/logs/laravel.log

Шаг 7: Безопасность и завершающие штрихи

  1. Скрытие .env
    • Запретите доступ к .env в конфигурации Nginx: location ~ /\.env { deny all; return 403; }
    • Перезагрузите Nginx: wo stack reload
  2. DNS
    • После успешного переноса укажите в DNS новый IP (не раскрывайте его публично). Дождитесь обновления DNS.
  3. Оптимизация
    • Отключите APP_DEBUG: APP_DEBUG=false
    • Повторно сбросьте кэш: php artisan config:clear && php artisan config:cache

Итоги

Проект cybertools.cc успешно перенесён с Hestia на WordOps. Мы:

  • Создали резервную копию и заархивировали файлы, не раскрывая паролей.
  • Настроили на новом сервере сайт с wo site create.
  • Перенесли базу данных, аккуратно обновив .env.
  • Настроили зависимости Laravel, PHP 8.3 и кэширование.
  • Обновили конфигурацию Nginx под Laravel.
  • Позаботились о безопасности: .env закрыт от внешнего доступа, права каталогов настроены.

Если что-то не работает, изучите логи Nginx и Laravel. Но в большинстве случаев такой подход обеспечивает надёжную, безопасную миграцию на новый сервер с WordOps, без утечки секретных данных. Удачного переноса!