Drupal 7 a la Raspberry Pi 2 sota FreeBSD + Nginx + PHP-FPM

Hacker

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP
Una de les coses que tenia pendents des d'un començament quan vaig comprar la Raspberry Pi 2 era provar aplicacions webs amb el gestor de continguts Drupal, i això tocava aquesta vesprada. En aquest mini article vaig a explicar els passos a seguir per a tenir una Drupal Pi ;-) per dir-ho d'alguna manera.

El primer pas és anar a la nevera i obrir una cervesa, gran i freda.

Segon pas, per a instal·lar aquest CMS necessitarem tenir instal·lat PHP-FPM i unes quants extensions, com aquestes: php55-session, php55-hash, php55-json, php55-mysql, php55-mysqli i altres.

Per exemple, per a compilar php55-session i php55-hash farem:


cd /usr/ports/www/php55-session
make install clean

cd /usr/ports/www/php55-hash
make install clean

I una vegada instal·lem extensions de PHP5, hem de reiniciar sempre el dimoni PHP-FPM amb:


# service php-fpm restart
Stopping php_fpm.
Waiting for PIDS: 23594.
Starting php_fpm.
#

Tercer pas, configurem un domini o subdomini amb un virtual host al Nginx. Jo faré servir un subdomini anomenat drupal.benicass.im que apuntarà a la IP pública d'on tinc la Raspberry Pi 2 connectada a la xarxa. El domini BENICASS.IM és un domini que vaig registrar a l'Illa de Man (Island Of Man) perquè em semblava divertit.

Aquest és el contingut del virtual host de drupal.benicass.im (una recomanació que he vist a la web oficial del projecte Nginx.com i nomès he tingut que adaptar-la una miqueta per a mi:


server {
server_name drupal.benicass.im;
access_log /var/log/nginx/localhost.access.log;
error_log /var/log/nginx/error.log ;
server_name_in_redirect off;
root /var/www/drupal;
index index.php;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

# Very rarely should these ever be accessed outside of your lan
location ~* \.(txt|log)$ {
allow 192.168.0.0/16;
deny all;
}

location ~ \..*/.*\.php$ {
return 403;
}

location ~ ^/sites/.*/private/ {
return 403;
}

# Block access to "hidden" files and directories whose names begin with a
# period. This includes directories used by version control systems such
# as Subversion or Git to store control files.
location ~ (^|/)\. {
return 403;
}
location / {
# try_files $uri @rewrite; # For Drupal try_files $uri /index.php?$query_string; # For Drupal >= 7
}

location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}

location ~ \.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_intercept_errors on;
#drupal recomendation fastcgi_pass unix:/tmp/phpfpm.sock;
try_files $uri =404;
#nuvolet fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
#nuvolet fastcgi_index index.php;
}
# Fighting with Styles? This little gem is amazing.
# location ~ ^/sites/.*/files/imagecache/ { # For Drupal location ~ ^/sites/.*/files/styles/ { # For Drpal >= 7

try_files $uri @rewrite;
}

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}

Reiniciem Nginx i comprovem que, al menys, funcionen un php com phpinfo();, per exemple:


service nginx restart

Si tot ha anat bé, ja tens el teu virtual host d'NGINX configurat i preparat per a executar PHP, aleshores pots continuar.

Quart pas, crearem una base de dades MySQL, crearem un usuari i li donarem permissos:

root@venus:/var/www/benicassim # mysqladmin create drupal_db -u root -p
Enter password:
root@venus:/var/www/benicassim #

Accedim com el super administrador i creem 'benicassim' amb contrasenya 'eoeo1234':


root@venus:/var/www/benicassim # mysql -u root -p
Enter password:
mysql> CREATE USER usuari_drupal@localhost IDENTIFIED BY '1234';
mysql> GRANT ALL PRIVILEGES ON drupal_db.* TO usuari_drupal@localhost;
mysql> FLUSH PRIVILEGES;

Quint pas, descarreguem i despleguem el nostre CMS Drupal a /var/www/drupal

Li donem permissos al directori:


chown -R www:www drupal/

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

Veiem que encara ens dóna alguns errors perquè ens falten extensions de PHP5 al nostre sistema FreeBSD, aleshores les busquem i les instal·larem:


root@nuvolet:/var/www # pkg info | grep dom
root@nuvolet:/var/www # pkg search php55 | grep dom
php55-dom-5.5.30 The dom shared extension for php
root@nuvolet:/var/www # pkg search php55 | grep filter
php55-filter-5.5.30 The filter shared extension for php
root@nuvolet:/var/www # pkg search php55 | grep gd
php55-gd-5.5.30 The gd shared extension for php
root@nuvolet:/var/www # pkg search php55 | grep simplexml
php55-simplexml-5.5.30 The simplexml shared extension for php
root@nuvolet:/var/www #

Tornem a reiniciar el dimoni PHP-FPM amb:


# service php-fpm restart
Stopping php_fpm.
Waiting for PIDS: 23594.
Starting php_fpm.
#

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

Drupal a la Raspberry Pi 2 amb FreeBSD + Nginx + PHP

A mode informatiu, aquestes són les meues extensions PHP5:


root@nuvolet:/var/www # pkg info | grep php55
mod_php55-5.5.30 PHP Scripting Language
php55-5.5.30 PHP Scripting Language
php55-curl-5.5.30 The curl shared extension for php
php55-dom-5.5.30 The dom shared extension for php
php55-filter-5.5.30 The filter shared extension for php
php55-gd-5.5.30 The gd shared extension for php
php55-hash-5.5.30 The hash shared extension for php
php55-json-5.5.30 The json shared extension for php
php55-mysql-5.5.30 The mysql shared extension for php
php55-mysqli-5.5.30 The mysqli shared extension for php
php55-openssl-5.5.30 The openssl shared extension for php
php55-pdo-5.5.30 The pdo shared extension for php
php55-pdo_mysql-5.5.30 The pdo_mysql shared extension for php
php55-session-5.5.30 The session shared extension for php
php55-simplexml-5.5.30 The simplexml shared extension for php
php55-xml-5.5.30 The xml shared extension for php
php55-xmlrpc-5.5.30 The xmlrpc shared extension for php
php55-zip-5.5.30 The zip shared extension for php
php55-zlib-5.5.30 The zlib shared extension for php
root@nuvolet:/var/www #

RESUM ULTRARÀPID DELS PASSOS QUE HE SEGUIT:

1 - obrim una cervesa, gran i freda.
2 - instal·lem PHP-FPM i les extensions que calguen.
3 - Configurem el domini/subdomini i el lloc web amb Nginx
4 - MySQL rules.
5 - Baixem Drupal e instal·lem com sempre.

Si aquest article t'ha agradat, comparteix-lo per les xarxes socials. Si li treus profit, convida'm a una cervesa :-) i si et motiva, fes tu també els teus articles i experiments amb el programari lliure. La comunitat et necessita!

Doncs bé això és tot, espere que trobes útil aquest article i que et motive a compartir els teus trucs, els teus coneixements i els teus experiments amb el Programari Lliure. Pensa-ho, va, que la Comunitat del Programari Lliure va creixent gràcies a la documentació, el disseny, la formació o la programació, sigues part de la Comunitat :-)

La cultura i la lliure circulació de les idees és l'arma més efectiva contra les dictadures del pensament i contra la ignorància.