poniedziałek, 14 stycznia 2008

Lepszy Apache - wprowadzamy małe zmiany w httpd.conf - #1 UserDir

W tytule specjalnie umieściłem słowo małe, bowiem zmiany będą naprawdę kosmetyczne. Pomimo, że zaraz po instalacji Apache jest gotów do pracy, to jednak przydaje się kilka drobnych udogodnień, które sprawią że wszystko będzie śmigało tak jak my chcemy :)

Pierwszym takim udogodnieniem jest z pewnością userdir_module. Co nam daje? Ano sprawia, że każdy użytkownik systemu (mówię tu o Fedorce i innych dystrybucjach) otrzymuje możliwość przechowywania swojej strony we własnym katalogu domowym - np pod adresem http://localhost/~sdr/ widoczne są pliki utrzymywane w /home/sdr/public_html. Jest to bardzo wygodne rozwiązanie, bowiem jeśli administujemy typowym serwerem WWW to pewnie umożliwiamy też zdalny dostęp do konta poprzez protokół FTP. Wówczas bardzo łatwo ograniczyć dostęp użytkownika do katalogów innych niż jego własny home, poprzez zamknięcie go w jailu. Ale to temat na inną okazję :)

Jak konfigurujemy moduł userdir? Najpierw jako root otwieramy do edycji plik konfiguracyjny Apache'a. Robimy to poleceniem:

vim /etc/httpd/conf/httpd.conf

Około linii 185 powinien znajdować się wiersz:

LoadModule userdir_module modules/mod_userdir.so

Upewniamy się, że nie jest on przypadkiem zahaszowany (zakomentowany, tzn. czy na początku linii nie znajduje się znak #). Nie powinien.

Tip: Jeśli jest, naciskamy klawisz i, a następnie ustawiamy się kursorem (strzałki - jakby ktoś nie wiedział :>) za # i usuwamy go klawiszem Backspace (zapamiętać podstawy vima na przyszłość, bo nie będę powtarzał ;D).

W wierszu 337 odnajdujemy zakomentowaną notatkę odnośnie użytkowania modułu. Znajdują się tam wskazówki na temat praw dostępu dla poszczególnych katalogów. Tym zajmiemy się za moment. Kilka wierszy niżej można zauważyć pierwszy wpis konfiguracyjny dla modułu.

UserDir disable

Domyślnie powinien być zakomentowany. Jest tak ze względów bezpieczeństwa, gdyż włączony userdir mod umożliwia odgadnięcie istniejących nazw użytkownika systemu. Nie ma jednak wyjścia, albo wóz albo przewóz ;p Haszujemy linię.

#UserDir disable

Jeszcze niżej, tuż nad </IfModule> znajduje się druga dyrektywa. Ta jest domyślnie zakomentowana.

#UserDir public_html

Mówi ona serwerowi, gdzie ma szukać strony jeśli w przeglądarce wpisany zostanie adres z nazwą użytkownika systemu (np wspomniany http://localhost/~sdr/). Wartość public_html wskazuje na podkatalog public_html w katalogu użytkownika. Tutaj usuwamy znak # z początku linii. Z trybu edycji wychodzimy poprzez naciśnięcie klawisza Esc i wpisanie :wq oraz zatwierdzenie Enterem.

Teraz musimy utworzyć w katalogu domowym użytkownika (np /home/sdr) podkatalog public_html, który wykorzystamy do przechowywania naszej strony. Można od razu umieścić wewnątrz dokument index.html ze standardową zawartością i napisem Hello world ;)

Następnie ustawiamy stosowne prawa dostępu do katalogu, tak aby Apache nie miał problemów z pobraniem i wyświetleniem naszej witryny. Zgodnie z zaleceniami wspomnianej notatki:

# The path to the end user account 'public_html' directory must be
# accessible to the webserver userid. This usually means that ~userid
# must have permissions of 711, ~userid/public_html must have permissions
# of 755, and documents contained therein must be world-readable.
# Otherwise, the client will only receive a "403 Forbidden" message.

Tą sprawę najlepiej załatwić z konsoli. Wydajemy kolejno dwa polecenia:

chmod 711 /home/sdr
chmod 755 /home/sdr/public_html
ls -l /home/sdr/public_html

Ostatnie z powyższych poleceń wylistuje nam katalog, w którym znajduje sie index.html i inne pliki przeznaczone do udostępnienia w ramach strony. Dzięki temu możemy upewnić się czy na pewno wszystkie są zdatne do odczytu (standardowe prawa 664, lub -rw-rw-r-- w notacji literowej).

Jeżeli wszystko wygląda OK, możemy przystąpić do testu. Restartujemy Apache, uruchamiamy przeglądarkę i wchodzimy na stronę http://localhost/~sdr/, gdzie sdr to oczywiście nazwa użytkownika, w którego katalogu domowym umieściliśmy index.html. Napis Hello world widniejący w oknie przeglądarki potwierdzi pomyślne zakończenie operacji :)

Z małego how-to wyszedł trochę dłuższy tutorial, więc postanowiłem rozbić go na dwie części. Tego posta kończę na omówionym userdir, a w kolejnym odcinku pokażę jak na apaczu uruchomić vhosty i podpiąć pod swojego home'a wirtualne domeny.

Zauważyłeś błąd w artykule? Coś nie działa? Zostaw swoje uwagi w komentarzach.

niedziela, 13 stycznia 2008

Podstawa - instalacja serwera Apache, PHP i MySQL na systemie Fedora

Od pierwszego posta upłynęło trochę czasu i może niektórym nasuwały się jakieś myśli, że jednak ten blog nie wypali czy coś. Niestety sporą rolę odegrał tu tradycyjnie brak dłuższej chwili wolnego czasu. Teraz postaram się to nadrobić, publikując dwa posty :)

Kiedyś, dawno temu, jak jeszcze pracowałem na Windows za lokalny serwer WWW służył mi wszystkim znany i mniej lub bardziej lubiany kombajn Krasnal ;) Czasy jednak się zmieniają, dojrzałem, przesiadłem się na Linucha, a tu zonk - Krasnala nie ma! Poszukałem więc czegoś podobnego i znalazłem pakiet XAMPP. Dziś jednak nie o nim będę pisał, spokojnie. XAMPP ma swoje zalety, jednak nie jest też idealnym rozwiązaniem, tym bardziej że użytkownicy Fedory mają pod ręką tak potężne narzędzie jak Yum :D Cóż to jest? Pokrótce wytłumaczę wszystkim, którzy nigdy nie mieli styczności z żadną linuksową dystrybucją. Yum to proste narzędzie uruchamiane w konsoli systemu ułatwiające znacząco instalację i aktualizację oprogramowania (w tym składników systemu). To najprostsza definicja - więcej można doczytać w sieci. Jak wiadomo, niektóre programy instalowane w systemie wymagają do pracy spełnienia zależności, czyli doinstalowania innych programów, bibliotek lub składników. Czasami jest to naprawdę uciążliwe, choćby ze względu na fakt, że te doinstalowywane elementy też mogą mieć swoje wymagania xD Brzmi groźnie? Możliwe. Jednak dysponując Yumem nie ma się czego obawiać - on wszystko zrobi za nas.

No więc, jak zainstalować i uruchomić ten cholerny serwer? :> Otóż wystarczy wejść do konsoli i wykonać dosłownie dwa proste polecenia:

1. Logujemy się jako root. Jest to konieczne jeśli chcemy dokonać w systemie jakichkolwiek poważnych zmian, a instalacja czegokolwiek takową bez wątpienia jest :)
su --

Wpisujemy hasło roota i naciskamy Enter.

2. Wpisujemy

yum install httpd\* php\* mysql\*

Teraz Yum zaczyna mielić. Odpytuje repozytoria czy mają jakiś soft, którego nazwa zaczyna się od httpd (Apache), php lub mysql. Jeśli znajdzie, po chwili naszym oczom powinna ukazać się piękna, obszerna lista z wynikami. Znajdziemy na niej szukane elementy wraz z istniejącymi dodatkami (biblioteki, rozszerzenia, moduły, etc). Na końcu znajduje się prośba o potwierdzenie chęci instalacji wyszczególnionych pozycji. Zatwierdzamy wpisując Y i naciskając Enter. Teraz komponenty serwera są pobierane i instalowane, a my mamy trochę czasu dla siebie :)

Tip: Gdyby podczas instalacji program się wysypywał, możliwe że jakieś pakiety gryzą się ze sobą. Wówczas jesteśmy zmuszeni do rezygnacji z jednego z nich. Rozpoczynamy wszystko od nowa, wpisując:

yum -x nazwa_paczki install httpd\* php\* mysql\*

Po zakończonej instalacji Yum wyświetli wyczekiwany komunikat Complete! i będziemy mogli rozpocząć korzystanie z WWW na własnym komputerze. To właśnie jeden z plusów instalacji komponentów serwera przez Yuma. Nie musimy martwić się o żadną dodatkową konfigurację. PHP i MySQL praktycznie od razu współpracują z Apachem.

WWW i MySQL można uruchomić kolejno poleceniami:

/etc/init.d/httpd start
/etc/init.d/mysqld start

Dodatkowo, w zależności od potrzeb korzystamy z parametrów restart i stop.

Z podstawowych informacji warto nadmienić też, że dostęp do phpMyAdmin uzyskujemy przez adres http://127.0.0.1/phpMyAdmin/, a zawartość głównego katalogu możemy przeglądać przez http://127.0.0.1 lub http://localhost (zależy od lokalnych ustawień systemu).

Pliki swojej strony WWW umieszczamy natomiast w katalogu

/var/www/html

Jeśli wszystko będzie w porządku, po uruchomieniu serwera i przejściu pod adres http://127.0.0.1 zobaczymy mniej więcej coś takiego:


To chyba byłoby tyle. W kolejnym odcinku napiszę jak można pobawić się ustawieniami dostępnymi w httpd.conf, czyli pliku konfiguracyjnym Apache'a.

PS. Udostępniłem możliwość komantowania dla każdego, nie tylko dla posiadaczy konta Google lub OpenID co teraz powinno być na standardowym wyposażeniu każdego internauty ;) Ostrzegam jednak, że brzydkie komentarze będą sukcesywnie usuwane.

Zauważyłeś błąd w artykule? Coś nie działa? Zostaw swoje uwagi w komentarzach.