NGINX
Brza vim lekcija
PHP-FPM
MariaDB
Ovaj vodič će vam pokazati kako ispravno instalirati i konfigurirati "alternativni" LAMP stog na Debian 8 koristeći NGINX, PHP Fast Process Manager i MariaDB.
NGINX
NGINX je "prvo obrnuti proxy, a drugi web poslužitelj". To je popularna i rastuća alternativa Apacheu, koja nudi veću fleksibilnost i bolje performanse u mnogim slučajevima. U ovom vodiču koristit ćemo ga kao naš web poslužitelj.
Pokrenite svoj omiljeni SSH klijent i prijavite se na svoj poslužitelj. Za korisnike Windowsa, "PuTTY" je besplatan i lagan SSH klijent. Korisnici Linuxa i Maca mogu koristiti terminal koji je standardno uključen uz njihov operativni sustav. Za ovaj vodič, pretpostavit ćemo da ste prijavljeni na svoj poslužitelj kao "root" korisnik.
Za početak, samo provjerimo je li sve ažurirano. Upišite sljedeće da biste provjerili ima li i zatim instalirali ažuriranja.
apt-get update && apt-get upgrade
Mi ćemo uređivati naše konfiguracijske datoteke u vim. Vim nije instaliran prema zadanim postavkama, pa hajde da ga instaliramo!
apt-get install vim
Sada je vrijeme da instalirate NGINX. Htjet ćemo instalirati najnoviju verziju NGINX-a iz službenog NGINX Debian repozitorija.
wget http://nginx.org/keys/nginx_signing.key
apt-key add nginx_signing.key
echo 'deb http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
echo 'deb-src http://nginx.org/packages/debian/ jessie nginx' >> /etc/apt/sources.list
apt-get update && apt-get install nginx
Sada moramo malo podesiti NGINX konfiguraciju. Idite do direktorija konfiguracije.
cd /etc/nginx
Brza vim lekcija
Koristite tipke sa strelicama za kretanje po tekstualnom dokumentu. Za početak uređivanja pritisnite gumb "umetni" na tipkovnici. Ako vaša tipkovnica nema gumb za umetanje, pritisnite tipku "i". Pri dnu vim-a primijetit ćete da sada piše "INSERT". Način umetanja omogućit će vam brisanje putem backspacea ili umetanje novih znakova upisivanjem.
Otvorimo naše nginx.confi prošetamo okolo:
vi nginx.conf
Promijenimo zadanog korisnika, provjerimo broj radnih procesa i isključimo zapisnik pristupa.
Smjernice "user" i "worker_processes" su pri vrhu. Isprobajte vrijednosti u nastavku:
Note that you'll want to set "worker_processes" to the number of CPU cores available on your server. In this example, we have 1, which is the NGINX default.
user www-data;
worker_processes 1;
Također ćemo htjeti onemogućiti zapisnik pristupa, radi poboljšanja I/O performansi. Krećite se prema dolje pomoću tipki sa strelicama dok ne pronađete "access_log". Izmijenite ga na sljedeće:
access_log off;
I na kraju, postavit ćemo "client_max_body_size" tako da odgovara nekim promjenama u PHP-u kasnije. Sačuvajmo nevolje i učinimo to sada. Dodajte odmah ispod "access_log":
client_max_body_size 12m;
Kada završite s uređivanjem, pritisnite "Esc" na tipkovnici. Vim više neće reći "INSERT" prema dnu datoteke.
Da biste spremili naše promjene i zatvorili vim, pritisnite sljedeći slijed tipki:
SHIFT :(colon)
wq
Press "Enter"
Gornji vim kung fu će zapisati vaše promjene na disk i izaći iz vim-a, vraćajući vas natrag u bash shell.
Sada moramo napraviti konfiguraciju specifičnu za web lokaciju za naš primjer! Također ćemo izbrisati druge primjere konfiguracija. Pokušajte sljedeće:
cd conf.d
rm example_ssl.conf default.conf
vi my_site.conf
Napravit ćemo kratko i jednostavno www.confna temelju zadane NGINX konfiguracije, ali s nekoliko podešavanja. Pritisnite insert i možete kopirati/zalijepiti donji primjer.
Don't forget to edit the "root" directive to point to the root directory of your website, and "server_name" to correspond to your domain.
server {
listen 80;
root /path/to/your/website;
index index.php index.html index.htm;
server_name mydomainname.com www.mydomainname.com;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_pass unix:/var/run/php5-fpm.sock;
}
}
Sada smo gotovi s odjeljkom o NGINX konfiguraciji ovog vodiča. Ponovo ćemo pokrenuti NGINX za malo, odmah nakon što instaliramo PHP.
PHP-FPM
PHP-FPM je PHP upravitelj brzih procesa. To je potrebno kada koristite NGINX, jer za razliku od Apachea, NGINX ne pokreće PHP kao modul. To je učinjeno kako bi se smanjio memorijski otisak NGINX-a. Sjećate li se onog dijela o tome da je NGINX prije svega obrnuti proxy? Evo gdje to dolazi u igru; PHP zahtjevi poslani NGINX-u se šalju PHP-FPM-u kako bi obavio težak posao.
Idemo instalirati PHP-FPM.
apt-get install php5-fpm php5-mysqlnd
Note that depending on what your PHP scripts require, you may have to install other PHP modules not included by default. Popular ones are php5-gd and php5-mcrypt. You can install these with the following command.
apt-get install php5-module_name_here
Sada kada smo instalirali PHP-FPM, htjet ćemo napraviti nekoliko brzih izmjena kako bismo poboljšali sigurnost i funkcionalnost.
cd /etc/php5/fpm
vi php.ini
Vrijeme je za još jednu brzu vim lekciju! php.iniDatoteka je apsolutno ogroman. Traženje nekoliko ključnih vrijednosti trajat će cijeli dan. Pa pošto znamo što tražimo, potražit ćemo. Upišite sljedeće:
/upload_max_filesize
Ovo je prema zadanim postavkama postavljeno na 2 megabajta. Ako želite dopustiti korisnicima da učitavaju datoteke u vaše PHP aplikacije veće od 2 megabajta, morat ćete to promijeniti. 10M je vjerojatno sigurna oklada za sada, ali veće vrijednosti su također prihvatljive. Ova postavka će se razlikovati od konfiguracije. Radi tutoriala:
upload_max_filesize = 10M
Još jedan očigledan sigurnosni propust. Pomaknite se još malo prema dolje ili pretražite. Moramo okrenuti "allow_url_fopen" na "Off". To će spriječiti PHP da pokreće PHP datoteke koje se nalaze na DALJINU, inače poznate kao RFI (Remote File Inclusion). Mnogi serveri su hakirani na ovaj način.
allow_url_fopen = Off
A budući da smo promijenili "upload_max_filesize", sada moramo promijeniti "post_max_size". Ova bi vrijednost trebala biti malo veća od "upload_max_filesize", jer moramo uzeti u obzir dodatne troškove povezane s našim zahtjevima koje obrađuje PHP.
Pretražimo još jednom s "/post_max_size".
post_max_size = 12M
Note that you'll have to go back to your NGINX configuration and edit "client_max_body_size" if you decide to go with larger values than these examples for your PHP file sizes.
To je otprilike to za sada. Uvjerite se da niste u načinu uređivanja pritiskom na "Esc". Spremite i izađite iz vim.
SHIFT :(colon)
wq
Press 'Enter'
Postavljanje PHP-FPM-a je završeno.
MariaDB
Čak iu svijetu koji se kontinuirano kreće prema NoSQL-u ili MongoDB-u, nekima od nas je još lakše držati se MySQL-a. To se posebno odnosi na mnoge web aplikacije. Srećom, sada postoji niz "dolaznih" zamjena za Oracle MySQL. Debian 8 sada uključuje uvijek popularni MariaDB. MariaDB je fork Oracle MySQL baziran na verziji 5.5. MariaDB, za sve namjere i svrhe, ovo naziva MariaDB 10. Smatra se POTPUNOM zamjenom za Oracle MySQL. Zamislite to kao MySQL u srcu, bez Oracle brenda i nekih novih značajki.
apt-get install mariadb-server
VAŽNO: Apsolutno, pozitivno, morate odabrati jaku root lozinku za MariaDB. Spremite ga negdje na sigurno. Morat ćete ga unijeti dvaput tijekom instalacije MariaDB-a.
Popravimo malo MariaDB konfiguraciju. Onemogućit ćemo MariaDB slušanje putem mrežnog sučelja. Umjesto toga, kao i kod ranije PHP-FPM-a, zadržat ćemo se samo na UNIX utičnici. Većina PHP aplikacija trebala bi podržavati povezivanje s poslužiteljem baze podataka putem UNIX utičnice umjesto lokalnog sučelja povratne petlje.
cd /etc/mysql
vi my.cnf
Potražite "bind-address = 127.0.0.1". Komentirajte taj redak. Iznad ili ispod nje dodajte "skip-networking".
#bind-address = 127.0.0.1
skip-networking
Završili smo s MariaDB! Na kraju ćete možda htjeti prilagoditi svoju MariaDB konfiguraciju ovisno o tome hoćete li prvenstveno koristiti MyISAM ili InnoDB mehanizme za pohranu, ali i o broju CPU jezgri i RAM-a koji su dostupni vašem poslužitelju. Zadane postavke će nas u međuvremenu pokrenuti.
Ponovo pokrenimo svaku od usluga za koje su konfiguracijske datoteke izmijenjene u ovom vodiču.
systemctl restart nginx.service
systemctl restart php5-fpm.service
systemctl restart mysql.service
To je to – svi smo gotovi. U ovom trenutku imate potpuno funkcionalan LNMP (LEMP) poslužitelj na mreži!
Ovaj vodič trebao je poslužiti kao opće pravilo za početak rada s gore navedenim uslugama uz minimalno podešavanje. Za dodatne informacije pročitajte dokumentaciju za gore navedene pakete. Iako bi ovaj primjer postavljanja trebao dobro funkcionirati "iz kutije", prilagodbe se mogu, a najvjerojatnije će i trebati, učiniti kako bi bolje odgovarale vašim potrebama.
Preporučena područja za istraživanje:
- Korištenje i modificiranje NGINX-ove kontrole predmemorije.
- PHP-FPM "statične", "dinamičke" ili "na zahtjev" postavke upravitelja zadataka.
- Ugađanje performansi MariaDB-a kako biste maksimalno iskoristili svoj poslužitelj baze podataka.