Оглавление
В этой статье я опишу процесс переноса 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 wo
WordOps требует 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 --php
WordOps создаст структуру в/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_db
WordOps создаст базу с новым пользователем и паролем. Запишите их.
- Выполните:
- Импорт
- На новом сервере импортируйте:
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
- Символическая ссылка
storage
php 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, без утечки секретных данных. Удачного переноса!