Вопрос или проблема
Я унаследовал настройку веб-сервера и брандмауэра. Хотя я уверен в добавлении поддоменов, изменяя файлы .conf в папке sites-enabled Apache, мне нужна помощь в переключении действующего сайта на новый.
Цель
Я хочу заменить наш текущий сайт (www.oursite.com) на наш бета-сайт (newsite.oursite.com).
Текущее окружение
Существующий сайт (www.oursite.com)
<VirtualHost 10.5.0.x2:443 10.2.0.x2:443 10.3.0.x2:443>
ServerName www.oursite.com
ServerAlias www www1 www1.oursite.com
<If "%{HTTP_HOST} != 'www.oursite.com'">
Redirect "/" "https://www.oursite.com/"
</If>
DocumentRoot /home/oursite/public_html/WWW
ErrorLog /home/oursite/wwwlogs/error_log
CustomLog /home/oursite/wwwlogs/access_log common
ScriptAlias /cgi-bin/ "/home/oursite/public_html/CGI/"
ScriptAlias /cgi/ "/home/oursite/public_html/CGI/"
Include extra/ssl-certs # Generated by certbot
</VirtualHost>
Бета-сайт (newsite.oursite.com)
<VirtualHost *:80>
ServerName newsite.oursite.com
ServerAlias newsite
Redirect "/" "https://newsite.oursite.com/"
</VirtualHost>
<VirtualHost 10.5.0.x2:443>
ServerName newsite.oursite.com
ServerAlias newsite
<If "%{HTTP_HOST} != 'newsite.oursite.com'">
Redirect "/" "https://newsite.oursite.com/"
</If>
SSLOptions +StdEnvVars
Include extra/wildcard-ssl-certs # Works!
ProxyRequests Off
ProxyPass / http://10.5.0.x4:8080/
ProxyPassReverse / http://10.5.0.x4:8080/
</VirtualHost>
Вопросы
- Достаточно ли изменить ServerName и ServerAlias в этих файлах .conf (на
и веб-сервере, и на брандмауэре), чтобы
newsite.oursite.com стал www.oursite.com? - Чтобы сохранить старый сайт как historic.oursite.com, достаточно ли переименовать его
ServerName и обновить CNAME в DNS? - Есть ли какие-либо распространенные ошибки, которые стоит учитывать при изменении
этих конфигураций? - Кроме изменений конфигурации Apache, есть ли настройки брандмауэра или другие конфигурации, которые я должен просмотреть?
В идеале, я хотел бы достичь этого, изменив файлы .conf Apache и перезапустив Apache без изменений DNS. Любой совет от опытных в Apache и настройках прокси будет очень ценным!
Ответ или решение
Обновление активного сайта Apache и замена его новым, используя конфигурацию VirtualHost, может оказаться сложной задачей, если вы никогда с этим не сталкивались ранее. Однако, зная базовые принципы работы Apache и следуя правильной логике замен конфигурации, процесс можно упростить и минимизировать риск ошибок. Давайте рассмотрим теорию, примеры и практическое применение этого процесса.
Теория
VirtualHost в Apache
Apache HTTP Server широко используется для хостинга веб-сайтов благодаря своей гибкости, особенно когда речь идет о конфигурациях VirtualHost. VirtualHost позволяет серверу обслуживать различные веб-сайты с разными доменными именами и конфигурациями на одном сервере.
Основной аспект, который необходимо понять: VirtualHost работают по принципу сопоставления домена и его IP-адреса с параметрами конфигурации, которые обеспечивают правильное отображение контента для этого домена.
Пример
Нынешняя конфигурация
Ваш существующий активный сайт www.oursite.com настроен следующим образом в файле конфигурации:
<VirtualHost 10.5.0.x2:443 10.2.0.x2:443 10.3.0.x2:443>
ServerName www.oursite.com
ServerAlias www www1 www1.oursite.com
<If "%{HTTP_HOST} != 'www.oursite.com'">
Redirect "/" "https://www.oursite.com/"
</If>
DocumentRoot /home/oursite/public_html/WWW
ErrorLog /home/oursite/wwwlogs/error_log
CustomLog /home/oursite/wwwlogs/access_log common
ScriptAlias /cgi-bin/ "/home/oursite/public_html/CGI/"
ScriptAlias /cgi/ "/home/oursite/public_html/CGI/"
Include extra/ssl-certs # Generated by certbot
</VirtualHost>
Ваш бета-сайт (newsite.oursite.com):
<VirtualHost *:80>
ServerName newsite.oursite.com
ServerAlias newsite
Redirect "/" "https://newsite.oursite.com/"
</VirtualHost>
<VirtualHost 10.5.0.x2:443>
ServerName newsite.oursite.com
ServerAlias newsite
<If "%{HTTP_HOST} != 'newsite.oursite.com'">
Redirect "/" "https://newsite.oursite.com/"
</If>
SSLOptions +StdEnvVars
Include extra/wildcard-ssl-certs # Works!
ProxyRequests Off
ProxyPass / http://10.5.0.x4:8080/
ProxyPassReverse / http://10.5.0.x4:8080/
</VirtualHost>
Применение
1. Замена страниц местами
Чтобы заменить контент вашего текущего сайта новым, потребуется следующая последовательность действий:
- Изменение конфигураций VirtualHost:
- Скопируйте конфигурацию бета-сайта и замените
ServerName
наwww.oursite.com
иServerAlias
с ранее использованными на основном сайте. - Для старого сайта переработайте его конфигурацию так, чтобы
ServerName
сталhistoric.oursite.com
.
- Скопируйте конфигурацию бета-сайта и замените
Пример замены для бета на основной:
<VirtualHost 10.5.0.x2:443>
ServerName www.oursite.com
ServerAlias www www1 www1.oursite.com
<If "%{HTTP_HOST} != 'www.oursite.com'">
Redirect "/" "https://www.oursite.com/"
</If>
SSLOptions +StdEnvVars
Include extra/wildcard-ssl-certs # Works!
ProxyRequests Off
ProxyPass / http://10.5.0.x4:8080/
ProxyPassReverse / http://10.5.0.x4:8080/
</VirtualHost>
Для старого основного сайта:
<VirtualHost 10.5.0.x2:443 10.2.0.x2:443 10.3.0.x2:443>
ServerName historic.oursite.com
ServerAlias historic
DocumentRoot /home/oursite/public_html/WWW
ErrorLog /home/oursite/wwwlogs/error_log
CustomLog /home/oursite/wwwlogs/access_log common
ScriptAlias /cgi-bin/ "/home/oursite/public_html/CGI/"
ScriptAlias /cgi/ "/home/oursite/public_html/CGI/"
Include extra/ssl-certs # Generated by certbot
</VirtualHost>
2. Перезапуск Apache
После того, как вы внесли изменения в конфигурации, убедитесь в их правильности с помощью команды apachectl configtest
. Если ошибок нет, перезапустите сервер Apache с командой systemctl restart apache2
или service apache2 restart
в зависимости от вашей операционной системы.
3. Обновление DNS (при необходимости)
Если ваш внешний DNS-сервер управляется вручную и вы хотите избежать простоя или обеспечить доступ к историческим данным, измените соответствующие записи CNAME, чтобы они отражали изменения.
4. Проверка настроек файрвола
Убедитесь, что файрволы не блокируют новых направлений трафика для нового контента. Проверьте правила и убедитесь, что порты для HTTP и HTTPS открыты и доступны.
Заключение
Использование директивы VirtualHost
предоставляет гибкость в управлении конфигурациями веб-сайтов. Воплощение изменений связано с пересмотром текущих настроек и их корректировкой на целевой сервер. Важным шагом является проверка правильности синтаксиса и функциональности после перезапуска Apache. Если конфигурации выполнены корректно, процесс может пройти без ощутимой задержки требования доступа к сайтам. При необходимости, всегда иметь резервное копирование текущих конфигураций настройки и данных для обеспечения отказоустойчивости и быстрого восстановления прежних конфигураций в случае ошибки.