Оглавление
В этой статье я опишу процесс переноса Laravel-проекта cybertools.cc с сервера, работающего под Hestia Control Panel, на новый сервер с WordOps. Мы сосредоточимся на безопасной миграции – без раскрытия конфиденциальных данных (паролей, IP‑адресов). Все команды и пути адаптированы под структуру и настройки cybertools.cc, но вы можете аналогично действовать для любого Laravel-сайта.
Шаг 1: Подготовка к переносу
- Доступ к серверам
- Hestia: Есть root-доступ (или доступ администратора). Сайт cybertools.cc находится в папке наподобие:
/home/<username>/web/cybertools.cc/public_html - WordOps: На новом сервере установите WordOps. Для Ubuntu:
wget -qO wo wops.cc && sudo bash woWordOps требует 512 МБ RAM и минимум 100 МБ свободного места на диске; поддерживает Ubuntu 18.04+, Debian 9/10 (64-bit).
- Hestia: Есть root-доступ (или доступ администратора). Сайт cybertools.cc находится в папке наподобие:
- Резервное копирование
- В Hestia сделайте бэкап пользователя:
v-backup-user <username>Архив появится в/backup. Скопируйте его к себе локально (SCP или SFTP).
- В Hestia сделайте бэкап пользователя:
- Проверка зависимостей
- На новом сервере с WordOps установите необходимые компоненты:
wo stack installЭто поставит Nginx, PHP (рекомендуется 8.3), MySQL и все базовые зависимости для запуска Laravel.
- На новом сервере с WordOps установите необходимые компоненты:
Шаг 2: Перенос файлов проекта
- Скачивание файлов с Hestia
- Основные файлы Laravel‑проекта лежат в
/home/<username>/web/cybertools.cc/public_html. Заархивируйте их:tar -czf cybertools.tar.gz /home/<username>/web/cybertools.cc/public_html - Скопируйте архив себе на локальный компьютер или сразу на новый сервер WordOps (через
scp).
- Основные файлы Laravel‑проекта лежат в
- Создание сайта на WordOps
- На новом сервере выполните:
wo site create cybertools.cc --phpWordOps создаст структуру в/var/www/cybertools.cc/htdocs, настроит Nginx и PHP под Laravel.
- На новом сервере выполните:
- Загрузка и распаковка
- Перейдите в папку:
cd /var/www/cybertools.cc/htdocs - Загрузите
cybertools.tar.gz(SCP) и распакуйте:tar -xzf cybertools.tar.gz - Если архив содержал
public_html, перенесите файлы внутрь текущего каталога:mv public_html/* . rmdir public_html
- Перейдите в папку:
- Настройка прав
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: Перенос базы данных
- Экспорт БД на Hestia
- Если база называется
cybertools_db, экспортируйте её:mysqldump -u <dbuser> -p cybertools_db > cybertools_db.sql - Скопируйте
cybertools_db.sqlна новый сервер (SCP).
- Если база называется
- Создание БД на WordOps
- Выполните:
wo db create cybertools_dbWordOps создаст базу с новым пользователем и паролем. Запишите их.
- Выполните:
- Импорт
- На новом сервере импортируйте:
mysql -u <dbuser> -p cybertools_db < cybertools_db.sql
- На новом сервере импортируйте:
- Обновление
.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: Настройка зависимостей
- 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
- Установите зависимости:
- Обновление 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
- Если нужно, установите PHP 8.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
- Убедитесь, что в Nginx-конфигурации сайта указано:
Шаг 5: Финальная настройка Laravel
- Кэширование и оптимизация
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 - Символическая ссылка
storagephp artisan storage:link - Планировщик
- Настройте cron:
crontab -u www-data -e - Добавьте:
* * * * * cd /var/www/cybertools.cc/htdocs && php artisan schedule:run >> /dev/null 2>&1
- Настройте cron:
Шаг 6: Тестирование
- Проверьте страницы
- Главная:
https://cybertools.cc - Блог:
https://cybertools.cc/blog - Утилиты:
https://cybertools.cc/tool/<slug>
- Главная:
- Проверка функционала
- Авторизация (Socialite) →
/auth/social-login - Платежи (Stripe) →
/pricing - Отправка писем (Mail)
- Авторизация (Socialite) →
- Логи и ошибки
tail -f /var/log/nginx/cybertools.cc.error.log tail -f /var/www/cybertools.cc/htdocs/storage/logs/laravel.log
Шаг 7: Безопасность и завершающие штрихи
- Скрытие
.env- Запретите доступ к .env в конфигурации Nginx:
location ~ /\.env { deny all; return 403; } - Перезагрузите Nginx:
wo stack reload
- Запретите доступ к .env в конфигурации Nginx:
- DNS
- После успешного переноса укажите в DNS новый IP (не раскрывайте его публично). Дождитесь обновления DNS.
- Оптимизация
- Отключите
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, без утечки секретных данных. Удачного переноса!