HOME


 
Jeżeli ładowanie trwa zbyt długo (powyżej 2 min.), to zapraszam o innej porze.
Zobacz statystyki odwiedzin by ustalić porę najmniejszego obciążenia serwera.

Spakowana witryna o Linuksie w formacie RAR
 
DO_STR_GLOWNEJ_WYSZUKIWARKI
 
 
VHOSTS (Apache na Mandrake)

  

Pobierz spakowaną witrynę gorzow-wlkp.pl/linux

Jeżeli pragniesz poznać Linuksa Mandrake (obecnie Mandriva), to... dobrze trafiłeś. Witryna została zauważona przez twórców magazynu KOMPUTER ŚWIAT 5/2004(141) str. 46 poprzez umieszczenie linku oraz magazynu CHIP 4/2004 (str.114) poprzez umieszczenie artykułu opisującego ten serwis internetowy. Jak na hobbystyczną stronę o Linuksie to miłe ;) Acha... na stronie mandrakelinux.pl/informacje podano też link z opisem cytuję "duży zbiór praktycznych informacji o Mandrake" (mam ją w swoim archiwum - klub.chip.pl/twarogal).

Zapraszam do zadawania pytań na FORUM oraz mailem. oraz mailem. Chętnie udzielę (bezpłatnie) odpowiedzi. Oficjalne ceny za jedną poradę na stronie MandrakeSoftPL (mam ją w moim archiwum z dnia 2.05.2004) wahają się od 20 do 350 zł.

 


Jeżeli planujesz postawienie serwera http powinieneś pomyśleć o zakupie domeny np. .pl , .com wraz z bezpłatną obsługą serwerów DNS. Jak to zrobić? Zapraszam tutaj.

 

Niniejsza strona opisuje konfigurację tzw. serwerów wirtualnych na APACHE 2.x zainstalowanym pod Mandrake 10.x oraz Mandriva. Opis podstawowych informacji związanych z APACHE (instalacja, prawa do plików i katalogów, ścieżki dostępu) znajdziesz na stronie apache13.php, natomiast słowniczek pojęć na stronie apache13_konfigi.php. Informacje tam zawarte dotyczą co prawda wersji APACHE 1.3, ale na początek powinno to wystarczyć także dla wersji 2.x. Przyjąłem, że zaznajmiłeś się z nimi i masz wstępnie skonfigurowany serwer udostępniający strony www w Internecie. Oczywiście kupiłeś domenę typu np. gwiezdnysklep.pl i wraz z zakupem załatwiłeś sobie darmowe DNSy. Acha... gdy wpiszesz do przeglądarki adres gwiezdnysklep.pl/nazwakatalogu to otworzy się systemowy plik /var/www/html/nazwakatalogu/index.html . Jeżeli zadziała dopiero po wpisaniu do przeglądarki adresu ze znakiem / slash (czyli gwiezdnysklep.pl/nazwakatalogu/), to znaczy, że niedokładnie przeczytałeś sąsiednią stronę.

Na potrzeby artykułu musiałem utworzyć linuksowego usera antek i skonfigurować mu prywatne konto www dostępne po wpisaniu do przeglądarki adresu adres/~antek. Jak to zrobić opisałem na sąsiedniej stronie. Wszystkie prace pod Linuksem będziemy wykonywać jako root.


*     *     *


Linux Mandrake od wersji 10.0 oraz Mandriva bez pytania o zgodę podczas instalacji systemu i wstępnej konfiguracji połączenia z Internetem instaluje i konfiguruje SQUID. Jest to dobre narzędzie przyspieszające oglądanie stron www, ale nam (na etapie nauki wirtualnych hostów serwera APACHE) będzie przeszkadzać. Należy więc pod rootem wykonać kilka czynności:
  • Wyłącz demona SQUID zleceniem:
    /etc/rc.d/init.d/squid stop
     
  • Przekonfiguruj firewalla (opartego na shorewallu) edytując plik /etc/shorewall/rules (wersja z Mdk 10.x). Należy zahaszować (znakiem #) wiersz oznaczony na czerwono:

    ACCEPT net fw tcp 80,443 -
    ACCEPT loc fw tcp 80,443,20,21,22,9090 -
    #REDIRECT loc 3128 tcp www -
    ACCEPT fw net tcp www
    #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    Tak przy okazji zwróć uwagę na wiersz otwierający port 9090. W ten sposób przygotujesz firewalla do obsługi virtualnego hosta pracującego (od strony domowej sieci) na porcie np. 9090. Do tematu powrócę.

    Restartuj shorewall zleceniem:
    /etc/rc.d/init.d/shorewall restart

    Więcej o shorewallu znajdziesz na sąsiedniej stronie. Przykład mojego pliku rules (Mdk 10.1).
     
  • Aby podczas restartu SQUID nie włączał się bez potrzeby, należy w autostarcie wywalić odpowiednie wpisy. Najprościej jest wpisać w linuksowej konsoli zlecenie drakxservices i usunąć zaznaczenie przy SQUID (używamy klawiszy kierunkowych czyli strzałek, TAB, ENTER, SPACJĘ). Więcej na temat autostartu na sąsiedniej stronie.

 


 

192.168.1.1
udostępniający witrynę www usera antek dla sieci wewnętrznej

217.96.171.101
udostępniający publiczną witrynę www dla Internetu



Na poczatek coś prostego.

Mamy Linuksa z dwiema kartami sieciowymi, pracującymi na IP: zewnętrznym 217.96.171.101 (widzianym także pod adresem gwiezdnysklep.pl) oraz wewnętrznym 192.168.1.1. Na razie na obu adresach serwer APACHE udostępnia ten sam materiał www. Wykonamy teraz podział: na IP zewnętrznym będziemy udostępniać stronki www do Internetu, a na IP wewnętrznym zupełnie inny materiał (strony www z prywatnego konta usera antek).


Masz wyłączonego demona SQUID (opis powyżej). Zaloguj się do swojego Linuksa jako root i wykonaj kilka czynności:
  • Skopiuj na wszelki wypadek do archiwum plik /etc/httpd/conf/vhosts/Vhosts.conf
     
  • Wyedytuj plik /etc/httpd/conf/vhosts/Vhosts.conf , wykasuj zawartość i wprowadź następujące wiersze:

    NameVirtualHost 217.96.171.101
    <VirtualHost 217.96.171.101>
    ServerName gwiezdnysklep.pl
    ServerPath /html
    DocumentRoot /var/www/html
    /VirtualHost>


    NameVirtualHost 192.168.1.1
    <VirtualHost 192.168.1.1>
    ServerPath /public_html
    DocumentRoot /home/antek/public_html
    </VirtualHost>


    217.96.171.101 to zewnętrzny adres IP, pod którym w Internecie widać twoją witrynę www. Witryna główna ma swoje pliki w systemowym katalogu /var/www/html. User antek jest przykładowy - zamień go na rzeczywistego ;)

    Aby zmiany wprowadzić w życie restartuj APACHE zleceniem:
    /etc/rc.d/init.d/httpd restart

    Dyrektywy NameVirtualHost oraz VirtualHost generalnie powinny mieć argument w postaci nr IP. Jeżeli podamy adres domenowy np. <VirtualHost gwiezdnysklep.pl> lub z haszem czyli: <VirtualHost gwiezdnysklep.pl/>, to ryzykujemy powstanie problemu podczas autokonfiguracji startującego serwera APACHE. Jak to się dzieje? Oto wyjaśnienie: wpisując do pliku /etc/httpd/conf/vhosts/Vhosts.conf wiersz <VirtualHost gwiezdnysklep.pl> opieramy się o nazwę domenową gwiezdnysklep.pl uzyskiwaną za pomocą serwera DNS umieszczonego w Internecie (przyjmuję, że nie masz DNS na swoim Linuksie). Serwer APACHE (w moim przypadku skonfigurowany na łączu SDI) startuje przed nawiązaniem połączenia z Internetem. Dlatego mogą powstać problemy. Jest jednak i na to sposób: należy tak ustawić autostart APACHE by włączał się po uaktywnieniu połączenia z Internetem. Utwórz więc skrypt o nazwie np. apachestart zleceniem touch apachestart. Wyedytuj go np. zleceniem mcedit apachestart i wprowadź następującą treść:

    #!/bin/sh
    sleep 6
    /etc/rc.d/init.d/httpd start


    Zapisz zmiany. Nadaj plikowi prawa -rwxr--r-- root.root zleceniem chmod 744 apachestart oraz chown root.root apachestart . Przenieś plik apachestart do katalogu /etc/rc.d/ . W pliku /etc/rc.d/rc.local dopisz na samym końcu(!) wiersz:

    /etc/rc.d/apachestart

    Usuń autostart demona httpd (tak samo, jak usunąłeś autostart SQUID - opis powyżej).
    Po restarcie systemu powinno już być dobrze.

    Co daje skrypt apachestart? To proste - po załadowaniu systemu następuje na samym końcu odczyt pliku /etc/rc.d/rc.local , a w nim odwołanie do skryptu /etc/rc.d/apachestart . Budowa tego skryptu jest następująca: uruchom skrypt, zatrzymaj wykonanie skryptu na 6 sekund (aby połączenie z Internetem się ustabilizowało) i włącz demona httpd.
     
Wpisz do przeglądarki adres http://gwiezdnysklep.pl lub http://217.96.171.101 i zobaczysz witrynę publiczną. Oczywiście adres jest przykładowy.

Wpisz na komputerze w domowej sieci adres 192.168.1.1 - nie ma już publicznej witryny www. Pojawiła się nowa, będąca własnością usera antek. Przy standardowej konfiguracji APACHE tę samą witrynę zobaczysz pod adresem: 192.168.1.1/~antek

 


 

192.168.1.1:9090
udostępniający strony www dla sieci wew.


Dotychczas znałeś APACHE pracującego na porcie 80 (lub przy połączeniu szyfrowanym na porcie 443). Teraz nauczysz się konfigurować APACHE tak, by nasłuchiwał na innych dowolnych portach w zakresie 1025-65536. Nie należy używać do tych celów portów o wartości poniżej 1025. Oczywiście porty mogą być różne i może ich być wiele - będą wówczas udostępniać różne witryny różnych userów Linuksa. Zanim ustalisz porty, proponuję, byś sprawdził w pliku /etc/services czy są już zajęte.

Powyższy przykład pliku /etc/httpd/conf/vhosts/Vhosts.conf rozbudujemy i lekko przerobimy. Ponieważ będziemy eksperymentować na adresie 192.168.1.1 zostawimy bez zmian (w porównaniu do powyższego przykładu) pierwszy człon pliku /etc/httpd/conf/vhosts/Vhosts.conf odpowiedzialny za zdefiniowanie serwera udostępniającego dla Internetu witrynę publiczą (na IP 217.96.171.101). Oto moja propozycja:

NameVirtualHost 217.96.171.101
<VirtualHost 217.96.171.101>
ServerName gwiezdnysklep.pl
ServerPath /html
DocumentRoot /var/www/html
</VirtualHost>


NameVirtualHost 192.168.1.1
<VirtualHost 192.168.1.1>
ServerPath /html
DocumentRoot /var/www/html
</VirtualHost>

Listen 192.168.1.1:9090
NameVirtualHost 192.168.1.1:9090
<VirtualHost 192.168.1.1:9090>
ServerPath /public_html
DocumentRoot /home/antek/public_html
</VirtualHost>




Na IP zewnętrznym 217.96.171.101 będzie prezentowana witryna publiczna (/var/www/html).

Na IP wewnętrznym 192.168.1.1 będzie prezentowana witryna publiczna (var/www/html) oraz pod adresem 192.168.1.1:9090 witryna usera antek (/home/antek/public_html). Oczywiście mając wielu userów można powielić ostatni człon i po wprowadzeniu korekt przydzielać różnym userom różne porty. Jako administrator Linuksa zadbaj, by firewall udostępniał usługi na wybranych portach. Jak to zrobić opisałem powyżej.

 


 

192.168.1.1:9090
jako wyłączny adres udostępniający witrynę www usera np. antek
(z zablokowaniem adresów: 192.168.1.1/~antek oraz 217.96.171.101/~antek)


Powyższy przykład pokazał, że można na jednym IP 192.168.1.1 uaktywnić jednoczesne działanie kilku adresów www. Pod IP 192.168.1.1 (port domyślny 80) zobaczyliśmy publiczną witrynę udostępniającą pliki z katalgu /var/www/html. Pod adresem 192.168.1.1:9090 (na porcie 9090) prywatną witrynę usera antek z katalogu /home/antek/public_html , którą zresztą też widać pod adresem 192.168.1.1/~antek (lub 217.96.171.101/~antek). Witryna usera antek jest widziana pod kilkoma adresami. Teraz uszczelnimy APACHE i witryna usera antek będzie widziana tylko pod adresem 192.168.1.1:9090 . Uwaga: poniższe rozwiązanie zablokuje możliwość posiadania adresu domena/~user wszystkim systemowym userom.


Wykonaj:
  1. Za pomocą dowolnego edytorka otwórz plik /etc/httpd/conf/commonhttpd.conf . Znajdź dyrektywę zezwalającą na posiadanie prywatnej witryny www usera (widzianej po wpisaniu adresu domena/~user). W Mandrake/Mandriva katalog z plikami prywatnej witryny ma domyślną nazwę: /home/user/public_html. Wpisz zlecenie mcedit /etc/httpd/conf/commonhttpd.conf . Następnie wciśnij klawisz F7 i w polu wyszukiwania wpisz słowo public_html. Szukaj dyrektywy:

         <IfModule mod_userdir.c>
            UserDir public_html
         </IfModule>

    Zmień tekst zaznaczony na czerwono i wpisz w jego miejsce nazwę fikcyjnego katalogu np. public_htmlllll . Zapisz zmiany (klawiszem F2). Po restarcie APACHE nie będzie umiało odnaleźć katalogu i po uzyskaniu wezwania do załadowania strony (np. 192.168.1.1/~antek) zgłosi komunikat braku dostępu 403.
     
  2. Teraz czas na takie skonfigurowanie APACHE, by można było zobaczyć strony usera antek pod adresem 192.168.1.1:9090 . Wyedytuj znany Ci już plik /etc/httpd/conf/vhosts/Vhosts.conf i wprowadź do niego następujące wiersze:

    NameVirtualHost 217.96.171.101
    <VirtualHost 217.96.171.101>
    ServerName gwiezdnysklep.pl
    ServerPath /html
    DocumentRoot /var/www/html
    </VirtualHost>


    Listen 192.168.1.1:9090
    NameVirtualHost 192.168.1.1:9090
    <VirtualHost 192.168.1.1:9090>
    ServerPath /public_html
    DocumentRoot /home/antek/public_html
    </VirtualHost>

     
  3. Restartuj serwer APACHE zleceniem:
    /etc/rc.d/init.d/httpd restart
     

 


 

antek.gwiezdnysklep.pl
jako wyłączny adres udostępniający witrynę www usera np. antek
(z zablokowaniem adresów typu: adres/~antek)


Mając już wprawę w konfigurowaniu serwerów wirtualnych możesz nauczyć się najczęściej używanej techniki vhosts, czyli konfiguracji serwerów wirtualnych opartych na nazwach. Wyobraźmy sobie taką sytuację: jako administrator serwera bierzesz kasę za utrzymanie witryny firmie Gwiezdny Sklep. Szef firmy zażądał, by utworzyć mu osobną witrynę o adresie antek.gwiezdnysklep.pl . Nie zgadza się, by adres miał brzydki wygląd gwiezdnysklep.pl/antek (lub co gorsze gwiezdnysklep.pl/antek/ - ze slashem / na końcu). Nie interesuje go także adres gwiezdnysklep.pl/~antek . Nie ma sprawy. Jesteś zawodowcem i już mu to robisz...

Tworzysz usera antek, wkładasz do jego katalogu /home/antek/public_html gotową witrynkę www i sprawdzasz, czy widać ją w Internecie pod adresem gwiezdnysklep.pl/~antek . Jeżeli tak, to blokujesz możliwość użycia tyldy w polu adresowym poprzez modyfikację dyrektywy <IfModule mod_userdir.c> w pliku /etc/httpd/conf/commonhttpd.conf - opis powyżej. Teraz edytujesz plik /etc/httpd/conf/vhosts/Vhosts.conf i wpisujesz do niego:

NameVirtualHost 217.96.171.101
<VirtualHost 217.96.171.101>
ServerName gwiezdnysklep.pl
ServerPath /html
DocumentRoot /var/www/html
/VirtualHost>


NameVirtualHost 217.96.171.101
VirtualHost 217.96.171.101>
ServerName antek.gwiezdnysklep.pl
ServerPath /public_html
DocumentRoot /home/antek/public_html
/VirtualHost>


Restartujesz serwer APACHE zleceniem:
/etc/rc.d/init.d/httpd restart

... i kontaktujesz się z firmą za pośrednictwem której kupiono domenę gwiezdnysklep.pl . Tam prosisz (lub nakazujesz w zależności od tego z kim rozmawiasz ;), by w serwerze DNS odpowiadającym za współpracę z domeną gwiezdnysklep.pl umieszczono wpis łączący domenę antek.gwiezdnysklep.pl z IP Twojego serwera np. 217.96.171.101 . Czekasz jeden dzień na łaskawą reakcję admina z DNSów i masz gotową witrynę pod ładnym adresem antek.gwiezdnysklep.pl . Oczywiście nie ma obowiązku, by nazwa antek w adresie domenowym była identyczna z nazwą usera pod Linuksem. Wręcz wskazane by było, aby elementy te różniły się od siebie. Myślę, że wiesz czemu i jak to zrobić...



*



Acha... zapomniałem o serwerze SQUID. Włącz go. Teraz, gdy umiesz bezbłędnie konfigurować swojego APACHE, to SQUID nie będzie przeszkadzał.

 


 

LINKI

Ciekawy, choć ogólnikowy artykulik o vhosts: http://artykuly.zyxist.com/ (mam go w swoim archiwum).

Vhosts na Mandriva 2006 w nieco nietypowej konfiguracji: serwer www jest za NATem (na komputerze w domowej sieci, a nie na routerze dostępowym do Internetu): http://forum.mandriva.org.pl.
Opis problemu:
Serwerek www ma adres (z sieci lokalnej) np. 192.168.0.5. Na routerze są przekierowane na/z niego porty 80, 443 oraz 2222 z publicznego IP 80.50.254.15. Jeżeli wrzucę stronkę www na komputer 192.168.0.5 do folderu /var/www/html, to wszystko działa bez problemu i wlaściwie nie wymaga konfiguracji poinstalacyjnej. Problem pojawia się, gdy chcę skorzystac dodatkowo z vh. Nie mam pojęcia jak go skonfigurować. Sprawdzalem już wiele kombinacji: np ustawilem listen dla vh na 192.168.0.5:2222, odblokowalem port na shorewalu (połączenia z net, nie sprawdzalem loc), nadalem odpowiednie prawa do folderow i nawet jakieś połączenie jest nawiązane, ale wyrzuca blad403.
Rozwiązanie problemu:
W pliku konfiguracyjnym httpd (u mnie na mdv2006 httpd.conf) dodajemy:

<Directory "/home/nazwa_usera">
Options -Indexes FollowSymLinks MultiViews
AllowOverride None
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>

Listen 192.168.0.5:2222
<VirtualHost 192.168.0.5:2222>
DocumentRoot /home/nazwa_usera/public_html
</VirtualHost>

Należy pamiętać o nadaniu odpowiednich praw do folderów usera oraz o odblokowaniu portów na firewall'u (plus przekierowania portów 80, 443, 2222). Po przeładowaniu Apache gość z Internetu wpisuje adres http://80.50.254.15 lub http://80.50.254.15:80 i ma pliki www z katalogu publicznego, a po wpisaniu adresu http://80.50.254.15:2222 otrzymuje witrynę usera linuksowego. Oczywiście pliki www są fizycznie umieszczone na komputerze w domowej sieci 192.168.0.5.

 


 

 

 
twarogal@wp.pl

Uwaga: z powodu namnożenia się różnych złodziejskich witryn www, które kopiują moje strony i umieszczają je u siebie wraz z komercyjnymi reklamami (na których zarabiają) informuję, że wszelkie prawa są zastrzeżone.

Uwaga. Aby uniknąć zasysania całej witryny gorzow-wlkp.pl/linux za pomocą programów typu TeleportPro, WebCopier itd. informuję, że udostępniłem spakowaną wersję (w formacie RAR).

 
 

 

 

Witryna była dostępna pod adresami: strony.wp.pl/wp/twarogal , strony.wp.pl/wp/linuxtwarka , twarogal.republika.pl , klub.chip.pl/twarogal oraz gorzow-wlkp.net (w latach 2003/04).

 

 

gorzow-wlkp.pl

Informacje o odwiedzających są rejestrowane i publicznie udostępniane na pod adresem: http://gorzow-wlkp.pl/licznik/