CMTS info

Helpful linux and DOCSIS/CMTS howtos and tips

Instalacja Apache httpd

1) Instalacja

Serwer Apache httpd spotykany jest w wielu dystrybucjach Linuxa jako opcjonalny pakiet do zainstalowania, można również skompilować go ze źródeł. Co więcej są też pakiety do instalacji pod Windowsem. Ponieważ instalacja pakietu w każdej dystrybucji przebiega odmiennie, tutaj skupimy się na instalacji ze źródeł pod systemem Linux.

Aby zainstalować serwer httpd należy ściągnąć i rozpakować źródła programu.

gzip -d httpd-NN.tar.gz
tar xvf httpd-NN.tar
cd httpd-NN

Oczywiście zamiast NN wpisujemy aktualną wersję programu. Następnie należy skompilować oraz zainstalować program.

./configure
make
make install

Domyślnie program zainstaluje się w /usr/local/apache2 co można zmieniać zmienną --prefix=katalog np.

./configure –prefix=/usr
2) Pierwsze uruchomienie

Po instalacji w większości przypadków serwer gotowy jest do pracy. Należy go jedynie uruchomić.

/usr/local/apache2/bin/apachectl start

Jak widać na przykładzie za zarządzanie serwerem httpd odpowiada program apachectl. Poza zwykłymi funkcjami: start, stop oraz restart ma on też szereg ciekawych funkcji.

Parametr -l pokazuje listę skompilowanych modułów
Parametr -L pokazuje listę dyrektyw konfiguracyjnych (opcji w pliku konfiguracyjnym)
Parametr -S pokazuje ustawienia vhostów
Parametr -M pokazuje listę załadowanych modułów
Parametr -t sprawdza poprawność pliku konfiguracyjnego - warto uruchomić przed restartowaniem serwera

W przypadku kiedy serwer nam się nie uruchamia bądź nie działa jak należy najpierw sprawdzić poprawność pliku konfiguracyjnego,a jeśli tam nie znaleźliśmy błędów należy przejrzeć logi apache'a, znajdujące się domyślnie w katalogu /usr/local/apache2/logs .

Na tym etapie z serwera można pobierać dane z katalogu domyślnego /usr/local/apache2/htdocs

3) Podstawowa konfiguracja

Możemy teraz wskazać inny katalog główny np /var/www w pliku konfiguracyjnym standardowo zlokalizowanym w /usr/local/apache2/conf/httpd.conf

DocumentRoot - określa w jakim miejscu znajduje się katalog główny dla witryny:

DocumentRoot "/usr/local/apache2/htdocs" 

zamieniamy na:

DocumentRoot "/var/www"

Kolejnym krokiem jest ustawienie praw dostępu dla nowego katalogu. Najłatwiej jest to zrobić zamieniając nazwę starego katalogu na nowy w dyrektywie directory:

<Directory "/usr/local/apache2/htdocs"> 

zamieniamy na:

<Directory "/var/www">

Po czym należy zrestartować serwer wydając polecenie:

/usr/local/apache2/bin/apachectl restart

Teraz o ile nie mamy zapisanej kopii starej strony w pamięci przeglądarki pojawi się zawartość nowego katalogu.

4) Udostępnienie katalogów domowych użytkowników

Ta funkcjonalność pozwoli każdemu użytkownikowi posiadanie konta www na serwerze bez robienia dodatkowych wirtualnych hostów.
Wystarczy odkomentować linijkę:

#Include conf/extra/httpd-userdir.conf

oraz zrestartować serwer

/usr/local/apache2/bin/apachectl restart

Domyślnie serwowane są pliki z katalogów /home/nazwa_uzytkownika/public_html Aby zmienić katalog na np html należy w pliku conf/extra/httpd-userdir.conf linijki zawierające "public_html" zamienić na "html" tzn:

UserDir public_html  
<Directory "/home/*/public_html">

należy zamienić na:

UserDir html  
<Directory "/home/*/html">

Warto też wyłączyć automatyczne tworzenie indexów(w przypadku kiedy nie ma pliku index.html itp). Robi się to poprzez usunięcie słowa kluczowego Indexes z konfiguracji katalogów domowych użytkowników:

Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec

należy zamienić na:

Options MultiViews SymLinksIfOwnerMatch IncludesNoExec

Po zmianie należy zrestartować serwer i przy próbie otwarcia katalogu użytkownika bez pliku index otrzymamy komunikat o braku dostępu - 403.

5) Wirtualne hosty (metoda 1)

Kolejną bardzo istotną funkcją jest możliwość hostowania kilku domen na jednym komputerze. Można to osiągnąć w dwojaki sposób.

Pierwszą metoda wykorzystuje rozróżnianie nazw domen do jakich chce połączyć się klient
Wady:
-nie do użytku z SSL
-nie obsługiwane przez archaiczne przeglądarki
-trudność w dzieleniu pasma dla poszczególnych domen.
Zalety:
-oszczędność IP

Aby uruchomić taki system vhostów należy w głównym plik konfiguracyjnym odhashować linijkę:

#Include conf/extra/httpd-vhosts.conf

UWAGA! tracimy wtedy konfiguracje głównej domeny, więc należy ja dodać ponownie. Nie tracimy za to praw dostępu do katalogu.
Następnie należy wyedytować wymieniony wyżej plik. W głównej części są tam 2 hosty wirtualne. Pierwszy z nich jest hostem domyślnym, tzn jeśli nazwa nie pasuje do żadnego z nich to wybierany jest ten pierwszy.
między dyrektywami:

<VirtualHost *:80>
   ...
</VirtualHost>

Należy podać co najmniej 2 kolejne:
DocumentRoot oraz ServerName. Pierwsza to ścieżka do katalogu głównego, a druga to nazwa domeny do jakiej ma być przypisany serwer. Załóżmy, że mamy 2 domeny: example1.org oraz example2.org. Serwer ma również reagować na nazwy domen z www na początku. Główna część pliku wyglądałaby następująco:

<VirtualHost *:80>
   DocumentRoot "/var/www"
   ServerName example1.org
   ServerAlias example1.org www.example1.org
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/var/www2"
   ServerName example2.org
   ServerAlias example2.org www.example2.org
</VirtualHost>

Została dodana dyrektywa ServerAlias, która powoduje podlinkowanie domen z www na początku do samych nazw domenowych. Uwaga: do katalogu /var/www2 nie dodaliśmy praw w głównym pliku konfiguracyjnym. Najłatwiej uzyskać żądany efekt poprzez skopiowanie w głównym pliku pomiędzy:
<Directory "/var/www"> a </Directory> i zamienić nazwę z "/var/www" na "/var/www2"

6) Wirtualne hosty (metoda 2)

Drugą metodą uzyskania wirtualnych hostów jest przypisanie innych adresów IP dla każdej domeny.
wady:
-marnotrawstwo adresów IP
zalety:
-możliwość obsługi SSL
-możliwość podziału pasma dla domen.
-możliwość oddzielenia praw dostępu dla różnych domen(przejęcie kontroli jednego procesu przez hakera, może nie skończyć się uzyskaniem dostępu do wszystkich katalogów www dla domen.)

Do uruchomienia takiego vhosta należy jedynie w domyślnym pliku konfiguracyjnym wpisać adres IP zamiast *.

7) Szyfrowanie

Ważnym elementem bezpieczeństwa w internecie jest możliwość szyfrowania transmisji danych. Jest to możliwe też dla stron www, zarówno dla zawartości jak i przesyłanych haseł.

Najpierw należy stworzyć certyfikat SSL do szyfrowania.
Oto przykład z użyciem OpenSSL:

openssl req -new -x509 -days 9999 -nodes -out httpd.crt -newkey rsa:2048 -keyout httpd.pem
openssl x509 -subject -dates -fingerprint -in httpd.crt -out httpd.crt
chmod 600 httpd.pem

Aby włączyć tą funkcjonalność należy odkomentować linię w głównym pliku konfiguracyjnym:

#Include conf/extra/httpd-ssl.conf

Następnie we wskazanym pliku należy odhashować linie:

#SSLRandomSeed startup file:/dev/urandom 512
#SSLRandomSeed connect file:/dev/urandom 512

Niżej należy wyedytować dane o wirtualnym hoście:

<VirtualHost *:443>
        ServerName ssl.example.org
        DocumentRoot /var/www_ssl
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /sciezka do certyfikatu/httpd.crt
        SSLCertificateKeyFile /scieżka do klucza prywatnego/httpd.pem
</VirtualHost>

Tak jak we wcześniejszym przkładzie z wirtualnymi hostami tutaj tez należy dodatkowo określić prawa do udostępnianego katalogu.

Template: designsbydarren.com on license
All trademarks belong to their respective owners. All materials presented here for informational purposes only.