Reţele de calculatoare
Conf.
Dr. Carmen Timofte (Stanciu)
Tema 1. Servicii Internet
Serviciul Web. Server-ul Web
Apache
Pentru platformele Unix, daemon-ul se numeşte httpd.
CREAREA UNUI SERVER HTTP
· utilizarea un server deja existent, de exemplu www.infocib.ase.ro
· crearea propriul server: gata compilat sau sub formă de surse.
Codul sursă
al versiunii httpd_1.3 are şapte directoare : cgi-bin, conf, icons, logs, cgi-src, src, support, dintre
care ultimele trei conţin fişiere "makefile", prin care se
compilează produsul. Utilizatorul trebuie să modifice anumiţi
parametrii doar din makefile-ul directorului src.
Produsului
httpd_3.0 compilat - după aplicarea utilitarelor uncompress şi
tar se obţin directoarele :
BIN cu fisierul
httpd,
CONFIG cu patru
fişiere de configurare,
ICONS cu fişiere
de tip .gif şi .xbm,
CGI-BIN pt. fiş.
cgi,
LOGS pt. a se vedea
log-ările/ erorile de log-are.
HTDOCS pt.
fişierele de tip .html
Se bazează pe CGI şi utilizează programe de criptare.
Există trei tipuri de configurare:
· prin compilarea sursei httpd, având de modificat variabile în /src/Makefile şi /src/config.h (la versiunea de la NCSA);
· modificarea fişierelor de configurare cu parametrii specifici sistemului;
· configurare în timpul rulării.
Principalele tipuri de fişiere şi directivele care trebuiesc configurate sunt:
· httpd.conf - fisierul de configurare al serverului - conţine informaţii referitoare la:
ServerType - tipul serverului (stand-alone sau inetd);
ServerRoot - locaţia unde se găseşte daemon-ul; de exemplu: /usr/etc/httpd
ServerName - aliasul DNS, adică numele serverului WWW, sub forma în care este înregistrat, de exemplu www.infocib.ase.ro (orice server nou creat de forma www sau de alta trebuie să fie înregistrat pentru a putea fi utilizat şi de alţii).
AccessConfiguration şi ResourceConfiguration - calea fizică pe care se găsesc fişierele de configurare pe server; de exemplu: conf/access.conf, conf/srm.conf.
Port –indică portul pe care httpd-ul va asculta cererile clienţilor; este o valoare între 0-65536; implicit este 80;
· srm.conf - fisierul de configurare al resurselor server-ului, cum ar fi amplasarea documentel o rşi a scriptu-urilor CGI.
DocumentRoot - directorul ce conţine fişierele pe care le pune la dispoziţie httpd-ul; exemplu: /usr/etc/httpd/htdocs;
UserDirectory - directorul ce specifică un subdirector pe care trebuie sa-l creeze utilizatorii pentru html-urile proprii; pentru ca userii să poată scrie în acel director trebuie comutat de pe "disable", care este implicit, şi pus pe "enable".
Redirect – creează un document virtual pe server;
Alias – creează o legătură între un document/director virtual de pe server-ul de Web şi un doc/dir de pe calculatorul server
ScriptAlias –indică directoarele care sunt autorizate să includă script CGI
· access.conf - fişierul de configurare al accesului –defineşte politica de limitare a dreptului de acces la diferitele documente ale server-ului
- Atât în zona sistem, cât şi în home-ul utilizatorilor trebuie să existe directorul Web, unde se depun documentele .html. Utilizatorii îşi creează ei directorul Web, în cadrul home directorului, dacă doresc să pună la dispoziţia tuturor fişierele respective de tip .html. Pentru ca ceilalţi să aibă acces la acest director , trebuie să i se pună atributele de read şi execute pentru alţii. Accesul la fişiere se va face astfel:
http://www.default.server/~username/nume_fişier.html
Exemplu de fişier httpd.conf:
port 80
User nobody
Group #2
ServerAdminadmin_nume@www.infocib.ase.ro
ServerRoot /usr/local/etc/httpd
ErrorLog
logs/error_log
TransferLoglogs/httpd.pid
ServerNamewww.infocib.ase.ro
DocumentRoot
/usr/local/etc/httpd/htdocs
UserDir Web
DirectoryIndex
index.html
FancyIndexingon
DefaultIcon/icons/unknown.xbm
ReadmeNameREADME
HeaderNameHEADER
IndexIgnore*/.??* *~
*# */HEADER* */README*
AccessFileName.hhtaccess
DefaultTypetext/plain
Alias /icons/
/usr/local/etc/httpd/icons
Alias /info/ /usr/local/etc/httpd/htdocs/info
Alias /doc/ /u/pub/doc
ScriptAlias/cgi-bin/
/usr/local/etc/httpd/cgi-bin
* configurarea accesului pentru
directorul htdocs ,ce conţine
documentaţie
<
Directory/usr/local/etc/httpd/htdocs>
OptionsIndexes FollowSymLinks
Allow Override All
* pentru .htaccess files
< Limit GET >
Order Allow, Deny
Allow from all * implicit este Deny
< / Limit >
< / Directory >
- prin rularea stand-alone - serverul se execută ca un daemon clasic. El aşteaptă sosirea conexiunilor şi serveşte cererile. La fiecare cerere a clientului creează o copie a sa. Este o cale mult mai rapidă (recomandată);
- din inetd (Internet Daemon) – serverul este administrat printr-un superdaemon care ascultă un port TCP/IP şi se ocupă cu lansarea procesului httpd la fiecare cerere a unui client (inetd-ul facând swap către httpd); este start-at printr-un fişier de comandă, de exemplu /etc/rc.local şi rulează continuu ca un daemon de "sendmail". Pentru aceasta trebuie introdusă comanda
" /usr/etc/httpd & " în rc.local sau rc.
- Se poate renunţa la semnul de background "&", dacă fişierul de configurare /etc/httpd.conf se găseşte la locul implicit şi este specificat şi portul pe care trebuie să asculte.
Dacă se
utilizează modul stand-alone, pe sistemele Unix, doar root-ul poate rula
httpd pe porturi mai mici decât 1024, care sunt privilegiate, ceilalţi
useri având acces de la 1024 în sus.
Un exemplu de formă de rulare a serverului, poate fi:
httpd [-d
director_iniţial_server] [-f fisier_de_configurare][-v]
unde
-v este opţiunea pentru afişarea versiunii de server http.
Forma
generală de lansare a unui server httpd, este următoarea:
httpd [-opt -opt -opt
...] [director]
unde opt poate fi::
· -r fisier_de_Configurare , cel folosit drept fişier de configurare; dacă nu se pune , implicit se consideră /etc/httpd.conf ;
· -p port , portul de ascultare ; porturile mai mici decât 1024 sunt privilegiate; fără acest argument se consideră că se rulează ca "inetd" şi utilizează stdin şi stdout drept canale de comunicaţie;
· -l log_fişier , înregistrează cererile de conectare ;
· -restart , restartează un httpd ce deja rulează , reincărcând fişierele de configurare
şi redeschizând fişierul de login (log file) ;
· -gc_only , doar pentru opţiunea de "proxy";
· -v , verbose - comută pe colectorul de depanare ;
· -vv , very verbose - comută pe mult mai multe mesage de depanare ;
· -version , afişează versiunea de httpd şi libwww (The WWW Common Library) ;
· -dy , dă posibilitatea vizualizării (navigării) conţinutului directorilor, aceştia devenind nişte documente hipertext; acestă opţiune se poate seta şi din directiva de configurare DirAccess ;
· -dn , nu permite vizualizarea directorilor; o acţiune de încercare a accesului în directorilor va genera un mesaj de eroare ;
· -ds , vizualizare selectivă a directorilor, accesul fiind permis doar pentru cei conţinuţi în fişierul www_browsable ;
· -dt , pentru toţi directorii navigabili care conţin un fişier README , incluzând textul fişierului în partea superioară a directorului, înainte de listarea conţinului directorului ( se setează directiva de configurare DirReadme) ;
· -db ,idem ,dar pune textul fişierului README în partea inferioara; aceste două opţiuni pot fi combinate cu -dy , -dys, -dty ,etc ;
· -dr , dezactivează includerea fişierului README .
Exemplu:
httpd -r
/usr/etc/httpd.conf -p 80
Deci, este un server standalone ce rulează pe portul 80, cu fişierul de configurare de mai sus.
Dacă se doreşte renunţarea la server atunci se poate folosi:
if [-f /usr/etc/httpd]; then
(/usr/etc/httpd && (echo -n
'httpd')) & >/dev/console
fi
Dacă sunt probleme la instalare, se recomandă rularea cu opţiunea -v şi citirea FAQ-ului corespunzător, consultarea documentaţiei referitoare la bug-uri
- versiuni sub Unix (/var/apache/) şi Windows (c:\Apache\); structură de directoare (asemănătoare cu NCSA); exemplificaţi pt. Apache sub Windows şi sub Unix;
- fişiere de configurare (asemănătoare cu NCSA); exemplificaţi pt. Apache sub Windows şi sub Unix;
- documentaţie www.apache.org + local, după instalare Apache sub Windows + sub Unix (infocib.ase.ro:1800)
- Documentaţi-vă despre directivele care vă permit crearea unor server-e virtuale.
Acces cu cont şi parolă în directorul ~ , (al fiecărui utilizator):
- în httpd.conf:
- tb. să modificaţi directivele Port, ErrorLog, CustomLog, PidFile, MinSpareServers, MaxSpareServers, StartServers
- configurare acces în directorul ~
</Directory>
-scoaterea drepturilor de vizualizare a fişierelor ce stabilesc politica de acces (.htaccess) şi a fişierului de parole (.htpasswd)
- creaţi în directorul vostru fişierul .htaccess:
AuthType Basic
AuthName
"Carmen's Area!"
AuthUserFile
"/home/carmen/www/.htpasswd"
require user cs
- creaţi fişierul de parole .htpasswd în directorul vostru:
/usr/HTTPServer/bin/htpasswd –c
/home/carmen/www/.htpasswd cs
- dacă
aveţi serverul pornit, opriţi-l
killall
- porniţi serverul apache:
/usr/HTTPServer/bin/httpd –f /home/carmen/www/httpd.conf
· Conectaţi-vă pe un server de Unix (exp: infocib.ase.ro)
· Verificaţi ce server-e de Web rulează (NCSA, apache) (ps aux).
· Unde se găsesc aceste server-e? (/usr/local/etc/httpd/; /var/apache/...) Pe ce porturi rulează (netstat –a), ce versiune de software? (httpd –help)
· Vizualizaţi structura de directoare şi fişierele de configurare pt. fiecare în parte.
· Care este denumirea directorului pe care trebuie să-l creaţi în Home Directory, pt. a accesa paginile voastre de Web cu serverul de Web NCSA. Dar pt. Apache?
· Transferaţi pe server fişierele .html.
· Creaţi în home directory un director Web, în care mutaţi fişierele .html create în seminarul anterior. Daţi dreptul de citire şi execuţie pt. toată lumea directorului Web, cu toate subdirectoarele sale.
· Accesaţi pagina voastră de Web de pe infocib, utilizând fiecare server de Web instalat. (~cont). Accesaţi o pagină situată în alt subdirector din Web.
· Studiaţi documentaţia apache sub Unix de pe server.
· Creaţi un mic script SHELL (pentru a-l pune în zona cgi-bin), care să afişeze de câte ori a fost vizitată pagina voastră (opţional).
APACHE sub Windows
- Download kit: ftp://ecomm.ase.ro/ ..../apache2_0.43-win32-x86-no_ssl.msi
- Documentaţie: --------,,------------ /apachedocs.pdf
- Instalare:
o alegeţi varianta custom,
o pornire manuală pe portul 8080,
o directorul c:\apache\
- configurare:
o vizualizati si modificati fişierul httpd.conf, astfel încât home-ul pt. utilizatori să fie: c:\stud_doc\
(exp: Alias /users "F:\users" )
o ce module sunt încărcate? Cum se pot încărca celelalte? (-V, -l)
o verificaţi dacă este portul 8080 ocupat;
o verificaţi dacă programul apache este pornit ca proces sau serviciu;
o vizualizaţi structura de directori ai server-ului apache; intraţi in directorul bin;
o verificaţi ce opţiuni aveţi din linie de comandă pt. comanda „apache” (apache -?);
o verificaţi configuraţia (apache –t); Accesaţi paginile noului server.
o porniţi server-ul apache ca proces din linie de comandă (nu din meniu)
o testaţi-l pe default, cât şi pt. un alt director;
o porniţi server-ul apache ca serviciu; verificaţi existenţa serviciului;
o Puneţi in cgi-bin un script care să va afişeze un contor pe pagina voastra.
o Verificaţi noul server de Web de pe acest port.(apache –t; netstat -a)
o Documentaţi-vă în legătură cu porturile unui sistem, care sunt ocupate, pe care le puteţi folosi ca utilizator privilegiat şi ca utilizator obişnuit.
o Creaţi un nou fişier de configurare (alt nume, alt port). Porniţi server-ul cu acest fişier nou şi testaţi-l (–f file_name).
o Intraţi cu cont şi parolă pe directorul vostru virtual:
- creaţi în directorul vostru fişierul htaccess:
AuthType Basic
AuthName "Carmen's Area!"
AuthUserFile "F:/users/carmen/htpasswd"
require user cs
- creaţi fişierul de parole în directorul vostru:
C:\apache\bin\htpasswd –c htpasswd cs
o Creaţi un server virtual pe aceeaşi adresă IP. Verificaţi-l. (-t –D DUMP_VHOST). (Fişierul hosts tb. editat). Trebuie pus şi modulul „LoadModule vhost_alias_module modules/mod_vhost_alias.so” ? Testaţi noul site (http//nume2:port).