Jump to content
puberty

Instalarea Nginx Php Mysql Phpmyadmin Pe Ubuntu

Recommended Posts

Cu totii cunoastem popularitatea de care se bucura la nivel mondial serverul web Apache. Aceasta popularitate este de inteles din toate punctele de vedere, intrucat el chiar este un server foarte bun si, cu siguranta, va ramane prima optiune pentru solutiile web la nivel mondial.In anumite situatii, insa, apar anumite probleme legate de performanta pe care Apache o ofera atunci cand vorbim de siteuri mari, ce trebuie sa faca fata unui numar foarte mare de vizitatori, precum si atunci cand vorbim de resursele pe care astfel de siteuri le consuma.Cu siguranta, exista alternative care nu ar implica o renuntare la Apache, solutii bazate pe accelerare gen Varnish sau eventual chiar folosirea unui server light gen lighttpd, nginx care sa functioneze in fata serverului apache si sa serveasca partea statica a siteului, in acest fel reducandu-se nivelul de resurse de care apache ar avea nevoie. Un alt element car ar mai putea fi facut este o instalare corecta a apache (fara a folosi elemente de care apache nu are nevoie – in acest caz instalarea de tip tasksel nefiind potrivita pe ubuntu), precum si o configurare corecta si adaptata cerintelor aplicatiei web pe care trebuie sa o serveasca.

Cand totusi sugestiile de mai sus nu se doresc a fi adoptate sau nu reprezinta o solutie foarte buna, atunci alternativa ar fi inlocuirea serverului apache cu ceva mult mai putin consumator de resurse, in acest caz Nginx, care desi poate va crea probleme de alta natura (erori mai greu de rezolvat sau cine stie ce probleme de config cu care nu prea suntem obisnuiti), pe de alta parte ne vom bucura de performante superioare care vor face ca siteul respectiv sa reactioneze mult mai bine folosind aceasta solutie.

 

Acest articol nu contine elemente create de mine, ci mai degraba adunate de mine in momentul in care am fost nevoit la randul meu sa adopt o astfel de solutie intr-unul din proiectele la care lucrez. Invit pe cei care sunt mai experimentati sa vina cu adaosuri sau eventuale completari, in speranta ca acest articol sa fie de folos celor care doresc la un moment dat sa implementeze Nginx intr-unul din proiectele lor, mai ales ca documentatia Nginx este cam slabuta precum si sursele de informare in limba romana destul de putine.

 

 

Sa trecem la instalarea propriu-zisa, urmand pe rand pasii necesari pentru instalarea serverului web, php, mysql, iar in final am sa tratez instalarea phpmyadmin pentru a functiona cu serverul nostru:

 

sudo apt-get install nginx

Pornim serverul:

 

/etc/init.d/nginx start

 

sudo nano /etc/apt/sources.list

In care vom introduce PPA-ul:

 

deb http://ppa.launchpad.net/brianmercer/php/ubuntu lucid main

Adaugam cheia de autentificare:

 

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8D0DC64F

 

sudo apt-get update

Pasul urmator implica instalarea PHP (modulele php trecute depind strict de ce aveti voi nevoie):

 

sudo apt-get install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-json php5-suhosin php5-common php-apc php5-dev

Instalam serverul pentru lucrul cu bazele de date MySQL:

 

aptitude install mysql-server mysql-client

Va trebui sa definim o parola pentru userul root cu care ne putem ulterior conecta la bazele de date.

 

sudo apt-get install php5-fpm php5-cgi

 

sudo /etc/init.d/nginx restart

In acest moment, putem testa in browser ip-ul serverului nostru si daca putem vizuala index.html-ul in care ni se confirma ca Nginx merge atunci totul e ok. Desi am instalat PHP va trb sa configuram Nginx sa foloseasca php-ul nostru. Pentru asta vom configura nginx dupa cum urmeaza:

 

sudo nano /etc/nginx/sites-available/default

Urmariti videoul pentru mai multe detalii. Ulterior, fisierul trebuie sa fie de forma:

 

# You may add here your

# server {

# ...

# }

# statements for each of your virtual hosts

 

server {

listen 80;

server_name localhost;

 

access_log /var/log/nginx/localhost.access.log;

 

location / {

root /var/www/nginx-default;

index index.php index.html index.htm;

}

 

location /doc {

root /usr/share;

autoindex on;

allow 127.0.0.1;

deny all;

}

 

location /images {

root /usr/share;

autoindex on;

}

 

#error_page 404 /404.html;

 

# redirect server error pages to the static page /50x.html

#

#error_page 500 502 503 504 /50x.html;

#location = /50x.html {

# root /var/www/nginx-default;

#}

 

# proxy the PHP scripts to Apache listening on 127.0.0.1:80

#

#location ~ \.php$ {

#proxy_pass http://127.0.0.1;

#}

 

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

#

location ~ \.php$ {

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;

include fastcgi_params;

}

 

# deny access to .htaccess files, if Apache's document root

# concurs with nginx's one

#

#location ~ /\.ht {

#deny all;

#}

}

 

# another virtual host using mix of IP-, name-, and port-based configuration

#

#server {

#listen 8000;

#listen somename:8080;

#server_name somename alias another.alias;

 

#location / {

#root html;

#index index.html index.htm;

#}

#}

 

# HTTPS server

#

#server {

#listen 443;

#server_name localhost;

 

#ssl on;

#ssl_certificate cert.pem;

#ssl_certificate_key cert.key;

 

#ssl_session_timeout 5m;

 

#ssl_protocols SSLv2 SSLv3 TLSv1;

#ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

#ssl_prefer_server_ciphers on;

 

#location / {

#root html;

#index index.html index.htm;

#}

#}

Pasul urmator este crearea urmatorului fisier urmand editarea acestuia cu un script pe care ulterior il vom face executabil si il vom adauga la startup:

 

sudo touch /etc/init.d/php-fastcgi

 

sudo nano /etc/init.d/php-fastcgi

In care introducem:

 

#!/bin/bash

BIND=127.0.0.1:9000

USER=www-data

PHP_FCGI_CHILDREN=15

PHP_FCGI_MAX_REQUESTS=1000

 

PHP_CGI=/usr/bin/php-cgi

PHP_CGI_NAME=`basename $PHP_CGI`

PHP_CGI_ARGS="- USER=$USER PATH=/usr/bin PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS $PHP_CGI -b $BIND"

RETVAL=0

 

start() {

echo -n "Starting PHP FastCGI: "

start-stop-daemon --quiet --start --background --chuid "$USER" --exec /usr/bin/env -- $PHP_CGI_ARGS

RETVAL=$?

echo "$PHP_CGI_NAME."

}

stop() {

echo -n "Stopping PHP FastCGI: "

killall -q -w -u $USER $PHP_CGI

RETVAL=$?

echo "$PHP_CGI_NAME."

}

 

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo "Usage: php-fastcgi {start|stop|restart}"

exit 1

;;

esac

exit $RETVAL

Se salveaza fisierul , apoi in terminal:

 

sudo chmod +x /etc/init.d/php-fastcgi

 

sudo service php-fastcgi start

 

sudo update-rc.d php-fastcgi defaults

 

sudo reboot

Dupa restart ar trb sa functioneze Nginx Php si MySQL la noi pe server. Putem testa php astfel:

 

sudo su

 

cd /var/www/nginx-default

 

touch test.php

 

nano test.php

In acest fisier introducem: phpinfo() intre taguri de php.

Salvam fisierul si ulterior il apelam in browser de forma http://ipserver/test.php, iar daca rezultatul este o pagina cu informatii legate de php atunci totul este in regula.Ultimul pas este sa instalam phpmyadmin. Din pacate, pentru a-l instala nu putem folosi apt-get, intrucat installerul ce vine default pentru phpmyadmin nu recunoaste decat apache sau lighttpd si atunci o solutie mai buna ar fi sa:

Mergem pe siteul celor de la phpmyadmin la sectiunea download si copiem adresa de download pentru versiunea de PMA pe care o dorim apoi:

 

cd /var/www/nginx-default

wget http://adresa_download_pma

tar xvfz arhiva.tar.gz

Ulterior putem sa stergem arhiva, sa redenumim, recurgand la un nume gen admin si il putem accesa in browser de forma http://ipserver/admin/index.php

In concluzie aceasta solutie merita luata in calcul, atunci cand apacheul nu ne satisface din punct de vedere al performantei, fiind constienti ca din acel moment va trebui sa buchisim putin cate putin pe internet de fiecare data cand va aparea vreo problema cu aplicatia, referindu-ma aici la cine stie ce erori prin loguri de care habar nu avem cu ce se mananca sau eventual pentru setari suplimentare pe care am dori sa le facem.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×