Reţele de calculatoare

Conf. Dr. Carmen Timofte (Stanciu)

 

Tema 1. Servicii Internet

Serviciul Web. Server-ul Web Apache

 

1. Serviciul Web (cont.)

1.5.Server-e Web

1.5.2. NCSA

1.5.3.APACHE

Teme

 

 

 

 

1. Serviciul Web (cont.).Server-e Web

 

 

  NCSA

 

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.

 

NCSA

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.

          Configurare server

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 >

 

Etapele de instalare a serverului httpd

-         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

 

APACHE

 

-         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  ~>

    AllowOverride AuthConfig

    Options None    sau  Options FollowSymLinks

    Order allow,deny

    Allow from all

</Directory>

-scoaterea drepturilor de vizualizare a fişierelor ce stabilesc politica de acces (.htaccess) şi a fişierului de parole (.htpasswd)

<Files ~ "^\.ht">

    Order allow,deny

    Deny from all

</Files>

- 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

- verificaţi server-ul apache:

                                               http://infocib.ase.ro:port/~carmen/  

            (trebuie să apară fereastra "Carmen's Area!" care va cere user-ul şi parola, apoi după introducere, intră automat în fişierul index.html, care trebuie să se găsească în directorul www din contul vostru)

 

- vizualizaţi procesele care rulează:

            pstree |grep carmen sau ps –fu carmen

- verificaţi  portul pe care rulează serverul apache:

            netstat –a –n |grep port

- opriţi serverul apache:

            killall

 

Teme

·        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:

- editaţi httpd.conf, modificaţi denumirea fişierelor .htaccess, .htpasswd;

<Directory "F:\users">

    AllowOverride AuthConfig

    Options None

    Order allow,deny

    Allow from all

</Directory>

- atenţie la aspectele de securitate:

<Files ~ "^htaccess">

    Order allow,deny

    Deny from all

</Files>

 

<Files ~ "^htpasswd">

    Order allow,deny

    Deny from all

</Files>

- 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).

 

NameVirtualHost *

<VirtualHost *>

        DocumentRoot "F:/users/carmen"

        ServerName carmens2

   

        # Other directives here

 

</VirtualHost>

 

 

 

 

<Directory "F:\users">

    AllowOverride AuthConfig

    Options None    sau  Options FollowSymLinks

    Order allow,deny

    Allow from all

</Directory>