/etc/apache2/sites-available/000-default.confDocumentRootnetstat./etc/apache2/ports.confVirtualHostnetstat, apoi un browser.Desi in majoritatea cazurilor folosim un browser in mod grafic pentru a naviga, putem folosi si clienti in mod text (interactiv sau non-interactiv). Acestia sunt utili mai ales in automatizare.
Un astfel de client in mod text, non-interactiv, este wget.
wget pentru a descarca fisierul index.html servit de Apache. Ca parametru pentru wget veti folosi acelasi URL ca si in browser./var/www/html:test/ |-- docs/ | |-- README.txt | |-- INSTALL.txt |-- scripts/ | |-- setup.sh | `-- install.sh `-- test.html
wget, descarcati in mod recursiv tot ce este sub /var/www/html/test.man wget, /recursiveindex.html. Hint: man wget, /reject.wget incercati sa descarcati ce este la adresa http://repository.grid.pub.ro/cs/gsr/.man wget, /user.wget sa va ceara parola. Hint: man wget, /ask-password.
De multe ori, in debugging, este util sa observati sau sa interveniti direct asupra datelor schimbate intre client si server. Un utilitar care ne ajuta in acest scop este netcat (comanda nc).
Acesta deschide o conexiune catre un host, pe un port specificat (TCP sau UDP), apoi va trimite catre server toate datele primite pe standard input.
nc, conectati-va pe localhost, portul 80.index.html. Veti folosi protocolul HTTP 1.0:GET /index.html HTTP/1.0\r\n\r\n (doua Enter-uri).echo, pipe
Server-ul Apache permite utilizatorilor sa serveasca fisiere din propriile directoare home. Fisierele trebuie stocate in /home/username/public_html, iar acestea vor fi accesate folosind un URL de forma http://server/~username.
gsr.public_html si mai multe fisiere in interiorul acestuia.~gsr. Este posibil?userdir. Hint: a2enmod/var/www/html un fisier cu numele index.php care sa contina un cod PHP simplu (de exemplu, sa afiseze un mesaj):<?php echo "Hello, world!"; ?>
index.php de pe server. Ce observati? Script-ul PHP se ruleaza pe server? De ce?libapache2-mod-php)./etc/apache2/mods-enabled.index.php. Ce observati acum?In anumite cazuri, este util sa restrictionam accesul catre anumite directoare ale site-ului. O modalitate este folosind feature-ul de autentificare din protocolul HTTP.
secret in /var/www/html..htaccess, care sa specifice ca se doreste autentificare:AuthName "restricted" AuthType Basic AuthUserFile /usr/local/my.htpasswd Require valid-user
htpasswd, creati un user bob in fisierul /usr/local/my.htpasswdapache2.conf, setati directiva AllowOverride la Allsecret, se cere autentificare./etc/hosts, adaugati 2 alias-uri, astfel incat host-urile gsr.ro si www.gsr.ro sa fie mapate pe adresa IP 127.0.0.1gsr.ro.gsr.ro.conf si se va afla in directorul /etc/apache2/sites-available.gsr.roadmin@gsr.ro/var/www/html/gsr.roindex.html care sa afiseze mesajul This is gsr.ro./var/log/apache2/gsr.ro.log si /var/log/apache2/gsr.ro.err.log root@mjolnir:~# mkdir /var/www/html/gsr.ro
root@mjolnir:~# echo "This is gsr.ro" > /var/www/html/gsr.ro/index.html
root@mjolnir:~# cat /etc/apache2/sites-available/gsr.ro.conf
<VirtualHost *:80>
ServerAdmin admin@gsr.ro
ServerName gsr.ro
DocumentRoot /var/www/html/gsr.ro
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/gsr.ro/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
ErrorLog /var/log/apache2/gsr.err.log
LogLevel warn
CustomLog /var/log/apache2/gsr.log combined
</VirtualHost>
gsr.roa2ensite.http://gsr.ro intr-un browser.gsr.ro astfel incat sa raspunda si la cereri pentru www.gsr.roServerAliashttp://www.gsr.ro intr-un browser.* Pentru al doilea tip de alias-uri, configurati Virtual Host-ul ''gsr.ro'' astfel incat la accesarea adresei ''http://gsr.ro/config'' sa fie afisat continutul directorului ''/var/www/html/gsr.ro/configfiles''. * Creati directorul ''/var/www/html/gsr.ro/configfiles''. In interiorul acestuia, creati fisierele ''file1'', ''file2'' si ''file3''. * Hint: Puteti folosi ca model configuratia alias-ului ''doc -> /usr/share/doc'' din fisierul de configurare al site-ului default al Apache. * Testati accesand adresa ''http://gsr.ro/config'' intr-un browser.
root@mjolnir:~# mkdir /var/www/html/gsr.ro/configfiles
root@mjolnir:~# cd $_
root@mjolnir:/var/www/html/gsr.ro/configfiles# touch file1 file2 file3
root@mjolnir:/var/www/html/gsr.ro/configfiles# ls -l
total 0
-rw-r--r-- 1 root root 0 Jan 27 18:30 file1
-rw-r--r-- 1 root root 0 Jan 27 18:30 file2
-rw-r--r-- 1 root root 0 Jan 27 18:30 file3
root@mjolnir:/var/www/html/gsr.ro/configfiles# cd -
/root
root@mjolnir:~# cat /etc/apache2/sites-available/gsr.ro | tail -n 7
Alias /config "/var/www/html/gsr.ro/configfiles/"
<Directory "/var/www/html/gsr.ro/configfiles/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
</Directory>
</VirtualHost>
root@mjolnir:~# /etc/init.d/apache2 restart
Restarting web server: apache2[Fri Jan 27 18:32:57 2012] [warn] NameVirtualHost 172.16.7.133:8080 has no VirtualHosts
... waiting [Fri Jan 27 18:32:58 2012] [warn] NameVirtualHost 172.16.7.133:8080 has no VirtualHosts
.
gsr.ro astfel incat la accesarea adresei http://gsr.ro/redirect sa fiti redirectati catre http://ocw.cs.pub.ro/courses/gsr./var/www/html/gsr.ro/redirect.index.html care sa afiseze mesajul redirecthttp://gsr.ro/redirect intr-un browser.root@mjolnir:~# mkdir /var/www/html/gsr.ro/redirect
root@mjolnir:~# echo "redirect" > /var/www/html/gsr.ro/redirect/index.html
root@mjolnir:~# cat /etc/apache2/sites-available/gsr.ro | tail -n 3
redirect /redirect http://gsr.ro/labs
</VirtualHost>
root@mjolnir:~# /etc/init.d/apache2 restart
Restarting web server: apache2[Fri Jan 27 18:41:54 2012] [warn] NameVirtualHost 172.16.7.133:8080 has no VirtualHosts
... waiting [Fri Jan 27 18:41:55 2012] [warn] NameVirtualHost 172.16.7.133:8080 has no VirtualHosts
.
gsr.ro pentru a se permite accesul la acesta doar de la adresa 127.0.0.1.Order deny,allow, care specifica ordinea in care sunt interpretate directivele Deny si Allow.http://gsr.ro/ de pe sistemul local si adresa http://restricted.gsr.ro de pe sistemul unui coleg.gsr.ro, adaugati un nou ServerAlias, cu numele restricted.gsr.ro/etc/hosts pentru restricted.gsr.ro, care sa se mapeze cu adresa IP a sistemului vostru.root@mjolnir:~# cat /etc/apache2/sites-available/gsr.ro.conf
<VirtualHost *:80>
ServerName gsr.ro
ServerAlias www.gsr.ro
ServerAlias restricted.gsr.ro
DocumentRoot /var/www/html/gsr.ro
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html/gsr.ro/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order deny,allow
allow from 127.0.0.1
deny from all
</Directory>
</VirtualHost>
root@mjolnir:~# /etc/init.d/apache2 restart
Restarting web server: apache2[Fri Jan 27 19:27:55 2012] [warn] NameVirtualHost 172.16.7.133:8080 has no VirtualHosts
... waiting [Fri Jan 27 19:27:56 2012] [warn] NameVirtualHost 172.16.7.133:8080 has no VirtualHosts
.
Modulul rewrite din Apache permite rescrierea URL-urilor din request-urile HTTP, dupa anumite reguli.
userdir.mod_userdir astfel incat cererile catre URL-uri de forma gsr.ro/users/$username sa fie rescrise in gsr.ro/~$username.root@mjolnir:/etc/apache2/sites-available# a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
service apache2 restart
root@mjolnir:/etc/apache2/sites-available# cat gsr.ro | tail -n 5
RewriteEngine On
RewriteOptions Inherit
RewriteRule ^/users/([^/]+)/?(.*) /~$1/$2 [R]
RewriteRule ^/~/([^/]+)$ /~$1/ [R]
</VirtualHost>