Etykiety

linux (14) php (14) Laravel (9) mysql (9) Hardware (8) Windows (6) sieci (5) PowerShell (4) software (4) MariaDB (3) apache (3) html (3) Microsoft (2) bezpieczeństwo LAN (2) cygwin (2) Akcesoria (1) CMS (1) Laptop (1) Open Office (1) drupal 7 (1) gpg (1) hosting (1) jquery (1) sieci LAN (1) xml (1) zabezpieczenie sieci LAN (1)

wtorek, 31 stycznia 2017

Jak ustawić przerwę techniczną witryny www

Podczas gdy możliwość ustawienia przerwy technicznej przeważnie nie ma większego sensu dla prostych serwisów web, to w przypadku bardziej złożonych witryn bywają sytuacje, w których warto tymczasowo całkowicie uniemożliwić dostęp użytkowników do treści stron. Są to przeważnie okoliczności związane z modyfikacją skryptów odpowiedzialnych za wyświetlanie treści lub z ingerencją w strukturę baz danych związanych z serwisem. Żaden webmaster raczej by nie chciał by osoby wówczas odwiedzające serwis napotykały się na wyświetlane błędy lub nieprawidłowe treści związane z wprowadzaniem modyfikacji lub z testowaniem nowych funkcjonalności serwisu.

Pomimo iż istnieje zgodny z dobrymi praktykami sposób na ustawienie przerwy technicznej serwisu www, to w praktyce webmasterzy posługują się w tym celu różnymi metodami mniej lub bardzie eleganckimi i mniej lub bardziej technicznie odpowiednimi. Niektóre z tych metod mogą bardzo negatywnie wpłynąć, nie tylko na reputację serwisu wśród odwiedzających, ale także na pozycję stron w wyszukiwarkach.

A może tak mała przerwa techniczna?
A może tak mała przerwa techniczna?

W przypadku konieczności ustawienia tymczasowej przerwy technicznej zdecydowanie odradzam wyłączać lub ograniczać funkcjonalność serwera www, ograniczać dostęp do serwisu za pomocą chronionych katalogów, reguł firewalla, bądź bezpośrednio wysyłając nagłówki z poziomu skryptów php za pomocą funkcji header(). Tego typu praktyki nie są przeważnie idealne dla przerwy technicznej, a mogą wręcz być przyczyną wielu negatywnych sytuacji.

W tym tutorialu przedstawię prosty i prawidłowy sposób ustawienia przerwy technicznej dla serwisu web obsługiwanym przez serwer Apache 2.x. Jest to sposób w pełni zgodny z dobrymi praktykami webmasterskimi.

W celu ustawienia przerwy technicznej w serwisie www w sposób omawiany w niniejszym artykule, muszą zostać spełnione następujące, wstępne warunki:

Moduł Apache mod_rewrite


Moduł Apache mod_rewrite (rewrite_module) umożliwia przekierowywania url, które w przypadku przerwy technicznej powinny kierować użytkownika na adres url, pod którym znajduje się dokument web informujący o tymczasowej sytuacji, w przypadku żądań HTTP dotyczących każdego innego adresu url, znajdującego się na domenie serwisu. Przed przejściem do dalszej części tego artykułu należy się upewnić, że moduł ten jest uruchomiony i działa prawidłowo. Można tego dokonać na kilka różnych sposobów. Najprostszym z nich może być, jeśli mamy dostęp do konsoli:

apachectl -M | grep rewrite_module

Innym prostym sposobem jest wywołanie polecenia php phpinfo() i sprawdzenie statusu modułu mod_rewrite w wyświetlanych wynikach skryptu.

Aby załadować moduł Apache mod_rewrite, jeśli nie jest jeszcze załadowany, należy dodać poniżej przedstawiony wiersz do pliku httpd.conf, lub do pliku /etc/httpd/conf.modules.d/, w zależności od dystrybucji systemu, po czym należy uruchomić ponownie serwer Apache:

LoadModule rewrite_module modules/mod_rewrite.so

Plik .htaccess


Plik .htaccess jest miejscem, w którym można ustawić wiele istotnych parametrów serwera www, które mają obowiązywać dla danego katalogu i ewentualnie jego podkatalogów, pod warunkiem, iż nie zawierają one kolejnych plików .htaccess z innymi ustawieniami, jeśli przetwarzanie plików .htaccess dla tych podkatalogów jest włączone. Aby ustawienia znajdujące się w tym pliku miały efekt, musi właśnie zostać włączona ich obsługa dla danego katalogu. Ustawień tych dokonujemy w głównym pliku konfiguracyjnym serwera Apache, czyli httpd.conf. Aby włączyć obsługę pliku .htaccess dla danego katalogu serwisu www, należy w sekcji <Directory> związanej z tym katalogiem dodać następujący wpis, jeśli jeszcze nie jest on tam obecny:

AllowOverride All

Przerwa techniczna: strona informująca o przerwie


Aby przekierowanie do dokumentu informującego o tymczasowej przerwie technicznej przyniosło efekt należy stworzyć dokument web z właściwą dla tej okoliczności informacją. Dla zgodności z niniejszym tutorialem, plik może mieć przykładową nazwę przerwaTechniczna.html i może znajdować się w głównym katalogu www serwera Apache, czyli lokalizacji określonej jako DocumentRoot w pliku konfiguracyjnym httpd.conf.

Przerwa techniczna: ustawienia .htaccess


Zakładając, że moduł mod_rewrite, o którym pisałem wcześniej, działa prawidłowo, a obsługa plików .htaccess jest włączona dla katalogów związanych z naszym serwisem, możemy teraz przystąpić do wprowadzenia odpowiednich, przykładowych wierszy „przerwy technicznej" do pliku .htaccess związanego z naszą witryną:

<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{DOCUMENT_ROOT}/przerwa-techniczna -f RewriteCond %{REMOTE_ADDR} !^192\.168\.0\.1 RewriteCond %{REQUEST_URI} !przerwaTechniczna.html$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /przerwaTechniczna.html [R=302,L] </IfModule>

Świetnie! Ale, co to wszystko oznacza?

W sekcji rozpoczynającej się od <IfModule mod_rewrite.c>, a kończącej na &lt/IfModule&gt znajdują się dyrektywy serwera Apache, które są przetwarzane tylko w przypadku prawidłowo działającego modułu mod_rewrite, w celu uniknięcia błędów. Dyrektywa 'RewriteEngine on' włącza przekierowania url, a kolejne wiersze ustawień przekierowują użytkownika do dokumentu informującego o przerwie technicznej w przypadku żądań HTTP dotyczących każdego innego adresu url witryny. Warunkiem przekierowań jest obecność pliku o przykładowej nazwie przerwa-techniczna w głównym katalogu www, określonego jako 'DocumentRoot' w pliku httpd.conf. Przekierowanie jednak nie następuje w przypadku wywołania plików zawierających grafikę, bądź wywołania adresu url dokumentu informującego o przerwie (aby uniknąć nieskończonej pętli przekierowań). Dodatkowo, użytkownicy, którzy łączą się z witryną z adresu 192.168.0.1 (tutaj adres klasy 'C' - dla przykładu - ten adres można oczywiście dowolnie zmienić) nie zostają przekierowani do dokumentu informującego o przerwie technicznej, co oznacza, że mają pełen dostęp do treści serwisu. Dostęp do serwisu w trakcie przerwy technicznej może okazać się przydatny np. webmasterom.

Warto również zauważyć, że przekierowanie następuje z kodem HTTP Error 302 (moved temporarily), co stanowi cenną informację dla robotów indeksujących zawartość witryny. W przypadku prawidłowo ustawionej przerwy technicznej, klient żądający dostępu do przekierowywanych adresów uri, otrzymuje następującą, przykładową odpowiedź HTTP:

HTTP/1.1 302 FoundLocation: http://naszadomena/przerwaTechniczna.html

Ustawienia wstępne gotowe. Czas włączyć przerwę techniczną!


Po dokonanych ustawieniach wstępnych, aby włączyć przerwę techniczną, należy utworzyć plik, o przykładowej nazwie, zgodnej z nazwą obecną w regułach przekierowań w pliku .htaccess, która w naszym przykładzie brzmi 'przerwa-techniczna'. Dopóki plik ten będzie istniał we wskazanym katalogu, obowiązywała będzie przerwa techniczna, co oznacza, że odwiedzający będą przekierowywani do dokumentu web o niej informującym.

Podobnie, aby zakończyć przerwę techniczną i przywrócić pełną dostępność serwisu, wystarczy usunąć plik 'przerwa-techniczna' z katalogu.

Oczywiście nie ma sensu każdorazowo tworzyć i usuwać tego pliku ręcznie, gdyż można w tym celu przygotować bardzo prosty skrypt php, składający się z zaledwie kilku wierszy, który będzie wykonywał tą czynność za nas.

Powodzenia! W przypadku uwag lub wątpliwości bardzo proszę o komentarze. Będę starał się na nie odpowiadać tak szybko, jak tylko będzie to możliwe.

1 komentarz:

  1. Korzystanie z sieci bez zakłóceń i przerw? Tylko jeśli korzystamy z solidnej usługi a takie oferuje wiele dostawców. Mogą to być firmy ogólnopolskie bądź te działające lokalnie, jak https://fiberlink.pl/ na terenie Małopolski. Przed wyborem oferty warto sobie porównać warunki, sprawdzić oferowaną prędkość i sposób przesyłania internetu. Najpopularniejsza opcja obecnie to światłowód.

    OdpowiedzUsuń

Dodaj komentarz