Om du har administrerat en Linux-server tidigare kommer du att känna till den vanliga LAMP (Linux, Apache, MySQL, PHP) stacken. Apache, MySQL och PHP kan emellertid ibland vara resursintensiva och kan inte vara det bästa för din server. I denna handledning kommer vi att ersätta varje del av stapeln, förutom Linux, med ett bättre alternativ - Nginx, MariaDB och HHVM.

Antagande

1. Denna handledning görs på en Ubuntu 14.04-server, men instruktionerna kommer också att fungera för alla Debian-baserade distroer.

2. Denna handledning fokuserar bara på att installera och konfigurera LEMH-stacken. Det rör inte på säkerhetsaspekten på servern.

3. Du måste redan ha SSH-åtkomst till din server (eller fysisk åtkomst till din maskin) för att utföra denna handledning.

Installera Nginx

Nginx är en lätt, men kraftfull, ersättning för Apache. Det är en omvänd proxyserver med öppen källkod, liksom en webbserver med starkt fokus på hög samtidighet, hög prestanda och låg minnesanvändning. Observera att Nginx inte är kompatibel med Apache, så fungerar inte alla Apache-konfigurationer, särskilt de .htaccess-filer som du skapade, i Nginx. Det är också möjligt att köra både Apache och Nginx på samma server, men det kommer att innebära en komplicerad konfiguration som vi inte kommer att täcka här.

Nginx finns i Ubuntu-förvaret, men det är ofta föråldrat. För att få den senaste stabila versionen, lägg till följande PPA till ditt system:

 sudo add-apt-depot ppa: nginx / stable sudo apt-get uppdatering 

Den senaste versionen av Nginx i denna post är 1.6.2. Alternativt kan du, om du vill prova den senaste utvecklingsversionen, använda denna PPA istället:

 sudo add-apt-repository ppa: nginx / utveckling sudo apt-get uppdatering 

Den senaste utvecklingsversionen av detta inlägg är 1.7.8.

För att installera Nginx, kör kommandot:

 sudo apt-get install nginx 

När du har installerat kör följande kommando för att försäkra dig om att den är igång:

 sudo service nginx start 

Därefter, i din webbläsare, gå till url "http://123.4.56.789" (ersätt 123.4.56.789 med din serverns IP-adress), och du bör se följande:

Installera MariaDB

I många år är MySQL standard databasadministrationsservice för många applikationer. Sedan det förvärvades av Oracle började många människor ifrågasätta sin "open-source" -het, och samhället (som inkluderade grundaren av MySQL) bestämde sig för att skapa en gaffel av MySQL och namngav den MariaDB. MariaDB är en ersättning för MySQL, vilket innebär att den är helt kompatibel med MySQL-databaser och kan användas som en total ersättning för MySQL.

Intressant faktum : MySQL grundas av Michael Widenius och är uppkallad efter sin första dotter, My. MariaDBs ledande utvecklare är också Michael Widenius och namnges efter sin andra dotter, Maria.

Om du tidigare har installerat MySQL på din server är det bäst att ta bort MySQL helt innan du installerar MariaDB:

 sudo apt-get remove -purge mysql-server mysql-client mysql-vanliga sudo apt-få autoremove sudo rm -rf / var / lib / mysql sudo apt-få autoclean 

Lägg sedan till PPA för MariaDB:

 sudo apt-get-installera programvaruegenskaper-vanliga sudo apt-key adv -recv-nycklar -keyserver hkp: //keyserver.ubuntu.com: 80 0xcbcb082a1bb943db sudo add-apt-repository 'deb http: //sfo1.mirrors .digitalocean.com / mariadb / repo / 10.0 / ubuntu trusty main "sudo apt-get uppdatering 

Observera att du också kan skapa din egen PPA här och hitta platsen närmast din server.

Installera MariaDB med det här kommandot:

 sudo apt-get install mariadb-server 

Under installationen kommer det att be dig att ange ett lösenord för root-användaren.

Efter installationen kan du starta MariaDB med kommandot:

 sudo service mysql starta 

Installera PHP och HHVM

HHVM är inte ett ersättare för PHP. Det är en öppen källkods virtuell maskin avsedd för att utföra program skrivna i Hack och PHP. HHVM använder en just-in-time (JIT) kompileringsmetod för att uppnå överlägsen prestanda samtidigt som den utvecklingsflexibilitet som PHP tillhandahåller bibehålls.

Innan vi installerar HHVM är det viktigt att först installera PHP i servern. I stället för att installera hela PHP5-paketet, som innehåller en massa Apache-filer, installerar vi bara php5-fpm, som sedan installerar nödvändiga PHP-beroenden. Dessutom behöver vi php5-fpm som en baklucka för HHVM.

 sudo apt-get installera php5-fpm php5-mysql php5-curl 

När du är klar installerar du HHVM med kommandona:

 wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add-echo deb http://dl.hhvm.com/ubuntu trusty main | sudo tee /etc/apt/sources.list.d/hhvm.list sudo apt-få uppdatering sudo apt-get install hhvm 

När HHVM är installerat fortsätt att konfigurera det för Nginx med kommandot:

 sudo /usr/share/hhvm/install_fastcgi.sh 

Slutligen starta om HHVM

 sudo service hhvm omstart 

För att testa om HHVM fungerar, skapa en "phpinfo.php" -fil i Nginx-rotmappen.

 sudo nano /var/www/html/phpinfo.php 

och klistra in följande rad:

Tryck på "Ctrl + o" för att spara och "Ctrl + x" för att avsluta.

I webbläsaren laddar du url: http://123.4.56.789/phpinfo.php (ersätt 123.4.56.789 med din serverns IP-adress). Du borde bara se ordet "HipHop" för att visa att HHVM fungerar.

Konfigurera webbplatser att köra i Nginx och HHVM (med php5-fpm-återgång)

Nu när du har allt inrättat är det dags att skapa en virtuell värd för att köra din webbplats.

Skapa en ny config-fil som innehåller din webbplats detalj:

 sudo nano / etc / nginx / webbplatser tillgängliga / min webbplats 

och klistra in i följande kod:

 server {lyssna 80; lyssna [::]: 80; root / var / www / html; # Lägg till index.php till listan om du använder PHP index index.html index.htm; servernamn mywebsite.com; inkludera hhvm-med-fallback.conf; plats / {# Första försök att betala förfrågan som fil, sedan # som katalog, och sedan tillbaka för att visa en 404. try_files $ uri $ uri / = 404; } # skicka PHP-skript till FastCGI-servern lyssnar på 127.0.0.1:9000 # location @ fallback {# include snippets / fastcgi-php.conf; # # # Med php5-fpm: fastcgi_pass unix: /var/run/php5-fpm.sock; fastcgi_index index.php; inkluderar fastcgi_params; } # neka åtkomst till .htaccess-filer, om Apaches dokumentrots # överensstämmer med nginxs en # plats ~ /\.ht {neka alla; }} 

Du kan ändra server_name att peka på din egen domän och platsen för rotmappen där du vill att filerna ska serveras.

HHVM har det här felet att krascha ibland utan att starta om sig själv; Detta kommer att orsaka att webbplatsen misslyckas med ett 500-fel. I det här fallet kommer vi att skapa ett återgångssystem där PHP5-FPM tar över när HHVM misslyckas. Lägg märke till location @fallback blocket i config-fragmentet ovan? Det är återkallelsen när HHVM misslyckas. För att slutföra ekvationen behöver vi fortfarande skapa "hhvm-with-fallback.conf" -filen som är en modifierad version av filen "hhvm.conf".

 sudo nano /etc/nginx/hhvm-with-fallback.conf 

Klistra in följande kod:

 plats ~ \. (hh | php) $ {proxy_intercept_errors on; error_page 500 501 502 503 = @fallback; fastcgi_keep_conn på; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; inkluderar fastcgi_params; } 

Spara och lämna filen.

Slutligen, testa Nginx-inställningarna med

 sudo nginx -t 

och om allt är bra, starta om Nginx.

 sudo service nginx omstart 

Det är allt. Du har slutfört LEMH stack setup på din Linux-server.