Как заменить работающий сайт Apache на новый, используя конфигурацию VirtualHost.

Вопрос или проблема

Я унаследовал настройку веб-сервера и брандмауэра. Хотя я уверен в добавлении поддоменов, изменяя файлы .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. Если конфигурации выполнены корректно, процесс может пройти без ощутимой задержки требования доступа к сайтам. При необходимости, всегда иметь резервное копирование текущих конфигураций настройки и данных для обеспечения отказоустойчивости и быстрого восстановления прежних конфигураций в случае ошибки.

Оцените материал
Добавить комментарий

Капча загружается...