Apache2
Z openSUSE wiki
Uwagi
- W tym FaQ będziemy używać adresu localhost zamiast 127.0.0.1
- W FaQ posługujemy się loginem: kris oraz nazwą hosta: sphinx lub sphinx.egipt.pl
- Zamiast plików *.php możemy używać również plików *.html lub *.htm
Instalacja Apache2 na openSUSE 11.3
Aby zainstalować najnowszą stabilną wersję Apache2 na openSUSE 11.3 należy dodać nowe źródła instalacji do Yast:
# zypper addrepo http://download.opensuse.org/repositories/Apache/openSUSE_11.3/ Apache
oraz:
# zypper addrepo http://download.opensuse.org/repositories/Apache:/Modules/Apache_openSUSE_11.3/ Apache_Modules
Najprostsza instalacja serwera Apache, to zainstalowanie go ze wzorców w Yast2.
Po instalacji, aby sprawdzić wersję pakietów posługujemy się poleceniem:
kris@sphinx:~> rpm -qa | grep apache
Jeśli chcemy sprawdzić, gdzie znajdują się poszczególne pliki, wydajemy komendę:
kris@sphinx:~> rpm -ql apache2-2.2.15-18.1 | less /etc/apache2 /etc/apache2/conf.d /etc/apache2/httpd.conf /etc/init.d/apache2 [...]
Główny plik uruchamiający usługę Apache, znajduje się w:
sphinx:~ # ls -ltr /etc/init.d/ | grep apache -rwxr--r-- 1 root root 10635 07-13 08:13 apache2
Uruchomienie, zatrzymanie i restart usługi
Uruchomienie:
sphinx:~ # /etc/init.d/apache2 start Starting httpd2 (prefork) done
Zatrzymanie:
sphinx:~ # /etc/init.d/apache2 stop Shutting down httpd2 (waiting for all children to terminate) done
Restart:
sphinx:~ # /etc/init.d/apache2 restart Syntax OK Shutting down httpd2 (waiting for all children to terminate) done Starting httpd2 (prefork) done
Połączenie sie z usługą apache
Aby wyświetlić wszystkie aktywne połączenia internetowe (ang. Active Internet connections servers and established)
kris@sphinx:~> netstat -ant
lub tylko na porcie 80:
kris@sphinx:~> netstat -ant | grep "80" tcp 0 0 :::80 :::* LISTEN
Sprawdźmy w najprostszy sposób czy jesteśmy w stanie połączyć się z portem 80:
kris@sphinx:~> telnet localhost 80 Trying ::1... Connected to localhost. Escape character is '^]'.
Wszystko jest OK
Dodatki
Examples
Jeśli nie mamy zainstalowanego pakietu apache2-example-pages to po wpisaniu w pasku adresu w przeglądarce http://localhost/ powinna ukazać nam się:
Zabroniony dostęp! Nie masz prawa dostępu do żądanego katalogu. W katalogu nie ma indeksu lub katalog jest zabezpieczony przed odczytem. Jeśli myślisz, że jest to błąd tego serwera, skontaktuj się z administratorem. Error 403 localhost Mon Feb 8 22:58:37 2010 Apache/2.2.13 (Linux/SUSE)
Jeśli doinstalujemy pakiet apache2-example-pages, powinna ukazać nam się informacja:
It works!
W pakiecie tym, tzn. apache2-example-pages znajdują się następujące pliki:
sphinx:/var/log/apache2 # rpm -ql apache2-example-pages /srv/www/htdocs/favicon.ico /srv/www/htdocs/index.html /srv/www/htdocs/robots.txt
I to właśnie w pliku index.html, który domyślnie się załaduje znajduje się informacja "It works!"
Manual
W przeglądarce pod adresem http://localhost/manual powinna znajdować się dokumentacja Apache Server. Jeśli wyświetla nam się pozycja "Zabroniony dostęp!" oznacza to, że musimy doinstalować pakiet apache2-doc
sphinx:/var/log/apache2 # rpm -ql apache2-doc /etc/apache2 /etc/apache2/conf.d /etc/apache2/conf.d/apache2-manual.conf /usr/share/apache2/manual [...]
Jeśli chcemy zablokować manual dla wszystkich userów, to musimy edytować plik apache2-manual.conf znajdujący się w:
sphinx:/etc/apache2/conf.d # emacs apache2-manual.conf
i zmienić pozycję:
Allow from all
na pozycję:
Deny from all
Aby ustawienia zadziałały musimy zrebootować serwer:
sphinx:~ # /etc/init.d/apache2 restart
Teraz po wpisaniu w przeglądarkę adresu http://localhost/manual/ powinna ukazać nam się informacja:
Zabroniony dostęp!
Logi
Sprawdźmy gdzie znajdują się logi apacha:
sphinx:~ # cd /var/log/apache2
sphinx:/var/log/apache2 # ls -la total 24 drwxr-x--- 2 root root 4096 Feb 3 11:02 . drwxr-xr-x 25 root root 4096 Feb 8 20:37 .. -rw-r--r-- 1 root root 522 Feb 8 22:34 access_log -rw-r--r-- 1 root root 5287 Feb 8 22:34 error_log -rw-r--r-- 1 root root 10 Feb 8 22:27 rcapache2.out
Sprawdźmy w najprostszy sposób działanie. W przeglądarce w pasku adresu wpisujemy localhost. Wyświetla nam się pozycja "It works!" czyli wszystko OK. Natomiast w momencie gdy w pasku adresu wpisujemy adres nieistniejącego adresu, np. http://localhost/index.php automatycznie w logach pojawia nam się zapis typu:
sphinx:/var/log/apache2 # tail -f access_log ::1 - - [08/Feb/2010:22:39:59 +0000] "GET /index.php HTTP/1.1" 404 1050 "-" "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.2.0) Gecko/20100115 SUSE/3.6.0-1.2 Firefox/3.6"
oraz:
sphinx:/var/log/apache2 # tail -f error_log [Mon Feb 08 22:39:59 2010] [error] [client ::1] script '/srv/www/htdocs/index.php' not found or unable to stat
Pliki konfiguracyjne
Sprawdźmy sysconfig w konsoli:
sphinx:/var/log/apache2 # cd /etc/sysconfig
sphinx:/etc/sysconfig # ll apache2 -rw-r--r-- 1 root root 10312 Feb 8 22:27 apache2
Sprawdźmy plik konfiguracyjny apache2:
sphinx:/etc/sysconfig # less apache2
W pliku tym znajdują się takie pozycje, jak:
DOC_SERVER="no" APACHE_CONF_INCLUDE_FILES="" APACHE_CONF_INCLUDE_DIRS="" APACHE_MODULES="authz_host actions alias auth_basic authz_groupfile authn_file authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif status userdir dav echo info rewrite ssl php5 perl python apparmor dav_svn authz_svn authz_default" APACHE_SERVER_FLAGS="SSL" APACHE_HTTPD_CONF="" APACHE_MPM="" APACHE_SERVERADMIN="" APACHE_SERVERNAME="" APACHE_START_TIMEOUT="2" APACHE_SERVERSIGNATURE="on" APACHE_LOGLEVEL="warn" APACHE_ACCESS_LOG="/var/log/apache2/access_log combined" APACHE_USE_CANONICAL_NAME="off" APACHE_SERVERTOKENS="OS" APACHE_EXTENDED_STATUS="off"
Ta sama konfiguracja znajduje się w Yast oraz Yast2 w "Edytor /etc/sysconfig" w Network->WWW->Apache2. Dla przykładu zmieńmy opcję APACHE_SERVERTOKENS="OS" na "FULL". Poprzednie informacje, czyli:
Zabroniony dostęp! Nie masz prawa dostępu do żądanego katalogu. W katalogu nie ma indeksu lub katalog jest zabezpieczony przed odczytem. Jeśli myślisz, że jest to błąd tego serwera, skontaktuj się z administratorem. Error 403 localhost Mon Feb 8 22:58:37 2010 Apache/2.2.13 (Linux/SUSE)
zostały zmienione, na:
Nie znaleziono obiektu! Nie znaleziono żądanego URLa na tym serwerze. Jeśli wpisałeś URLa ręcznie, sprawdź, czy nie się nie pomyliłeś. Jeśli myślisz, że jest to błąd tego serwera, skontaktuj się z administratorem. Error 404 localhost Tue Feb 9 00:49:45 2010 Apache/2.2.13 (Linux/SUSE) DAV/2 mod_ssl/2.2.13 OpenSSL/0.9.8k PHP/5.3.0 mod_python/3.3.1 Python/2.6.2 SVN/1.6.6 mod_mono/2.4.2 mod_perl/2.0.4 Perl/v5.10.0
Tak więc posiadamy pełne informacje dotyczące serwera. Należy jednak pamiętać, iż takie ustawienie nie jest bezpieczne. Najbezpieczniejszą opcją jest, np. Major lub ProductOnly, ponieważ pokazuje minimalne informacje dotyczące serwera.
Innym plikiem konfiguracyjnym jest:
sphinx:/etc/sysconfig # cd /etc/apache2
bardzo ważny plik httpd.conf
sphinx:/etc/apache2 # ls -la | grep httpd.conf -rw-r--r-- 1 root root 8323 Oct 27 16:51 httpd.conf
Poniżej przedstawiony jest schemat chronologiczny, jakie pliki konfiguracyjne zostały dołączone w pliku httpd.conf za pomocą instrukcji "include".
httpd.conf
|
|-- uid.conf ... Użytkownik wwwrun oraz grupa www
|-- server-tuning.conf
|-- sysconfig.d/loadmodule.conf ... Załadowane moduły
|-- listen.conf ... Adresy IP oraz nasłuchujący port 80
|-- mod_log_config.conf
|-- sysconfig.d/global.conf
|-- mod_status.conf
|-- mod_info.conf
|-- mod_usertrack.conf
|-- mod_autoindex-defaults.conf
|-- mod_mime-defaults.conf
|-- errors.conf
|-- ssl-global.conf
|-- default-server.conf
| |--mod_userdir.conf
| `--conf.d/apache2-manual?conf
|-- sysconfig.d/include.conf
`-- vhosts.d/
`-- *.conf
Np.W pliku httpd.conf za pomocą instrukcji
Include /etc/apache2/listen.conf
został dołączony plik listen.conf odpowiedzialny za adresy IP oraz nasłuchujące porty:
sphinx:/etc/apache2 # less listen.conf Listen 80
Wszystko zostało ładnie opisane w tych plikach, który plik oraz która pozycja jest za co odpowiedzialna. Potrzeba nam jedynie chwili czasu oraz znajomości j. angielskiego, aby znaleźć to co nas najbardziej interesuje (w zależności od potrzeb). Dla osób, które nie orientują się w tym polecam przejrzenie wszystkich plików konfiguracyjnych.
Localhost oraz Hostname
Uwaga! Zamiast localhost w adresie przeglądarki możemy posłużyć się nazwą hosta:
sphinx:/etc/apache2/sysconfig.d # cat /etc/HOSTNAME sphinx.egipt.pl
Skoro wiemy już, że nazwa hosta to sphinx.egipt.pl (nie mylić z domeną), więc wpiszmy w przeglądarkę ten adres http://sphinx.egipt.pl/ Jak widzimy stona wyświetla nam się poprawnie, czyli "It works".
Sekcja DirectoryIndex i domyślna strona
Z katalogu /srv/www/htdocs wykasujmy wszystkie plik index.html, index.htm oraz index.php Założymy nowy plik strona.php o prostej treści:
<html> <title>Moja strona</title> <body> To jest plik: strona.php </body> </html>
Aby w pasku adresu nie wpisywać pełnej nazwy,tj. http://sphinx.egipt.pl/strona.php lub http://localhost/strona.php to wstawiamy do pliku:
sphinx:/etc/apache2 # emacs httpd.conf
w sekcji DirectoryIndex nową pozycję strona.php:
DirectoryIndex index.html index.html.var index.php strona.php
Restartujemy serwer:
sphinx:/etc/apache2/sysconfig.d # rcapache2 reload Reload httpd2 (graceful restart) done
W przeglądarce wpisujemy adres http://sphinx.egipt.pl/ lub http://localhost/ Świetnie! Wyświetliła się nam informacja:
To jest plik: strona.php
Uwaga! Jeśli na serwerze mamy więcej stron, to musimy posegregować to sobie w
katalogach. Załóżmy, że mamy dwie strony, więc potrzebne są nam dwa odrębne
katalogi:
sphinx:/srv/www/htdocs # mkdir strona1 sphinx:/srv/www/htdocs # mkdir strona2
Zakładamy w tych folderach inne pliki o jedej z nazw: index.html, index.html.var, index.php lub strona.php zawartych w sekcji DirectoryIndex. Teraz wyświetlenie takiej strony będzie wyglądało odpowiednio:
http://sphinx.egipt.pl/strona1/ lub http://localhost/strona1/ http://sphinx.egipt.pl/strona2/ lub http://localhost/strona2/
Uwaga! Jak widzimy poniżej pierwszą pozycją jest index.html a ostatnią
strona.php
DirectoryIndex index.html index.html.var index.php strona.php
i tak właśnie w takiej kolejności serwer będzie wyszukiwał plików, np. jeśli umieścimy w katalogu strona1 dwa pliki index.php oraz strona.php to przy powyższym ustawieniu w DirectoryIndex pierwszy uruchomi się index.php
Mod Alias
Co to jest alias? W skrócie jest to pewna funkcja systemowa umożliwiająca skrócenie i uproszczenie nazewnictwa.
1. Na naszym serwerze utworzymy nowy alias "nowastrona1", który będzie nowym
aliasem strony "strona1" znajdującym się w /srv/www/htdocs/strona1
Otwieramy plik httpd.conf
sphinx:/etc/apache2 # emacs httpd.conf
i dopisujemy na samym końcu nasz nowy alias:
# Testowy Mod Alias # Alias fakename realname Alias /nowastrona1 /srv/www/htdocs/strona1
Rebootujemy serwer:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Od tej pory dostępne strony, to będą:
http://localhost/strona1/ http://sphinx.egipt.pl/strona1/ http://localhost/nowastrona1/ http://sphinx.egipt.pl/nowastrona1/
Uwaga! Przypomnijmy, że nie musimy wpisywać na samym końcu plików index.php oraz strona.php ponieważ zostały one dopisane do DirectoryIndex.
2. Na naszym serwerze utworzymy nowy alias "ns", który będzie nowym aliasem strony "strona1" znajdującym się w /usr/local/testapaczi
Otwieramy plik httpd.conf
sphinx:/etc/apache2 # emacs httpd.conf
i dopisujemy na samym końcu nasz nowy alias z nowymi dyrektywami uprawnień Directory:
#Bez dyrektywy Directory strona nie będzie dostępna Alias /ns /usr/local/testapaczi <Directory /usr/local/testapaczi> AllowOverride None Order allow,deny Allow from all </Directory>
Wykonujemy działania kopiowania:
sphinx:~ # cd /usr/local sphinx:/usr/local # mkdir testapaczi sphinx:/usr/local # cd testapaczi/ sphinx:/usr/local/testapaczi # cp /srv/www/htdocs/strona1/index.php .
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Od tej pory dostępnymi stronami będą:
http://localhost/strona1/ http://sphinx.egipt.pl/strona1/ http://localhost/nowastrona1/ http://sphinx.egipt.pl/nowastrona1/ http://localhost/ns //ta strona jest de facto w /usr/local/testapaczi http://sphinx.egipt.pl/ns //ta strona jest de facto w /usr/local/testapaczi
Moduł userdir
Opcja ta służy do tego, aby normalny user mógł tworzyć swoją stronę internetową w swoim folderze domowym, bez wykorzystywania konta root.
Aby włączyć moduł userdir wchodzimy do Yast -> Usługi sieciowe -> Serwer HTTP -> Moduły serwera i wyszukujemy moduł userdir a następnie uruchamiamy go.
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Wykonujemy następujące operacje (już nie z konta root!):
kris@sphinx:/usr/local> cd /home/kris/public_html/ kris@sphinx:~/public_html> emacs index.php
W pliku index.php umieszczamy jakiś prosty tekst, np.
<html> <title>Moja strona w katalogu domowym</title> <body> To jest plik: /home/kris/public_html/index.php </body> </html>
W przeglądarce wpisujemy http://localhost/~kris/
Wyświetla nam się informacja:
To jest plik: /home/kris/public_html/index.php
Ustawienia userdir możemy znaleźć w pliku /etc/apache2/mod_userdir.conf Jeśli chcemy wyłączyć userdir to musimy odznaczyć pozycję:
UserDir disabled
lub też tylko dla poszczególnych userów włączyć, np:
UserDir enabled kris user2 user3
Directory Directive (drzewo plików) oraz uprawnienia
Z pliku /etc/apache2/httpd.conf wycinamy wszystkie aliasy do pliku /etc/apache2/default-server.conf oraz dodajemy sekcję
Options Indexes
Wygląda to tak:
# Test Mod Alias # Alias fakename realname Alias /nowastrona1 /srv/www/htdocs/strona1 Alias /nowastrona1 /srv/www/htdocs/strona2 Alias /nowastrona3 /srv/www/htdocs/strona3 <Directory /srv/www/htdocs/strona3> AllowOverride None Options Indexes Order allow,deny Allow from all </Directory>
Zakładamy folder pod nową stronę, czyli strona3 w:
sphinx:/srv/www/htdocs # mkdir strona3
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
W przeglądarce wpisujemy nowy adres:
http://localhost/strona3
Jeśli w folderze strona3 posiadamy jakieś pliki inne niż w sekcji DirectoryIndex:
sphinx:/srv/www/htdocs/strona3 # grep DirectoryIndex /etc/apache2/httpd.conf DirectoryIndex index.html index.html.var index.php strona.php
to wyświetli nam się informacja z drzewem plików.:
Index of /strona3 Icon Name Last modified Size Description[DIR] Parent Directory - ... Apache Server at localhost Port 80
Jeśli teraz skopiujemy pliki index.php oraz strona.php do:
sphinx:/srv/www/htdocs # cp /srv/www/htdocs/strona1/*.* /srv/www/htdocs/strona3
a plikach strona.php oraz index.php zmieniamy stosownie informacje na:
<html> <title>Moja strona3</title> <body> To jest plik: strona3/strona.php </body> </html>
oraz
<html> <title>Moja strona3</title> <body> To jest plik: strona3/index.php </body> </html>
To nie wyświetli nam się już drzewo plików, tylko:
To jest plik: strona3/index.php
ponieważ w sekcji DirectoryIndex pierwszy znajduje index.php
Przykład 1
W katalogu /srv/www/htdocs/strona3 tworzymy nowy folder testowy, np. test
sphinx:/srv/www/htdocs/strona3 # mkdir test
Teraz jeśli wpiszemy w przeglądarkę adres:
http://localhost/strona3/test
to uruchomi nam się drzewo plików. Jednak takie ustawienie nie jest bezpieczne, ponieważ być może, np. w rzeczywistości możemy mieć tam jakieś ważne pliki, a do których nie chcemy aby mieli dostęp inni userzy, więc odbieramy uprawnienia indexowania dla folderu test pozostawiając dalej te same prawa dla folderu strona3
W tym celu edytujemy plik:
sphinx:/srv/www/htdocs/strona3 # emacs /etc/apache2/default-server.conf
Dopisujemy w nim:
# Test Mod Alias # Alias fakename realname Alias /nowastrona1 /srv/www/htdocs/strona1 Alias /nowastrona1 /srv/www/htdocs/strona2 Alias /nowastrona3 /srv/www/htdocs/strona3 <Directory /srv/www/htdocs/strona3> AllowOverride None Options Indexes Order allow,deny Allow from all </Directory> <Directory /srv/www/htdocs/strona3/test> AllowOverride None Options -Indexes Order allow,deny Allow from all </Directory>
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Przykład 2
W katalogu /srv/www/htdocs/strona3 tworzymy nowy folder testowy, np. funkcje
sphinx:/srv/www/htdocs/strona3 # mkdir funkcje
oraz załużmy dwa nowe pliki w folderze funkcje:
sphinx:/srv/www/htdocs/strona3 # emacs plik1.php
o treści:
<html> <title>plik1.php</title> <body> To jest strona3/funkcje/plik1.php </body> </html>
oraz
sphinx:/srv/www/htdocs/strona3 # emacs plik2.php
o treści:
<html> <title>plik2.php</title> <body> To jest strona3/funkcje/plik2.php </body> </html>
Teraz jeśli wpiszemy w przeglądarkę adres:
http://localhost/strona3/funkcje
to uruchomi nam się drzewo widocznych plików plik1.php oraz plik2.php. Chcemy jednak, np. aby z jakichś powodów widoczny był plik plik1.php natomiast nie chcemy aby plik2.php był widoczny oraz nie chcemy aby mieli dostęp do niego inni userzy, więc odbieramy uprawnienia dla pliku plik2.php
W tym celu edytujemy plik:
sphinx:/srv/www/htdocs/strona3 # emacs /etc/apache2/default-server.conf
Dopisujemy w nim:
# Test Mod Alias # Alias fakename realname Alias /nowastrona1 /srv/www/htdocs/strona1 Alias /nowastrona1 /srv/www/htdocs/strona2 Alias /nowastrona3 /srv/www/htdocs/strona3 <Directory /srv/www/htdocs/strona3> AllowOverride None Options Indexes Order allow,deny Allow from all </Directory> <Directory /srv/www/htdocs/strona3/test> AllowOverride None Options -Indexes Order allow,deny Allow from all </Directory> <Directory /srv/www/htdocs/strona3/funkcje> AllowOverride None Options Indexes Order allow,deny Allow from all <Files plik2.php> AllowOverride None Order deny,allow Deny from all </Files> </Directory>
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Przykład 3
W katalogu /srv/www/htdocs/strona3 oraz /srv/www/htdocs/strona3/test oraz /srv/www/htdocs/funkcje tworzymy nowe pliki: sphinx:/srv/www/htdocs/strona3 # emacs niewidoczny.php sphinx:/srv/www/htdocs/strona3 # cd test sphinx:/srv/www/htdocs/strona3/test # emacs niewidoczny.php sphinx:/srv/www/htdocs/strona3/test # cd .. sphinx:/srv/www/htdocs/strona3 # cd funkcje sphinx:/srv/www/htdocs/strona3/funkcje # emacs niewidoczny.php
o treści:
<html> <title>Jestem niewidoczny</title> <body> Jestem niewidoczny </body> </html>
Teraz jeśli wpiszemy w przeglądarkę odpowiednie adresy:
http://localhost/strona3/ http://localhost/strona3/test http://localhost/strona3/funkcje
to jedynie dla adresu funkcje będzie widoczny w drzewie plik niewidoczny.php Pod pierwszymi dwoma adresami plik widoczny będzie jedynie spod adresów:
http://localhost/strona3/niewidoczny.php http://localhost/strona3/test/niewidoczny.php
My jednak chcemy aby pliki te były zypełnie niewidoczne, więc edytujemy plik:
sphinx:/srv/www/htdocs/strona3 # emacs /etc/apache2/default-server.conf
więc dopisujemy w nim globalną opcję Files na samym końcu:
# Test Mod Alias # Alias fakename realname Alias /nowastrona1 /srv/www/htdocs/strona1 Alias /nowastrona1 /srv/www/htdocs/strona2 Alias /nowastrona3 /srv/www/htdocs/strona3 <Directory /srv/www/htdocs/strona3> AllowOverride None Options Indexes Order allow,deny Allow from all </Directory> <Directory /srv/www/htdocs/strona3/test> AllowOverride None Options -Indexes Order allow,deny Allow from all </Directory> <Directory /srv/www/htdocs/strona3/funkcje> AllowOverride None Options Indexes Order allow,deny Allow from all <Files plik2.php> AllowOverride None Order deny,allow Deny from all </Files> </Directory> <Files niewidoczny.php> AllowOverride None Order deny,allow Deny from all </Files>
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Przykład 4
Zakładamy nowy folder oraz tworzymy nową przykładową stronę:
sphinx:/srv/www/htdocs # mkdir strona4 sphinx:/srv/www/htdocs # cd strona4 sphinx:/srv/www/htdocs/strona4 # emacs index.php
o treści:
<html> <title>Index</html> <body> To jest plik strona4/index.php </body> </html>
oraz edytujemy plik:
sphinx:/srv/www/htdocs/strona4 # emacs /etc/apache2/default-server.conf
oraz umieszczamy w nim nasz (lub inny w zależności od potrzeb) adres IP:
Alias /nowastrona4 /srv/www/htdocs/strona4 <Directory /srv/www/htdocs/strona4> AllowOverride None Options None Order deny,allow Deny from all Allow from 192.168 </Directory>
Uwaga! Pozycja "Allow from 192.168" zezwala na dostęp wszystkich komputerów w sieci lokalnej do strony strona4
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Teraz po wpisaniu w przeglądarkę naszego adresu http://192.168.2.22/nowastrona4/ wyświetli nam się strona o treści:
To jest plik strona4/index.php
Natomiast dla adresu http://localhost/nowastrona4/ wyświetli się informacja:
Zabroniony dostęp!
HTTP Redirect (czyli przekierowania)
Edytujemy plik:
sphinx:/srv/www/htdocs/strona3 # emacs /etc/apache2/default-server.conf
i dopisujemy w nim następujące linijki:
#Redirect URL Redirect /nowastrona1 http://google.pl/linux RedirectPermanent /nowastrona2 http://programowanie-linux.wikidot.com RedirectTemp / http://forum.suse.pl
Oraz restartujemy usługę:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
Teraz po wpisaniu w przeglądarce adresu http://localhost nastąpi przekierowanie na http://forum.suse.pl a po wpisaniu w przeglądarkę adresu http://localhost/nowastrona1 nastąpi przekierowanie na http://google.pl/linux
Uwaga! Zamiast domen możemy użyć adresów IP, np. 192.168.1.100
HTACCESS
Na jakiejś swojej przykładowej stronie zakładamy plik:
kris@sphinx:~/public_html> emacs .htaccess
o przykładowej treści:
Options +Indexes
oraz nadajemy odpowiednie prawa:
kris@sphinx:~/public_html> chmod 644 .htaccess
W pliku
sphinx:/etc/apache2 # emacs mod_userdir.conf
edytujemy linijkę:
AllowOverride FileInfo AuthConfig Limit Indexes Options
dopisując na końcu opcję Options
Sprawdzamy działanie strony.
Uwierzytelnienie, htpasswd2, htdigest2
Mamy 2 rodzaje uwierzytelniania:
- Basic Authentication
- MD5 Digest Authentication
Basic Authentication
Potrzebny nam będzie program htpasswd2:
sphinx:~ # which htpasswd2 /usr/bin/htpasswd2
Jeśli czegoś nie wiemy, to zawsze możemy posłużyć się pomocą:
sphinx:~ # htpasswd2 --help
Między innymi z pomocy możemy dowiedzieć się jak stworzyć nowy plik z hasłem:
sphinx:~ # htpasswd2 -c /etc/apache2/basic_auth kris New password: okida Re-type new password: okida Adding password for user kris
sphinx:~ # cat /etc/apache2/basic_auth kris:srGUXxAxYFtlg
Teraz zostało nam jedynie stworzenie nowej strony authentication (z aliasem: auth) oraz dopisaniem do pliku default-server.conf paru linijek
sphinx:~ # emacs /etc/apache2/default-server.conf
Alias /auth /srv/www/htdocs/authentication <Directory /srv/www/htdocs/authentication> AllowOverride None Options Indexes Order allow,deny Allow from all AuthType Basic AuthName "Example" AuthUserFile /etc/apache2/basic_auth Require valid-user </Directory>
Restartujemy apache2:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
W przeglądarce wpisujemy http://localhost/auth/ Powinno pojawić nam się okienko do zalogowania, typu:
Podaj nazwę użytkownika oraz hasło Witryna http://localhost żąda podania nazwy użytkownika oraz hasła. Komunikat witryny "Example" Użytkownik: kris Hasło: okida
Notka:
To samo możemy zrobić dla grupy. Należy jedynie zamienić 2 linijki:
AuthUserFile /etc/apache2/basic_auth Require valid-user
na:
AuthGroupFile /etc/apache2/basic_group_auth Require group authenticationgroup
oraz utworzyć nowy plik /etc/apache2/basic_group_auth z nowymi hasłami.
MD5 Digest Authentication
Teraz potrzebny nam będzie inny program:
sphinx:~ # which htdigest2 /usr/bin/htdigest2
Jeśli czegoś nie wiemy, to zawsze możemy posłużyć się pomocą:
sphinx:~ # htdigest2 --help Usage: htdigest [-c] passwordfile realm username The -c flag creates a new file.
Tak więc tworzymy nowy plik:
sphinx:~ # htdigest2 -c /etc/apache2/digest_auth ExampleDigest kris Adding password for kris in realm ExampleDigest. New password: burza&suse Re-type new password: burza&suse
sphinx:~ # cat /etc/apache2/digest_auth kris:ExampleDigest:2d0bd4ae3b30a1ad10c3b42f553adbef
Przykład ten zrobimy na tej samej stronie authentication2 (z aliasem: auth2) oraz z modyfikacją pliku default-server.conf
sphinx:~ # emacs /etc/apache2/default-server.conf
Alias /auth2 /srv/www/htdocs/authentication2 <Directory /srv/www/htdocs/authentication2> AllowOverride AuthConfig Options Indexes Order allow,deny Allow from all AuthType Digest AuthName "ExampleDigest" AuthUserFile /etc/apache2/digest_auth //lub AuthDigestFile Require valid-user </Directory>
Restartujemy apache2:
sphinx:~ # rcapache2 reload Reload httpd2 (graceful restart) done
W przeglądarce wpisujemy http://localhost/auth2/ i tam powinno pojawić nam się okienko do zalogowania z userem oraz hasłem
Notka: Gdyby zdarzył się błąd przy reload apache2 to powinniśmy wejść w yast->http->moduły serwera i włączyć auth_digest

