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 <= 6
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 <= 6
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/
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.
#
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!