En aquest xicotet article, vaig a explicar ràpidament, a la velocitat de la llum, com muntar FreeBSD 11.1, MySQL, PHP i Nginx (FEMP) a una Raspberry Pi 2 i tenir un servidor domèstic de qualitat i segur. A la meua pàgina ja he parlat moltes vegades de com instal·lar FreeBSD o com instal·lar-ho a la Raspberry Pi, 1 o 2, aleshores anem a partir des d'aquest punt, i continuarem amb la resta de programari: el servidor web lleuger Nginx, la base de dades MySQL, el PHP, i la configuració de tot per a que ens funcione ràpidament.
Comencem instal·lant el servidor web lleuger Nginx amb:
pkg install nginx
I per a que que s'inicie quan arranquem el sistema operatiu afegirem a rc.conf el següent:
nginx_enable="YES"
Iniciem Nginx per primera vegada amb:
root@rpi2:/home/joan # /usr/local/etc/rc.d/nginx start
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
Si volem reiniciar-lo, podem fer:
/usr/local/etc/rc.d/nginx restart|start|stop
A l'hora de configurar-lo, si volem trobar els errors, farem:
nginx -c /usr/local/etc/nginx/nginx.conf -t
Instal·lem la base de dades i PHP amb:
pkg install mysql56-server mysql56-client php56 php56-curl php56-zip php56-xml php56-sqlite3 php56-session php56-pdo_mysql php56-pdo_sqlite php56-mysql php56-mysqli php56-ftp php56-gd php56-json php56-ldap
Afegim a rc.conf el següent:
mysql_enable="YES"
nginx_enable="YES"
php_fpm_enable="YES"
CONFIGUREM EL PHP
Editem el fitxer /usr/local/etc/php-fpm.conf i on diu listen = 127.0.0.1:9000 ficarem: listen = /var/run/php-fpm.sock
I on apareixen aquestes línies comentades:
;listen.owner = www
;listen.group = www
;listen.mode = 0660
Les descomentarem:
listen.owner = www
listen.group = www
listen.mode = 0660
Ara anem a crear un fitxer php.ini. Ens aprofitarem del fitxer de demostració anomenat php.ini-production en el mateix path on es trobem:
cp php.ini-production php.ini
Editem aquest fitxer php.ini i descomentem cig.fix_pathinfo per a ficar-ho a 0.
cgi.fix_pathinfo=0
I ja tenim el PHP instal·lat i configurat. Ara iniciem el servei amb:
service php-fpm start
CONFIGUREM MySQL
Iniciem el servei de MySQL amb:
service mysql-server start
La primera vegada ens crearà unes taules i uns fitxers que necessita MySQL. Ara necessitem fer una instal·lació segura:
mysql_secure_installation
Ara MySQL ens preguntarà vàries opcions. Al començament, no fiquem password de root perquè encara no tenim, i a continuació li donem a "Y" i seguim els passos. Li ficarem a continuació una bona contrasenya a l'usuari root, li direm que no volem que ningú es connecte anònimament, deshabilitem el MySQL remotament i li diem que esborre la base de dades d'exemple.
Ara reiniciem el servei MySQL per a que agafe aquesta configuració:
service mysql-server restart
CONFIGUREM NGINX
Ara anem a configurar el servidor web Nginx. Editarem el fitxer de configuració /usr/local/etc/nginx/nginx.conf
Descomentem la primera línea i li diem:
user www;
Ara li diem el worker_processes amb el número de processadors que tenim, que podem saber-ho amb sysctl hw.ncpu. A la Raspberry tenim 4, aleshores deixarem:
worker_processes 4;
Descomentem també la línea dels logs d'error, i ho deixem al nivell informatiu afegint "info" al final:
error_log /var/log/nginx/error.log info;
Al block 'http', descomentem també els logs d'accés. He comentat la línea que hi havia i he afegit:
access_log /var/log/nginx/access.log;
En el block 'server' canviarem el server_name pel nom del domini que farem servir. En el meu cas:
server {
listen 80;
server_name nuvolet.benicass.im;
Deixarem les directives 'root' i 'index' fora del "location /" de la següent manera:
root /usr/local/www/nuvolet;
index index.php index.html index.htm;
I dins del "location /" deixarem el try_files:
location / {
try_files $uri $uri/ =404;
}
I ara deixem la directiva "location ~ \.php$" per al PHP de la següent manera:
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
Preparem el directori i fitxers dels logs:
mkdir -p /var/log/nginx
touch /var/log/nginx/access.log
touch /var/log/nginx/error.log
SISTEMA EN PRODUCCIÓ PERFECTAMENT CONFIGURAT
Ara testejarem la configuració del nostre Nginx amb:
# nginx -t
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
I finalment reiniciem el servei amb:
service nginx restart
A l'arrel, podem crear un fitxer info.php amb: , i si tot ho tenim ben configurat veurem la imatge:
Espere que t'agrade aquest article i que el trobes útil per als teus experiments amb la Raspberry Pi.