Stranica: 1/1.

lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 22 vel 2013, 18:34
Postao/la hightech
Operativni sistem: Debian Squeeze 6.0.6 ... Verzija servera: nginx/0.7.67
Napomena: Ova verzija nginx-a je po defaultu u squeeze 6.0.6 i smatra se stabilnom verzijom ...
Prvo, par neophodnih paketa:

Kod: Označi sve

aptitude install php5-cgi php5-cli php5-common php5-mhash php5-curl php5-gd php5-json php5-mcrypt php5-sqlite php5-mysql php5-dev php5-tidy php5-xmlrpc php5-memcache php5-pspell php5-xsl
Pa mysql klijent i server:

Kod: Označi sve

aptitude install mysql-server mysql-client
Prilikom instalacije mysql-a podesite root lozinku, pa zatim:

Kod: Označi sve

aptitude install spawn-fcgi
Pa onda engine-x

Kod: Označi sve

aptitude install nginx 
Zatim napraviti virtual host direktorijum

Kod: Označi sve

mkdir -p /home/www/public
Zatim napraviti direktorijum za logove

Kod: Označi sve

mkdir /home/www/logs
Zatim promeniti vlasništvo (ownership) nad www podacima

Kod: Označi sve

chown -R www-data:www-data /home/www/public
Pa editovati /etc/nginx/sites-available/default
...i zameniti postojeći sadržaj dole navedenim, ali uradićete bekap tog fajla neposredno pre editovanja, da bi ostale "vidljive" neke "custom" opcije neophodne za dalja podešavanja:

Kod: Označi sve

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/default_beckup
sudo nano /etc/nginx/sites-available/default
Sadržaj:

Kod: Označi sve

server {
	listen 80 default;
	server_name localhost;
	access_log /home/www/logs/localhost.access.log;
	location / {
		root /home/www/public;
		index index.html index.htm index.php;
	}
	location ~ \.php$ {
		fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME /home/www/public$fastcgi_script_name;
		include fastcgi_params;
	}
}
zatim linkovati default vhost podešavanja, mada nginx automatski linkuje, ali za svaki slučaj:

Kod: Označi sve

ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default

Zatim editovati /etc/init.d/php-fastcgi i ubaciti sledeci sadržaj:

Kod: Označi sve

nano /etc/init.d/php-fastcgi
Sadržaj:

Kod: Označi sve

#!/bin/bash
BIND=127.0.0.1:9000
USER=www-data
PHP_FCGI_CHILDREN=5 #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
Izmeniti dozvole nad php-fastcgi u izvršne:

Kod: Označi sve

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

Pokrenuti nginx:

Kod: Označi sve

/etc/init.d/nginx start
Pokrenuti fastcgi:

Kod: Označi sve

/etc/init.d/php-fastcgi start

Pa:

Kod: Označi sve

update-rc.d nginx defaults
..zatim:

Kod: Označi sve

update-rc.d php-fastcgi defaults 
...zatim napraviti index.php i ubaciti phpinfo() funkciju:

Kod: Označi sve

nano /home/www/public/index.php
index.php bi trebao izgledati ovako:

Kod: Označi sve

<?php echo phpinfo(); ?>

Gotovo!!! sada otvorite browser i kucajte:

Kod: Označi sve

http://localhost
Web strane našeg servera se nalaze u /home/www/public/

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 23 vel 2013, 20:05
Postao/la tomog999
Jel postoje situacije kad se mora/preferira koristiti lemp umjesto lamp,
ne znam, pitam,

ili je to samo stvar osobne preference.

Koje su uopće, laički rečeno razlike između nginx i apache servera,
zašto bih izabrao jedan umjesto drugog, onako u jednoj rečenici sažeto.

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 23 vel 2013, 20:11
Postao/la drade
Laicki:
Oboje su HTTP serveri (apacheu je to primarna funkcija a nginx-u sekundarna), no nginx je incijalno zamisljen kao visoko optimizirani reverse proxy (apacheu je to jedna od sekundarnih funkcija, nginxu je primarna).

Sve, osim laicki:
Ovdje spada sve sto nisam srocio u gornjoj recenici.

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 23 vel 2013, 20:57
Postao/la hightech
nginx se u vecini slucajeva koristi za staticki sadrzaj, kao i za reversni proxy ... nginx je zamisljen da radi sta mu napises, dok apache ucitava gomilu modula.... nginx takodje moze sve sto i apache, osim sto se to mora podesiti naknadno ....
statistike pokazuju da sve veci broj servera migrira sa apache-a na nginx ... u tu statistiku spada i podatak da je nginx 50 puta brzi od apachija i brze radi sa zahtevima, zapravo bolje reci "organizovanije"
...mada licno mislim da je nginx bespotreban do neke brojke 100 korisnika u sekundi ... tek tada se zaista mogu videti primetne performanse ovog neobicnog http servera :)
takodje ovaj server se moze koristiti kao forward proxy (link za conf) ... performanse zaista zadivljujuce ... anapnea npr. koristi nginx kao fw i rv proxy .... google takodje a i vecina najjacih sajtova vec uveliko migrira ...

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 23 vel 2013, 21:28
Postao/la drade
Apache moze vrlo dobro odraditi posao za tisuce korisnika (zato i postoje prefork i worker mod rada, potrebno ih je samo dobro podesiti). Takodjer, apache ucitava module koje zelis da ucita (ne ucitava ono sto ne zelis da ucita).

50 puta brzi od apachea je statistika isisana iz prsta (ovisi za sto i na koji nacin), u to sam siguran 73.51%. Cinjenica je da podosta tvrtki prelazi na nginx.

Konkretno (stvar s kojom sam se susretnuo), nginx nema ekvivalent mod_cluster apache modula za balansiranje JBoss instanci i za automatsko stvaranja konteksta aplikacije. Nginx gore navedeno odradjuje kroz upstream modul (i tada mu fale svi featurei koje ima mod_cluster).

Ovaj link koji si postao je konfiguracija za reverse proxy ... ne za forward proxy (tj. samo proxy).

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 23 vel 2013, 22:36
Postao/la hightech
Taj link koj sam postovao sam i napisao ... ja sam razumeo da je to forward proxy a da reversni proxi filtrira upite, balansira ... Pravi pojam proxy-ija je obicno kesiranje stranica , rv proxy i fw proxy su naknadni nacini koliko znam ...
No lagano, lecice sve na svoje :)

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 24 vel 2013, 09:18
Postao/la drade
Ma znam da si napisao, cijenim to ! Samo sam htio razbiti zablude o tome sto je sto.

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 24 vel 2013, 10:57
Postao/la hightech
Ja sam licno takodje imao sumnje, jer previse mistifikuju pojam proxy-ija ... Proxy je nekada kada su konekcije bile spore (dial-up) sluzio da se kesiraju stranice i da upit ne ide do servera vec da se iz kesa povuce, sto bi ubrzavalo citav proces. To je radio proxy jer su konekcije bile jakoooo spore ... e kasnije je dosao fw proxy i rv proxy .....

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 24 vel 2013, 11:32
Postao/la glaskoncILLa
ma zapravo i ne, svi proxyi su iz te perspektive ili forward ili reverse, s tim da je ideja reversa dosla nesto kasnije jer u pocecima interneta nije bili ni potrebe za offloadom servera zbog kolicine contenta i broja korisnika/broja (SSL/TLS) konekcija..

Re: lemp (linux, [e]nginx, mysql, php, perl, python)

Postano: 24 vel 2013, 11:51
Postao/la shrike
Baš ću danas probati nginx jer me apache počinje živcirati, pa vam jvim rezultate