Apache cu OpenSSL, Php si MySql (Ubuntu)

Configurare noua (How To)

Situatie

Ne propunem instalarea unui server complet pentru rularea de aplicatii web format din: Serverul HTTP Apache,OpenSSL pentru criptarea comunicatiei folosind public key cryptography, PHP si serverul de baze de date MySql. Suplimentar, va fi instalat si phpMyAdmin pentru managementul bazelor de date, iar serverele precizate vor fi configurare avand in vedere securitate si eficienta, astfel incat sa poata fi folosite intr-un mediu real.

Observatii:
– se vor instala package-urile din repozitoarele standard ale Ubuntu 14.04 LTS;
– denumirele programelor si locatia fisierelor de configurare sunt specifice Ubuntu;
– toate comenzile se executa cu drepturi de root (sudo su);
– in exemplele de mai jos, adresa serverului web este localhost (daca clientul si serverul se gasesc pe acelasi calculator) sau 192.168.0.100 daca sunt pe calc. diferite dar in acelasi LAN);

Solutie

Pasi de urmat

INSTALAREA

1. Instalare Server MySql

Se ruleaza comanda sudo apt-get install mysql-server mysql-client

Nota: se va solicita setarea unei parole pt. userul root@localhost

Fisierul de configurare pentru client si server este: /etc/mysql/my.cnf

2. Instalare Apache2

Se ruleaza comanda sudo apt-get install apache2

Default DocumentRoot este /var/www/html

Testare: cu browserul accesam http://localhost sau http://192.168.0.100 si trebuie sa obtinem o pagina asemanatoare cu ce din imaginea de mai jos.

testare apache

Deoarece configurarea serverului Apache este dificila si exista foarte multe optiuni de configurare, se recomanda instalarea locala a manualului serverului, pentru un acces mai usor la acesta.

se ruleaza comanda sudo apt-get install apache2-doc

Accesarea manualului se face tastand adresa: http://localhost/manual

3. Instalare PHP5

Se ruleaza comanda sudo apt-get install php5 libapache2-mod-php5

Nota: PHP5 va rula ca modul pt. Apache2. Orice modificare a fisierului de configurare pentru PHP (php.ini), trebuie sa determine restartarea serverului Apache. Serverul Apache se restarteaza astfel: service apache2 restart

Testare PHP: in DocumentRoot (/var/www) cream un fisier cu extensia .php, cu urmatorul continut, pe care-l accesam cu browserul la adresa http://localhost/fisier.php:

<?php

phpinfo();

?>

Trebuie sa obtinem o pagina asemanatoare cu cea din imaginea de mai jos.

testare php

4. Instalare suport PHP pentru comunicatia cu serverul MySql

Se ruleaza comanda sudo apt-get install php5-mysql

Optional, se instaleaza suport PHP pt. alte tehnologii sau servere (php5-imap, php5-mcrypt, php5-memcache etc)

Se testeaza feature-ul respectiv in outputul functiei phpinfo();

5. Instalare phpMyAdmin

Se ruleaza comanda sudo apt-get install phpmyadmin

Se vor solicita:
– Web server to reconfigure automatically: <– apache2
– Configure database for phpmyadmin with dbconfig-common? <– No

Dupa aceea se acceseaza phpMyAdmin la adresa http://192.168.0.100/phpmyadmin/ si se obtine o pagina precum cea din imaginea de mai jos:

phpmyadmin

CONFIGURAREA

1. MySql

Bazele de date se gasesc in directorul specificat de optiunea DATADIR din /etc/mysql/my.cnf
Acesta trebuie sa fie owned de userul sub care ruleaza serverul (Exemplu: chown -R mysql.mysql /var/lib/mysql)

Functionarea serverului MySql se bazeaza pe o serie de variabile.

Afisare variabile folosite de mysqld:

Se ruleaza comanda mysql -u root -h localhost -p mysql>show variables; mysql>SHOW VARIABLES LIKE “%version%”; mysql>show status;

Afisare threaduri mysql precum si informatii despre acestea:

mysql> show full processlist;

Mytop reprezinta un script care se conecteaza la serverul mysqld si ruleaza continuu show status si show processlist. Este util pentru a vedea in timp real threadurile mysql.Instalare: sudo apt-get install mytopFisierul de configurare folosit pt. conectarea la server este ~/.mytop si are continutul:

user=root
pass=rootpass
host=localhost

MySql Query CacheAcesta este feature care salveaza intr-un cache SELECT-urile query impreuna cu rezultatul trimis clientului si este foarte util pentru tabelele al caror continut nu se schimba foarte des (Exemplu: tabel cu tarile globului).Cache-ul este impartit intre sesiuni, astfel incat un rezultat al unui client este folosit si de un altul. Cache-ul este mereu actual si reliable. Orice modificare a tabelului care contine datele rezulta flushul cacheului;

Dimensiunea minima a cache-ului este 40KB, o valoare mai mica genereaza warning;

Pentru a afisa warningurile:

mysql> show warnings

Daca query_cache_size este mai mare ca zero, atunci query_cache_type influenteaza la ce se face cache. Valorile posibile pentru query_cache_type sunt:
0 – dezactiveaza caching
1 – face caching la toate selecturile mai putin cele care sunt de genul SELECT SQL_NO_CACHE
2 – face caching la toate selecturile de genul SELECT SQL_CACHE

query_cache_limit stabileste dimensiunea maxima pt. un cache la un anumit query. Default este 1MB.
Aceste optiuni se seteaza in /etc/mysql/my.cnf

query_cache_limit = 1M
query_cache_size = 16M
query_cache_type = 1

2. Configurare Apache

Structura fisiere de configurare (valabil pe Ubuntu si distributiile inrudine: Mint, Debian, Kubuntu etc):

structura fisiere apache

2.1 Fisiere de configurare (toate se gasesc in /etc/apache2, iar toate caile folosite ulterior vor fi relative la acest director):

apache2.conf -> main configuration file care include toate celelalte fisiere; – ports.conf -> specifica portul si interfetele pe care asculta serverul; – envvars – contine variable de configurare (Exemplu: userul si grupul sub care ruleaza apache2) –mods-enabled/ -> director care contine fisiere cu optiuni pentru incarcarea diferite module precum si optiuni de config pentru modulele respective; – conf-enabled/ -> director care contine fisiere cu diferite alte optiuni de configurare; – site-enabled/ -> director care contine fisiere cu configuratii pt. virtual hosting;

Fisierele din cele 3 directoare de mai sus sunt symlinkuri catre fisierele din directoarele mods-available/, conf-available/ sisite-available/
Managemenul symlinkurilor se realizeaza folosind utilitarele: a2enmod, a2dismod, a2ensite, a2dissite, a2enconf,a2disconf (Exemplu: a2enconf security, a2dismod status).

2.2. Configurare Virtual Hosting

In acest exemplu vom crea un Virtual Host numit www.exemplu.ro. Acest domeniu trebuie sa fie rezolvat de serverul DNS autoritativ in IP-ul serverului web. Daca acest lucru nu este posibil, se poate realiza doar pentru testare, o asociere statica intre numele domeniului si IP-ul serverului in /etc/hosts

a) crearea fisier in /etc/apache2/site-available cu continutul:

<VirtualHost *:80>

ServerName      exemplu.ro

ServerAlias     www.exemplu.ro

DocumentRoot    /var/www/exemplu.ro

</VirtualHost>

Atentie: numele fisierului trebuie sa se termine in .conf sau se modifica in apache2.conf linia de includere fisiere. (Exemplu:exemplu.ro.conf)

b) creare symlink in site-enabled/ catre fisierul din site-available/

Se executa: a2ensite exemplu.ro

2.3. Server Status

a) activare modul: a2enmod status
b) configurare in /etc/apache2/mods-available/status.conf

<Location /server-status>

SetHandler server-status

 

#IP-ul clientului care va putea accesa

Require ip 192.168.1.0/24

</Location>

ExtendedStatus On

 

Nota: Un handler este o denumire pentru o actiune definita intern in Apache.

2.4. Server Info

a) activare modul: a2enmod info

b) configurare in /etc/apache2/mods-available/info.conf

<Location /server-info>

SetHandler server-info

 

#IP-ul clientului care va putea accesa

Require local

Require ip 192.168.1.0/24

</Location>

2.5. Mod Deflate

a) activare modul deflate si filter: a2enmod deflate, a2enmod filter

b) configurare in /etc/apache2/mods-available/deflate.conf

<IfModule mod_deflate.c>

 

#specificarea tipurilor de fisiere care vor fi comprimate

# these are known to be safe with MSIE 6

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css

BrowserMatch ^Mozilla/4 gzip-only-text/html

BrowserMatch ^Mozilla/4.0[678] no-gzip

BrowserMatch bMSIE !no-gzip !gzip-only-text/html

#specifica numele unei note care se va atasa requestului si contine ratia de compresie

DeflateFilterNote Input input_info

DeflateFilterNote Output output_info

DeflateFilterNote Ratio ratio_info

</IfModule>

2.6. OpenSSL

a) Instalare: se ruleaza comanda sudo apt-get install openssl
b) Activare modul: a2enmod ssl
c) creare director unde se vor salva cheia privata a serverului si certificatul (self-signed pentru moment).

Generare cheie privata si certificat rsa

Se ruleaza comanda sudo mkdir /etc/apache2/ssl, iar apoi se ruleaza

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Atentie: common name trebuie sa fie hotname-ul scris in browser de user, altfel eroare.
d) modificare in fisierul de configurare al Virtual Hostului (/etc/apache2/sites-available/exemplu.ro.conf) conform noilor cai catre cheie si certificat.

<VirtualHost *:443>

SSLEngine On

SSLCertificateFile /etc/apache2/ssl/apache.crt

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

ServerName      exemplu.ro

ServerAlias     www.exemplu.ro

DocumentRoot    /var/www/exemplu.ro

#daca se doreste contrulul accesului la resurse in functie de IP

<Directory /var/www/exemplu.ro/secret>

Order Allow,Deny

Allow from 127.0.0.1

Allow from 192.168.1.11

Allow from 11.0.0.0/8

</Directory>

</VirtualHost>

Tip solutie

Permanent

Voteaza

(46 din 117 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?