środa, 9 listopada 2011

Uruchamianie każdej strony z poziomu innego użytkownika

Z pewnych względów czasem lepiej uruchamiać każdą witrynę internetową trzymaną na serwerze w kontekście oddzielnego użytkownika. Łatwiej wtedy odseparować poszczególne serwisy. Uruchamiając każdy z poziomu odrębnego użytkownika możemy też bez problemu sprawdzić, który najbardziej obciąża nasz system. Opowiemy sobie dziś jak skonfigurować serwer apache żeby oddzielić od siebie strony www.

Zaczniemy od oprogramowania, które będzie nam potrzebne. Standardowo apache w systemach unixowych uruchamia witryny za pomocą modułu mpm_prefork. Zamiast niego musimy zainstalować mpm_itk. Proces instalacji nie sprawia wielu problemów.

Po zainstalowaniu zabieramy się za konfigurację.

Przygotowujemy nasz system

Przygotowujemy system czyli dodajemy użytkownika, które będzie obsługiwał nasz projekt.

#groupadd webpages
#useradd -s /bin/false -d /var/webpages/mywebpage -m -g webpages mywebpage

#mkdir /var/webpages/mywebpage/log /var/webpages/mywebpage/www

Powyższy skrypt tworzy nam grupę i dodaje użytkownika, który będzie obsługiwał projekt. Pierwsza linijka nie wymaga chyba komentarza.

W drugiej linii tworzymy użytkownika z następującymi opcjami:

  • -s /bin/false pozbawia naszego użytkownika shella (a mówiąc precyzyjnie, przypisuje mu powłokę /bin/false, która nic nie robi)
  • -d /var/webpages/mywebpage -m tworzy użytkownikowi katalog domowy.
  • -g webpages dodaje naszego usera do grupy webpages, którą stworzyliśmy w pierwszej linijce.
  • mywebpage to po prostu nazwa naszego użytkownika

Ostatnia linijka tworzy w katalogu domowym użytkownika podkatalogi na zawartość witryny i na generowane przez nią logi.

Konfigurujemy hosta wirtualnego w apache

Użytkownika mamy już gotowego. Czas napisać kod konfiguracji serwera apache. Nie jest on szczególnie skomplikowany.

<VirtualHost *:80>
   ServerAdmin   root@mywebsite.xyz
   ServerName    mywebsite.xyz

   DocumentRoot      /var/websites/mywebsite/www
   ErrorLog          /var/websites/website/log/error.log
   CustomLog         /var/websites/website/log/access.log combined
   php_admin_value   error_log   /var/websites/mywebsite/php.log
   <ifModule mpm_itk_module>
      AssignUserId mywebsite websites
   </IfModule>
<VirtualHost>

Oto cała konfiguracja. Co w niej mamy?

  • W drugiej linijce określamy adres e-mail administratora serwera
  • W trzeciej linijce określamy nazwę naszego hosta wirtualnego
  • W linijce piątej mówimy serwerowi, gdzie znajduje się katalog główny naszej witryny.
  • W trzech kolejnych liniach mówimy apaczowi i interpreterowi php gdzie znajdują się logi dla naszej witryny.
  • W kolejnych liniach określamy właście to, o czym jest z grubsza cały ten artykuł - mówimy serwerowi, że ten host wirtualny ma być uruchamiany w kontekście użytkownika mywebsite i grupy websites.

Powyższy skrypt zapisujemy na przykład w pliku mywebsite w katalogu /etc/apache2/sites-available/ Teraz wystarczy tylko włączyć stworzonego właśnie hosta i przeładować konfigurację apache. Zrobimy to tak:

#a2ensite mywebsite
#/etc/init.d/apache2 reload

Teraz już wszystko powinno grać i tańczyć.

Brak komentarzy:

Prześlij komentarz