Миграция сайта с NGINX на сервер Caddy в ServBay
ServBay — это мощная локальная среда веб-разработки, интегрирующая несколько популярных веб-серверов, включая Caddy, NGINX и Apache. Для этих серверов, особенно Caddy и NGINX, ServBay заранее настраивает распространённые правила URL-переписывания, что значительно облегчает работу разработчиков.
В этом подробном руководстве описывается, как бесшовно перенести ваш существующий сайт с NGINX на встроенный сервер Caddy в ServBay. Мы рассмотрим процесс миграции на примере популярных PHP-фреймворков Laravel и систем управления контентом WordPress.
Всесторонняя поддержка веб-серверов в ServBay
ServBay обеспечивает полную поддержку Caddy, NGINX и Apache. В зависимости от потребностей проекта вы можете гибко переключать веб-сервер по умолчанию. Подробнее смотрите в документации Как переключить веб-сервер по умолчанию.
Обзор
Миграция сайта с одного веб-сервера на другой включает перенос конфигурационных и файлов сайта. В ServBay процесс перехода на Caddy максимально упрощен. Для большинства PHP-фреймворков и CMS (таких как Laravel, WordPress, Symfony, CodeIgniter, Drupal, Joomla и др.) предусмотрена работа «из коробки» и, как правило,нет необходимости вручную создавать или редактировать конфигурации Caddy. ServBay автоматически генерирует Caddyfile на основе настроек сайта в графическом интерфейсе.
Подготовка к миграции
Перед началом любых операций по миграции обязательно выполните следующие шаги:
- Резервное копирование файлов сайта: Сделайте полную резервную копию всех файлов и папок из корневого каталога вашего сайта.
- Бэкап базы данных: Выполните резервное копирование используемой сайтом базы данных (например, MySQL, PostgreSQL, MongoDB и др.). ServBay предоставляет встроенную утилиту для управления базами данных, также поддерживается ручное резервирование.
- Установка ServBay: Убедитесь, что вы успешно установили и запустили ServBay на macOS.
- Расположение файлов: Поместите файлы своего сайта в стандартный корневой каталог ServBay
/Applications/ServBay/www
или в его подкаталог. Например, если ваш проект называетсяmyproject
, разместите его в/Applications/ServBay/www/myproject
.
Как работает Caddy в ServBay
Понимание того, как ServBay управляет конфигурациями Caddy, важно для корректной миграции. В отличие от ручного управления Caddyfile, в ServBay вы добавляете и настраиваете сайт через графический интерфейс. Когда вы добавляете сайт и выбираете Caddy в качестве веб-сервера, ServBay, на основе введённого вами домена, корня сайта, версии PHP и других данных, автоматически генерирует и управляет конфигурационными фрагментами Caddyfile. Эти фрагменты включаются в основной Caddyfile, что гарантирует корректную работу сайта.
Таким образом, при добавлении сайта через GUI ServBay, все необходимые настройки Caddy уже автоматически применяются — нет необходимости вручную редактировать .caddyfile
или другие текстовые файлы.
Шаги миграции
Перенести сайт с NGINX на сервер Caddy в ServBay очень просто:
- Запустите ServBay: Убедитесь, что приложение ServBay работает.
- Разместите файлы сайта: Скопируйте или переместите файлы сайта NGINX (вместе со всеми исходными файлами, изображениями, CSS, JS и др.) в новый каталог в корне сайтов ServBay, например, в
/Applications/ServBay/www/your-site-name
. - Добавьте сайт через GUI ServBay:
- Откройте приложение ServBay.
- Перейдите в раздел «Сайты» (Websites).
- Нажмите кнопку «Добавить сайт».
- Заполните информацию о сайте:
- Домен (Domain): Укажите домен для локального доступа, например,
your-site-name.servbay.demo
. - Корневая папка сайта (Website Root): Выберите каталог, куда вы разместили сайт на предыдущем шаге, например,
/Applications/ServBay/www/your-site-name
. - Веб-сервер (Web Server): Выберите
Caddy
. - Версия PHP (PHP Version): Укажите версию PHP, необходимую сайту.
- Домен (Domain): Укажите домен для локального доступа, например,
- Нажмите «Сохранить» или «Создать».
- Проверьте сайт: ServBay автоматически добавит домен в ваш локальный файл hosts и настроит Caddy. Перейдите в браузере по адресу выбранного домена (например,
http://your-site-name.servbay.demo
) и проверьте отображение сайта. - Базы данных: Если вашему сайту необходима база данных, убедитесь, что соответствующий сервис (MySQL, PostgreSQL и др.) запущены в ServBay и обновите параметры доступа к базе в конфигурационных файлах сайта (обычно адрес базы —
127.0.0.1
илиlocalhost
, имя пользователя и пароль).
Пример: Миграция сайта Laravel
Пример типовой конфигурации NGINX (для справки)
Ниже приведён пример конфигурационного файла NGINX для Laravel. Здесь показано, как заданы корень сайта, основной файл входа (index.php
) и параметры обработки PHP FastCGI:
nginx
server {
listen 80;
server_name laravel.servbay.demo; # Пример домена ServBay
root /Applications/ServBay/www/laravel/public; # Указывает на public-директорию Laravel
index index.php index.html index.htm;
location / {
# Пытается найти файл или папку, если не найдено — пересылает запрос на index.php
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# Настраивает обработку PHP FastCGI
include fastcgi_params;
# Стандартный путь к сокету PHP-CGI в ServBay
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# Блокирует доступ к скрытым файлам
deny all;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Соответствующая конфигурация Caddy в ServBay (генерируется автоматически, не требует ручного вмешательства)
Не требуется ручная настройка Caddyfile
В ServBay не нужно вручную создавать или редактировать Caddyfile для реализации подобной функциональности. Все необходимые настройки автоматически генерируются в GUI при добавлении сайта. Пример ниже только иллюстрирует, каким образом ServBay интерпретирует аналогичную конфигурацию NGINX, для вашего понимания принципов работы.
Ниже приведён теоретический конфигурационный фрагмент Caddy, который ServBay сгенерирует для Laravel сайта (упрощённая версия, фактические параметры могут быть дополнены для расширенной функциональности):
bash
# Эта конфигурация управляется ServBay автоматически
laravel.servbay.demo {
# Устанавливает корневой каталог сайта
root * /Applications/ServBay/www/laravel/public
# Обработка PHP FastCGI, путь к сокету PHP-CGI в ServBay
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# Включает обслуживание статических файлов
file_server
# Определяет шаблон для нестатических файлов
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# Для нестатических файлов происходит rewrite на index.php
rewrite @notStatic /index.php
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Пошаговая миграция Laravel:
- Скопируйте файлы Laravel проекта в
/Applications/ServBay/www/laravel
. - Убедитесь, что директорией входа сайта указана
laravel/public
. - Добавьте новый сайт через GUI ServBay: домен
laravel.servbay.demo
, корень сайта/Applications/ServBay/www/laravel/public
, веб-сервер —Caddy
. - В файле
.env
Laravel укажите корректные параметры подключения к базе данных. - Проверьте работу сайта по адресу
http://laravel.servbay.demo
.
Пример: Миграция сайта WordPress
Пример типовой конфигурации NGINX (для справки)
Пример стандартной конфигурации NGINX для WordPress:
nginx
server {
listen 80;
server_name wordpress.servbay.demo; # Пример сервиса на домене ServBay
root /Applications/ServBay/www/wordpress; # Путь до каталога WordPress
index index.php index.html index.htm;
location / {
# Правила для красивых ссылок WordPress
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
# Настраивает обработку PHP FastCGI
include fastcgi_params;
# Стандартный путь к сокету PHP-CGI в ServBay
fastcgi_pass unix:/Applications/ServBay/tmp/php-cgi.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
# Запрещает доступ к скрытым файлам
deny all;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Соответствующая конфигурация Caddy в ServBay (генерируется автоматически, не требует ручного вмешательства)
Не требуется ручная настройка Caddyfile
Для WordPress также все правила Caddy создаются автоматически в интерфейсе ServBay. Пример ниже иллюстрирует, каким образом ServBay реализует поддержку красивых ссылок и другое поведение WordPress.
Пример теоретически сгенерированной конфигурации Caddy для WordPress:
bash
# Эта конфигурация управляется ServBay автоматически
wordpress.servbay.demo {
# Указывает корневой каталог сайта
root * /Applications/ServBay/www/wordpress
# Обработка PHP FastCGI
php_fastcgi unix//Applications/ServBay/tmp/php-cgi.sock
# Включает обслуживание статических файлов
file_server
# Определяет шаблон для нестатических файлов
@notStatic {
not {
file {
try_files {path} {path}/ /index.php?{query}
}
}
}
# Для нестатических файлов происходит rewrite на index.php (чистые URL)
rewrite @notStatic /index.php
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Пошаговая миграция WordPress:
- Скопируйте файлы WordPress в
/Applications/ServBay/www/wordpress
. - Добавьте новый сайт через GUI ServBay: домен
wordpress.servbay.demo
, корень сайта/Applications/ServBay/www/wordpress
, веб-сервер —Caddy
. - В файле
wp-config.php
укажите корректные параметры подключения к базе данных. - Проверьте работу сайта по адресу
http://wordpress.servbay.demo
. Если возникают проблемы с красивыми ссылками, скорее всего, дополнительные настройки не нужны — ServBay уже обрабатывает необходимые правила. Проверьте, верно ли указан вид постоянных ссылок в админ-панели WordPress («Настройки» → «Постоянные ссылки»).
Особенности и рекомендации
- Параметры доступа к базе данных: После миграции обязательно обновите конфигурации для подключения к базе данных, чтобы они указывали на сервисы баз данных, запущенные в ServBay.
- Переменные окружения: Если ваше приложение зависит от определённых переменных окружения, обязательно добавьте их в среду ServBay (например, через
.env
для PHP или конфигурации ServBay). - Сложные конфигурации NGINX: Приведённые выше примеры рассчитаны на типовые установки Laravel и WordPress. Если в вашей конфигурации NGINX используются сложные правила, специфические модули или нестандартные настройки, автоматическая генерация может покрыть не все сценарии. В таких случаях обратитесь к официальной документации Caddy, а также к расширяемым точкам конфигурации ServBay (если доступны), либо изучите автоматически сгенерированные правила для построения нужного поведения вручную. Для большинства стандартных сайтов автоконфигурация ServBay полностью достаточна.
- HTTPS/SSL: ServBay поддерживает локальную генерацию сертификатов HTTPS для разработки. Вы можете использовать ServBay User CA или ServBay Public CA для выпуска и доверия к SSL-сертификатам без ручной настройки директив Caddy TLS.
Заключение
Миграция сайта с NGINX на сервер Caddy в ServBay стала значительно проще благодаря автоматическому управлению конфигурациями. Для таких приложений, как Laravel и WordPress, зачастую достаточно разместить файлы в нужной папке и добавить сайт в GUI ServBay. Все вопросы по URL-переписываниям, обработке PHP FastCGI и другим важным настройкам будут решены автоматически — вы сможете быстро развернуть сайт на Caddy в своей локальной среде.