Administrare server open source

Platforma de hosting cu software liber, gratuit, open source.

Serverele de tip LAMP au ajuns vestite in mod deosebit datorita sustinerii sistemului de operare care sta la baza lor, Linux, sistem care se bucura de sustinerea multor firme mari. Ca alternativa la Linux in cazul serverelor cu incarcare mare se foloseste FreeBSD, un sistem de operare UNIX-Like creat de la 0 avand ca guideline interactionarea in retele TCP/IP. Principalul avantaj al utilizarii FreeBSD ca server LAMP (FAMP) este modul in care sistemul de operare isi gestioneaza resursele facand fata incarcarilor foarte mari.

Pentru a descarca FreeBSD, intrati la adresa http://mirrorlist.freebsd.org/FBSDsites.php si alegeti un mirror local.

Pregatirea porturilor

Pentru instalarea aplicatiilor FreeBSD foloseste un sistem de porturi. Porturile sunt aplicatii portate pe sistemul de operare FreeBSD si care ne ofera un avantaj major si anume gasirea automata a dependintelor si compilarea aplicatiilor din surse – ceea ce ofera un avantaj prin optimizarea aplicatiei compilate local.

Inainte de a instala componentele va trebui sa aducem porturile la ultima versiune folosind urmatoarele comenzi:

[root@server ~]# portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
Fetching snapshot tag from portsnap2.FreeBSD.org... done.
Fetching snapshot metadata... done.
Updating from Thu May 21 09:13:40 UTC 2009 to Fri Jul 10 11:42:47 UTC 2009.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
Fetching 100 patches.....10....20....30....40....50....60....70....80....90....100...done.
Applying patches... done.
Fetching 2068 new ports or files... done.
[root@server ~]# portsnap extract
.........................................

Cele doua comenzi de mai sus, portsnap fetch si portsnap extract, au downloadat si extras porturile. Acum putem instala Apache, MySQL si PHP folosindu-ne de porturi.

Instalare Apache

Pentru a instala Apache trebuie sa intram in folderul portului unde rulam comanda „make install clean”, comanda care downloadeaza ultima versiune a aplicatiei, o compileaza si o instaleaza in locul nostru. Pentru versiunea 2.2 a serverului web Apache, directorul portului este /usr/ports/www/apache22.

[root@server ~]# cd /usr/ports/www/apache22
[root@server /usr/ports/www/apache22]# make install clean
 Per default categories are:
  AUTH AUTHN AUTHZ DAV CACHE MISC
 Categories available:
  AUTH AUTHN AUTHZ CACHE DAV EXPERIMENTAL LDAP  MISC PROXY SSL SUEXEC THREADS
 
  To see all available knobs, type make show-options
  To see all modules in different categories, type make show-categories
  You can check your modules configuration by using make show-modules
 
===>  Vulnerability check disabled, database not found
=> httpd-2.2.11.tar.bz2 doesnt seem to exist in /usr/ports/distfiles/apache22.
=> Attempting to fetch from http://www.apache.org/dist/httpd/.
httpd-2.2.11.tar.bz2                           74% of 5107 kB  508 kBps

Compilarea serverului poate dura, in functie de calculator, pana la 30 de minute. Instalarea poate dura chiar mai mult daca pe sistem nu sunt instalate unele dependinte mari mari – ex. pachetul pentru limbajul Perl. Avand in vedere ca sistemul de operare FreeBSD foloseste RCng, inainte de a porni serverul va trebui sa adaugam in fisierul /etc/rc.conf o linie care sa ii spuna scriptului rc ca serverul Apache trebuie sa fie pornit. Aceeasi linie e valabila si pentru pornirea serverului web Apache odata cu sistemul de operare. Linia care trebuie adaugata este:

apache22_enable="YES"

E important sa adaugam in fisierul /etc/rc.conf linia mentionata. In caz contrar serverul Apache nu va porni. Dupa ce am adaugat, serverul poate fi pornit folosind comanda:

[root@server ~]# /usr/local/etc/rc.d/apache22 start
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
[root@server ~]#

Pentru a verifica daca Apache e instalat corect si functional deschidem un browser web si introducem adresa sistemului – ex. http://localhost/ daca instalarea e facuta pe sistemul local. Daca totul a fost instalat corect, ar trebui sa vedem mesajul „It works!„, mesaj redat din fisierul index.html din directorul default al serverului: /usr/local/www/apache22/data.

Instalare MySQL

Instalarea serverului de baze de date MySQL o vom face, ca in cazul serverului Apache, tot din porturi. Portul corespunzator serverului MySQL versiunea 5.1 il gasim in directorul /usr/ports/databases/mysql51-server/ iar instalarea se face ca in cazul oricarui alt port:

[root@server ~]# cd /usr/ports/databases/mysql51-server/
[root@server /usr/ports/databases/mysql51-server/]# make install clean

Daca avem siteuri care solicita foarte mult serverul de baze de date, mai mult decat solicita serverul web, putem folosi diferiti parametri de compilare. De asemenea tot aici putem specifica parametri pentru ca bazele de date sa foloseasca in mod implicit un anumit charset. In cazul nostru, vom instala serverul MySQL folosind urmatorii parametri:

[root@server /usr/ports/databases/mysql51-server/]# make -DWITH_CHARSET=utf8 -DWITH_XCHARSET=all -DWITH_COLLATION=utf8_unicode_ci -DBUILD_OPTIMIZED=yes -DBUILD_STATIC=yes
=> mysql-5.1.35.tar.gz doesnt seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from ftp://ftp.fi.muni.cz/pub/mysql/Downloads/MySQL-5.1/.
mysql-5.1.35.tar.gz                             0% of   33 MB  285 kBps
...............
[root@server /usr/ports/databases/mysql51-server/]# make install clean
.............

Pentru instalare am folosit si parametri -DBUILD_OPTIMIZED=yes -DBUILD_STATIC=yes, care ajuta la cresterea vitezei de procesare a datelor.

Ca in cazul anterior, pentru a porni serverul MySQL trebuie sa adaugam o linie in fisierul /etc/rc.conf prin care sa ii spunem scriptului de initializare ca MySQL este un serviciu care trebuie pornit:

mysql_enable="YES"

Dupa modificare putem porni serverul MySQL:

[root@localhost ~]# /usr/local/etc/rc.d/mysql-server start

Dupa ce instalarea a ajuns la final putem verifica daca totul a decurs bine folosind comanda mysql, comanda cu ajutorul careia ne conectam la serverul MySQL local:

[root@server ~]# /usr/local/bin/mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.1.35 FreeBSD port: mysql-server-5.1.35
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 
mysql>

Aici putem rula diferite comenzi (ex. show databases;) sau putem trece la pasul urmator, instalarea PHP. Pentru a iesi din consola MySQL vom folosi comanda „quit„.

Instalare PHP

Directorul portului PHP5 este /usr/ports/lang/php5. Pentru instalare intram in directorul portului si rulamn comanda „make install clean„. Totusi, daca nu suntem multumiti de modul default, putem rula comanda „make config” inainte de instalare. Din interfata deschisa de comanda „make config” avem nevoie de optiunile CLI, CGI, Apache pentru o rulare normala. Optional putem alege tot aici si modulul Suhosin util pentru o securitate sporita. Dupa ce am setat optiunile putem instala PHP folosind comanda „make install clean„:

[root@localhost ~]# cd /usr/ports/lang/php5
[root@localhost ~]# make config
...............................................
[root@localhost ~]# make install clean
===>  Vulnerability check disabled, database not found
===>  Found saved configuration for php5-5.2.10
=> php-5.2.10.tar.bz2 doesnt seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from http://dk.php.net/distributions/.
php-5.2.10.tar.bz2                            100% of 8602 kB  551 kBps 00m00s

Dupa ce am instalat PHP5 trebuie sa instalam extensiile PHP necesare conectarii la o baza de date. Pentru asta exista un metaport separat care il gasim in directorul /usr/ports/lang/php5-extensions. Pentru a vedea lista de module care le putem instala intram in directorul /usr/ports/lang/php5-extensions si rulam comanda „make config„. De aici alegem modulele de care avem nevoie. In cazul nostru e nevoie de MYSQL si MYSQLI dar tot aici putem alege si alte module foarte utile cum ar fi CURL, CALENDAR, FTP, GD etc. Dupa ce am ales modulele care ne intereseaza apasam „OK” si rulam comanda „make install clean” care va compila si instala modulele in cauza.

[root@server ~]# cd /usr/ports/lang/php5-extensions
[root@server /usr/ports/lang/php5-extensions]# make config
...............
[root@server /usr/ports/lang/php5-extensions]# make install clean
===>  Vulnerability check disabled, database not found
===>  Extracting for php5-extensions-1.3
===>  Patching for php5-extensions-1.3
===>   php5-extensions-1.3 depends on file: /usr/local/include/php/main/php.h - found
===>   php5-extensions-1.3 depends on file: /usr/local/lib/php/20060613/ctype.so - not found
===>    Verifying install for /usr/local/lib/php/20060613/ctype.so in /usr/ports/textproc/php5-ctype
===>  Vulnerability check disabled, database not found
===>  Extracting for php5-ctype-5.2.10
=> MD5 Checksum OK for php-5.2.10.tar.bz2.
=> SHA256 Checksum OK for php-5.2.10.tar.bz2.
[root@server /usr/ports/lang/php5-extensions]#

Dupa instalarea PHP5 si a extensiilor necesare trebuie sa restartam serverul web:

[root@server /usr/ports/lang/php5-extensions]# /usr/local/etc/rc.d/apache22 restart
Performing sanity check on apache22 configuration:
Syntax OK
Stopping apache22.
Waiting for PIDS: 11034.
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
[root@server /usr/ports/lang/php5-extensions]#

Test FAMP

Prima data vom verifica daca PHP este instalat corect. Cel mai eficient mod pentru a testa asta este sa apelam functia phpinfo() care, daca totul functioneaza corect, ne va da o lista cu parametri de functionare PHP si a modulelor folosite. Pentru asta vom crea un fisier cu numele info.php in /usr/local/www/apache22/data, directorul implicit care va fi citit de serverul web. In fisierul info.php vom pune urmatoarele linii:

< ?php
phpinfo();
?>

Acum apelam prin browser fisierul info.php – ex. http://localhost/info.php in cazul unui server LAMP local – iar ca rezultat ar trebui sa primim o lista completa de setari.

Acum ca suntem siguri ca PHP functioneaza corect impreuna cu serverul Apache, va trebui sa testam comunicarea PHP cu serverul MySQL. Pentru asta vom crea un fisier mysql.php in aceeasi locatie, cu urmatorul continut:

< ?php
$link = mysql_connect("localhost","root","");
if( $link ) 
    echo "Comunicarea functioneaza";
else
    echo "Comunicarea nu functioneaza";
?>

Vom accesa si acest fisier prin browser, iar daca pe ecran ne va aparea mesajul „Comunicarea functioneaza” vom stii ca serverul LAMP care l-am pregatit este functional din toate punctele de vedere – server web, server de baze de date, si limbaj de scripting pentru continut dinamic.