Server web Debian
Debian è un'ottima scelta per la configurazione di server web Linux. Secondo le statistiche attuali, è il sistema operativo server più popolare seguito da vicino da centos.
Sono un grande fan dei comandi apt/dpkg/gdebi, che semplificano l'installazione e l'aggiornamento dei pacchetti sul sistema.
Per configurare un server web php completo e funzionale, è necessario installare un paio di cose extra che includono un server web e un database. In questo post configureremo nginx, php, php-fpm, apc e MariaDB.
Nginx è un moderno web server, progettato per gestire grandi quantità di traffico utilizzando la minor quantità di risorse in termini di RAM e CPU.
Prima di nginx il server web tradizionale utilizzato su Internet era Apache. Tuttavia, con l'aumento della popolazione di Internet, è cresciuta la necessità di un server web più veloce ed efficiente.
Nginx contro Apache
Apache in base alla progettazione è molto ingombrante e ha tonnellate di funzionalità, la maggior parte delle quali non sono necessarie per i siti Web tipici. Probabilmente è stato progettato per soddisfare le esigenze di tutti, ma questo ha finito per renderlo un server web grande e pesante con funzionalità per lo più inutilizzate.
Nginx d'altra parte è un server web molto elegante e veloce che si concentra interamente su velocità, scalabilità ed efficienza.
I dati tecnici su come farlo sono ampi e oltre lo scopo di questo post. Forse potremmo dare un'occhiata più tardi. Solo per tua informazione questo sito web funziona su nginx.
Ora, senza ulteriori discussioni, mettiamoci al lavoro.
1. Installa Nginx su Debian
Il pacchetto nginx è proprio lì nei repository debian, quindi non devi cercare da nessun'altra parte. Avvia apt-get e installalo.
# apt-get install nginx
Ora avvia il server nginx.
# servizio nginx startStarting nginx:nginx.
Ora accedi al server nginx dal browser aprendo l'URL
http://localhost/
e dovresti ricevere il messaggio di benvenuto
Benvenuto su nginx!
Note importanti
Ci sono alcune cose che dovresti memorizzare per gestire meglio il tuo server nginx. I file di configurazione di nginx si trovano nella seguente posizione
/etc/nginx/
[email protected]:/etc/nginx# lsconf.d koi-win naxsi.rules scgi_params uwsgi_paramsfastcgi_params mime.types nginx.conf siti disponibili win-utfkoi-utf naxsi_core.rules siti proxy_params abilitati
Non modificheremo direttamente il file nginx.conf. Invece creiamo un file di configurazione separato per ogni vhost/sito e lo salviamo nelle seguenti directory.
/etc/nginx/sites-available/etc/nginx/sites-enabled
Questo è simile ad apache. La directory sites-enabled contiene le configurazioni per i vhost che devono essere abilitati. Contiene collegamenti simbolici ai file di configurazione corrispondenti nella directory dei siti disponibili.
Configura un host virtuale
Ora che abbiamo installato nginx, è il momento di configurare un host virtuale. Questo è ciò che faresti su un vero server web per configurare il tuo sito.
All'interno di /etc/nginx/sites-available vedresti un file chiamato default. È un file modello per creare i propri file di configurazione. Copialo e assegnagli un nome sul tuo sito.
# cp default [email protected]:/etc/nginx/sites-available# lsbinarytides.com default
Scegliamo di nominare i file di configurazione con il nome del sito, in modo che sia più facile da ricordare e mantenere.
Ora apri binarytides.com e modifica le cose secondo le tue necessità.
Vedresti un server blocco simile a questo
server { #ascolta 80; ## ascolta ipv4; questa riga è predefinita e implica #listen [::]:80 default_server ipv6only=on; ## ascolta la radice ipv6 /usr/share/nginx/www; indice indice.html indice.htm; # Rendi il sito accessibile da http://localhost/ server_name localhost;
La prima cosa da configurare qui è il nome_server. Assegna un nome al tuo sito. Ad esempio
nome_server binarytides.comornome_server binarytides.com www.binarytides.com
Quando qualcuno apre binarytides.com nel suo browser, l'intestazione http contiene questo nome host che nginx raccoglierebbe e cercherà un blocco di server corrispondente. Quando viene trovato un blocco server corrispondente, utilizzerà la configurazione di quel particolare blocco server.
Un'altra cosa da configurare è la directory principale web per questo sito/vhost. Tieni presente che per impostazione predefinita è /usr/share/nginx/www che potresti voler cambiare in qualcos'altro.
La convenzione generale consiste nell'avere una directory separata per ogni vhost. Ad esempio
/usr/share/nginx/www/binarytides.com//usr/share/nginx/www/google.com/
Quindi crea una directory appropriata e punta l'impostazione radice nel file di configurazione nella directory.
...root /usr/share/nginx/www/binarytides.com;...
Dopo aver apportato queste modifiche, salva il file di configurazione e crea un collegamento simbolico alla directory /etc/nginx/sites-enabled.
[email protected]:/etc/nginx/sites-available# lsbinarytides.com [email protected]:/etc/nginx/sites-available# cd [email protected]:/etc/nginx# cd sites-enabled/[email protected]:/etc/nginx/sites-enabled# ln -s ../sites-available/[email protected]:/etc/nginx/sites-enabled# lsbinarytides.com [email protected]:/etc/nginx/sites-enabled#
Ora prova la tua nuova configurazione
# nginx -tnginx:[avviso] nome del server in conflitto "localhost" su 0.0.0.0:80, ignorenginx:la sintassi del file di configurazione /etc/nginx/nginx.conf è oknginx:file di configurazione /etc/nginx/nginx. conf test è riuscito
L'ultima riga dell'output deve dire riuscita, altrimenti verrebbe visualizzato un errore. Potrebbe mostrare alcuni avvisi che possono essere corretti in seguito.
Infine riavvia nginx per rendere effettiva la nuova configurazione
# servizio nginx restartRestarting nginx:nginx:[warn] nome del server in conflitto "localhost" su 0.0.0.0:80, [email protected]:/etc/nginx/sites-enabled#
Quindi la nuova configurazione è entrata in vigore. Ora crea un nuovo file index.html nella nuova radice web di questo host virtuale e aprilo dal browser e dovrebbe funzionare.
2. Installa php e php-fpm
La prossima cosa da installare è l'interprete php e php-fpm. Php-FPM è un gestore di processi fastcgi dedicato per php che può interfacciarsi o connettersi con qualsiasi server web compatibile e gestire i processi php per elaborare le richieste php.
Nginx <==comunica ==> Php-FPM <==gestisce ==> processo figlio php
Installa prima i pacchetti necessari.
# apt-get install php5 php5-fpm
Installerà automaticamente le dipendenze necessarie. Puoi installare il pacchetto php5-cli anche se hai bisogno del comando php per eseguire gli script php.
Php-fpm viene eseguito come un server separato e nginx comunica con esso tramite un socket. Quindi l'esecuzione di php è totalmente al di fuori del server. Inoltre, poiché fpm mantiene persistente il processo php, supporta completamente APC.
Ora individua i file di configurazione di php fpm. I file si trovano in
/etc/php5/fpm/
Un pool è un insieme di processi php in esecuzione con lo stesso utente/gruppo. Quindi, se vuoi che i file php di ciascun sito vengano eseguiti con un'autorizzazione utente separata, devi creare pool separati di fpm. Per semplicità mostriamo solo un singolo pool qui.
I file di configurazione del pool si trovano all'interno della directory pool.d. Naviga in
[email protected]:/etc/php5/fpm/pool.d# lswww.conf
Apri il file www.conf che è di nuovo un modello da utilizzare e crea file di configurazione separati per ogni pool.
Sembra qualcosa del genere
; Avvia un nuovo pool chiamato 'www'.; la variabile $pool può essere utilizzata in qualsiasi direttiva e sarà sostituita da; nome della piscina ("www" qui)[www]; Per prefisso del pool; Si applica solo alle seguenti direttive:; - 'slowlog'; - 'ascolta' (unixsocket); - 'chroot'; - 'chdir'; - 'php_values'; - 'php_admin_values'; Quando non è impostato, si applica invece il prefisso globale (o /usr).; Nota:questa direttiva può anche essere relativa al prefisso globale.; Valore predefinito:nessuno;prefisso =/percorso/a/pool/$pool; Utente/gruppo di processi Unix; Nota:l'utente è obbligatorio. Se il gruppo non è impostato, il gruppo dell'utente predefinito; verrà utilizzato.utente =www-datagroup =www-data; L'indirizzo su cui accettare le richieste FastCGI.; Le sintassi valide sono:; 'ip.add.re.ss:port' - per ascoltare su un socket TCP un indirizzo specifico; un porto specifico;; 'port' - per ascoltare su un socket TCP tutti gli indirizzi su a; porto specifico;; '/percorso/a/unix/socket' - per ascoltare su un socket unix.; Nota:questo valore è obbligatorio.listen =/var/run/php5-fpm.sock; Imposta listen(2) backlog.; Valore predefinito:128 (-1 su FreeBSD e OpenBSD);listen.backlog =128
La cosa sopra è composta principalmente da commenti e le 4 righe più importanti sono
Collega fpm con nginx
Non cambieremo molto qui. Basta annotare il percorso della presa. Dobbiamo inserirlo nel file di configurazione di nginx. Torna alla configurazione di nginx e aprila di nuovo.
Contiene una sezione per la configurazione di php fpm che assomiglia a questa
# passa gli script PHP al server FastCGI in ascolto su 127.0.0.1:9000##location ~ \.php$ {# fastcgi_split_path_info ^(.+\.php)(/.+)$;# # NOTA:dovresti avere "cgi.fix_pathinfo =0;" in php.ini## # Solo con php5-cgi:# fastcgi_pass 127.0.0.1:9000;# # Con php5-fpm:# fastcgi_pass unix:/var/run/php5-fpm.sock;# fastcgi_index index.php;# includi fastcgi_params;#}
Decommentalo e fallo sembrare così
posizione ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$;# # NOTA:dovresti avere "cgi.fix_pathinfo =0;" in php.ini# # Solo con php5-cgi:# fastcgi_pass 127.0.0.1:9000; # Con php5-fpm:fastcgi_pass unix:/var/run/php5-fpm.sock; indice_fastcgi index.php; includi fastcgi_params;}
Verifica PHP
Ora metti un file nella web root con la chiamata phpinfo.
<?phpphpinfo();
E quindi apri il file nel browser e il blocco delle informazioni php dovrebbe apparire, dicendo che php è configurato e funziona correttamente.
Un'altra cosa che puoi fare è aggiungere index.php all'elenco dei file di indice. In modo che quando si accede a una directory, se non viene specificato alcun file, viene chiamato index.php.
root /usr/share/nginx/www/binarytides.com;index index.html index.htm index.php;
Configura apc - cache php alternativa
APC è un ottimo modo per velocizzare l'esecuzione di script php. Apc compila il codice php e mantiene l'opcode in memoria e lo utilizza la prossima volta senza compilare nuovamente lo stesso codice php dal file. Questo accelera drasticamente l'esecuzione. Oltre alla cache del codice operativo, apc offre anche una cache utente per archiviare in memoria i dati grezzi per l'applicazione php.
Php a partire dalla versione 5.5 ha una nuova funzionalità chiamata OPcache che fa la stessa cosa di apc opcode cache, deprecando così apc.
Configurare apc è molto semplice e veloce. Basta installare il pacchetto apc per php
# apt-get install php-apc
Quindi riavvia php fpm
# riavvio del servizio php5-fpm
Ora controlla di nuovo la pagina phpinfo e dovrebbe avere anche i dettagli apc. Il file di configurazione apc si trova in
/etc/php5/fpm/conf.d/20-apc.ini
La configurazione può essere leggermente modificata per prestazioni ottimali per le tue esigenze. Ecco il tipo di configurazione che uso
extension=apc.so apc.enabled=1apc.shm_size=128Mapc.ttl=3600apc.user_ttl=7200apc.gc_ttl=3600apc.max_file_size=1M
Controllare l'elenco dei parametri di configurazione di apc per ulteriori informazioni.
3. Installa MariaDB su Debian
Ora arriva l'ultimo e ultimo componente dello stack LEMP. Questo è il database MariaDB e non mysql. Bene, ormai dovresti sapere che MySQL è nelle mani di Oracle e non più un'appartenenza alla comunità. Quindi i principali corpi hanno iniziato a passare a mariadb. La cosa buona è che mariadb è binario compatibile con mysql con molte funzionalità aggiuntive. Quindi, se stai già utilizzando mysql per le tue applicazioni php, passare a mariadb sarebbe assolutamente senza problemi.
MariaDB non è presente in debian repository. Per ottenere i repository visita la seguente pagina
https://downloads.mariadb.org/mariadb/repositories/Seleziona Debian come distribuzione, Wheezy come versione e versione 10.0 di mariadb. Quindi seleziona uno specchio sul lato destro. Ora scorri verso il basso fino alla fine della pagina per trovare i dettagli del repository.
Ecco i comandi che ho ricevuto
sudo apt-get install python-software-propertiessudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xcbcb082a1bb943dbsudo add-apt-repository 'deb http://mirrors.fe.up.pt/ pub/mariadb/repo/10.0/debian wheezy main'
Ora aggiorna la cache apt e installa i pacchetti mariadb
sudo apt-get aggiornamentiudo apt-get install mariadb-server mariadb-client
Durante l'installazione mariadb chiederebbe la password dell'utente root. Inserisci la password e assicurati di non dimenticarla.
Al termine dell'installazione, controlla la tua versione di mariadb
# mysql -Vmysql Ver 15.1 Distrib 10.0.3-MariaDB, per debian-linux-gnu (x86_64) usando readline 5.1
Nota che il nome del comando è lo stesso di mysql. Ma il nome mariadb è presente nelle informazioni sulla versione.
Il server web è pronto
Quindi ora il server web LEMP è pronto per l'uso. Potresti voler installare un paio di extra extra come phpmyadmin per gestire meglio il tuo database. Phpmyadmin è presente nel repository debian, quindi installalo direttamente da lì.
Hai qualche domanda? Sentiti libero di commentare qui sotto.