Configurant un entorn FEMP (FreeBSD 11.1, MySQL, PHP i Nginx) a una Raspberry Pi 2

Configurant un entorn FEMP (FreeBSD 11.1, MySQL, PHP i Nginx) a una Raspberry Pi 2

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:

phpinfo freebsd raspberry

Espere que t'agrade aquest article i que el trobes útil per als teus experiments amb la Raspberry Pi.