Перед началом переноса убедитесь, что новый сервер соответствует всем требованиям:
-
Операционная система: Рекомендуется использовать ту же ОС, что и на старом сервере, для упрощения процесса.
-
Установите необходимые пакеты и зависимости:
#Обновите список пакетов sudo apt update && sudo apt upgrade -y #Установите PHP 8.2 и необходимые расширения sudo apt install -y php8.2 php8.2-mbstring php8.2-xml php8.2-mysql php8.2-zip php8.2-curl #Установите MySQL 5.7 sudo apt install -y mysql-server=5.7.* #Установите необходимые сервисы sudo apt install -y redis-server supervisor git curl unzip #Установите Composer curl -sS https://getcomposer.org/installer | php sudo mv composer.phar /usr/local/bin/composer # Установите веб-сервер (например, Nginx) sudo apt install -y nginx #Установите и настройте почтовые сервисы (Postfix для SMTP, Dovecot для POP3/IMAP) #Если будет использоваться внешний почтовый сервис, этот шаг можно пропустить sudo apt install -y postfix dovecot-imapd dovecot-pop3d
Создайте конфигурационный файл для вашего сайта:
sudo nano /etc/nginx/sites-available/your_domain.confПример конфигурации для Laravel:
server {
listen 80;
server_name your_domain.com www.your_domain.com;
root /var/www/your_project/public;
index index.php index.html index.htm;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}Активируйте сайт и перезапустите Nginx:
sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx-
Установите Git на новом сервере, если еще не установлен:
sudo apt install -y git
-
Клонируйте репозиторий в нужную директорию:
cd /var/www/ git clone https://github.com/yourusername/yourrepository.git your_project composer install -
Перейдите в директорию проекта:
cd /var/www/your_project -
Установите зависимости Composer:
composer install
-
Скопируйте файл .env с конфигурациями из старого сервера:
scp user@old_server_ip:/path/to/your_project/.env /var/www/your_project/
-
Обновите параметры .env на новом сервере, такие как подключения к базе данных, пути и т.д.
-
Сгенерируйте ключ приложения:
php artisan key:generate
-
Выполните миграции и заполнение базы данных, если необходимо:
php artisan migrate --force php artisan db:seed --force
-
Настройте права доступа:
sudo chown -R www-data:www-data /var/www/your_project sudo chmod -R 755 /var/www/your_project sudo chmod -R 775 /var/www/your_project/storage sudo chmod -R 775 /var/www/your_project/bootstrap/cache
-
Архивируйте проект на старом сервере:
cd /path/to/your_project tar -czvf your_project.tar.gz .
-
Перенесите архив на новый сервер:
scp your_project.tar.gz user@new_server_ip:/var/www/your_project/
-
Распакуйте архив на новом сервере:
cd /var/www/your_project tar -xzvf your_project.tar.gz
- Скопируйте файл
.envс конфигурациями из старого сервера:scp user@old_server_ip:/path/to/your_project/.env /var/www/your_project/
- Обновите параметры
.envна новом сервере, такие как подключения к базе данных, пути и т.д.- удалите раздел #dev only
-
Экспортируйте базу данных на старом сервере:
mysqldump -u your_db_user -p your_database > your_database.sql -
Перенесите дамп на новый сервер:
scp your_database.sql user@new_server_ip:/home/user/
-
Импортируйте базу данных на новом сервере:
mysql -u your_db_user -p your_database < /home/user/your_database.sql
-
Перейдите в директорию проекта:
cd /var/www/your_project -
Установите зависимости Composer:
composer install --optimize-autoloader --no-dev
-
Сгенерируйте ключ приложения:
php artisan key:generate
-
Выполните миграции и заполнение базы данных, если необходимо:
php artisan migrate --force php artisan db:seed --force
-
Создайте символическую ссылку для хранилища:
php artisan storage:link
-
Оптимизируйте проект:
php artisan optimize
-
Настройте права доступа:
sudo chown -R www-data:www-data /var/www/your_project sudo chmod -R 755 /var/www/your_project sudo chmod -R 775 /var/www/your_project/storage sudo chmod -R 775 /var/www/your_project/bootstrap/cache
-
Настройте Redis:
Убедитесь, что Redis работает и настроен в вашем
.envфайле:REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379
Запустите и активируйте Redis:
sudo systemctl start redis sudo systemctl enable redis -
Настройте Supervisor для управления очередями Laravel:
Установите Supervisor, если он еще не установлен:
sudo apt install -y supervisor
Создайте конфигурационный файл для вашего приложения:
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
Пример конфигурации:
[program:horizon] process_name=%(program_name)s command=php /path/to/app/artisan horizon autostart=true autorestart=true user=root redirect_stderr=true stdout_logfile=/path/to/log/horizon.log stopwaitsecs=3600Примените изменения:
sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start laravel-worker:*
-
Откройте crontab для пользователя
www-dataили нужного пользователя:sudo crontab -u www-data -e
-
Добавьте задание для запуска Laravel Scheduler каждую минуту:
* * * * * php /var/www/your_project/artisan schedule:run >> /dev/null 2>&1
Сохраните и выйдите из редактора.
-
Настройте Postfix для SMTP:
При установке Postfix выберите тип конфигурации «Internet Site» и укажите ваше доменное имя.
-
Настройте Dovecot для POP3 и IMAP:
Основные настройки обычно находятся в
/etc/dovecot/dovecot.conf. Убедитесь, что протоколы POP3 и IMAP включены.
Получите SSL сертификат (например, через Let's Encrypt):
sudo apt install -y certbot
sudo certbot certonly --standalone -d mail.your_domain.comОбновите конфигурации Postfix и Dovecot для использования SSL:
Postfix (/etc/postfix/main.cf):
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.your_domain.com/fullchain.pem
smtpd_tls_key_file=/etc/letsencrypt/live/mail.your_domain.com/privkey.pem
smtpd_use_tls=yesDovecot (/etc/dovecot/conf.d/10-ssl.conf):
ssl = yes
ssl_cert = </etc/letsencrypt/live/mail.your_domain.com/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.your_domain.com/privkey.pemПерезапустите сервисы:
sudo systemctl restart postfix
sudo systemctl restart dovecot - Убедитесь, что сайт загружается корректно.
- Проверьте функциональность всех сервисов (почта, очереди, задачи Cron и т.д.).
- Измените A-записи вашего домена на новый IP-адрес.
- Дождитесь обновления DNS (может занять до 24 часов).
- Настройте брандмауэр (например, UFW):
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable - Отключите доступ по паролю для SSH, если используете ключи.
-
Установите Hestia Control Panel на новом сервере:
wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh bash hst-install.sh
-
Создайте новый домен и установите SSL сертификат через Hestia Control Panel.
-
Перенесите файлы и базу данных на новый сервер.
-
Настройте окружение, зависимости и оптимизацию.
-
Настройте Redis, Supervisor и Cron задачи.
-
Проверьте работу сайта и переключите DNS-записи.
-
Убедитесь, что трафик перенаправляется на новый сервер.
-
Обеспечьте безопасность нового сервера и удалите старый сервер.
Дополнительные рекомендации
- Резервное копирование: Перед началом переноса сделайте полные резервные копии файлов и базы данных.
- Документация: Ведите документацию всех выполненных шагов для будущих переносов или восстановления.
- Мониторинг: Настройте мониторинг сервера для отслеживания производительности и доступности.
- Безопасность: Регулярно обновляйте сервер и устанавливайте патчи безопасности.
Links: