Si hemos estado interesados en instalar un servidor lemp, lo más seguro es que las herramientas que te presento a continuación nos van a ayudar, y mucho, a la creación y gestión de las páginas web que tengamos hospedadas en él.
A continuación puedes encontrar la serie completa dedicada a la instalación de un servidor LEMP:
CAP.I PHP
CAP.II NGINX
CAP.III MARIADB
CAP.IV BONUS
phpMyAdmin
Para ayudar a la gestión de las bases de datos MySQL, tenemos a nuestra disposición una herramienta basada en la web que facilita la administración de nuestros datos. Me refiero a phpMyAdmin, y vamos a instalarlo en nuestra flamante Raspberry.
Empezamos como siempre instalando:
sudo pacman -S phpmyadmin
Verificamos y si fuese necesario descomentámos las siguientes lineas en:
sudo nano /etc/php/php.ini
extension=pdo_mysql extension=mysqli
y actualizamos también:
mysqli.allow_local_infile = On open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
open_basedir limita el acceso PHP añadiendo un poco más de seguridad.
Creamos un enlace a la carpeta de phpMyAdmin a nuestra carpeta http:
sudo ln -s /usr/share/webapps/phpMyAdmin/ /srv/http/phpMyAdmin
Creamos nuestro bloque de servidor:
sudo nano /etc/nginx/sites-available/phpMyAdmin
server { listen 80; listen [::]:80; server_name phpmyadmin.rpi; access_log /var/log/nginx/phpMyAdmin.access.log; error_log /var/log/nginx/phpMyAdmin.error.log; location / { root /srv/http/phpMyAdmin; index index.html index.htm index.php; } location ~ \.php$ { root /srv/http/phpMyAdmin; fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /srv/http/phpMyAdmin/$fastcgi_script_name; include fastcgi_params; } }
Y lo enlazamos a los sitios activados:
sudo ln -s /etc/nginx/sites-available/phpMyAdmin /etc/nginx/sites-enabled
En el equipo cliente hay que declarar el alias en /etc/hosts:
sudo nano /etc/hosts
... 192.168.1.71 phpmyadmin.rpi ...
Y por ultimo reiniciamos nginx y php-fpm:
sudo systemctl restart nginx sudo systemctl restart php-fpm
Para conectarnos a phpMyAdmin, escribiremos en nuestro navegador favorito el alias que acabamos de declarar en /etc/hosts:
http://phpmyadmin.rpi/
Y nos aparecerá el menu de acceso
Desarrollo web
Las siguientes herramientas nos permitirán optimizar las tareas repetitivas al realizar paginas web.
Node.js
Si no necesitamos una versión en especial, podemos instalar nodejs desde pacman. Si por el contrario, necesitamos una versión en concreto, ves directamente a la instalación alternativa, a continuación:
sudo pacman -S nodejs npm
Instalación alternativa de nodejs
Lo malo de actualizar en automático nuestra Raspberry, es que alguna vez puede ocasionar problemas, como el que he tenido hace unos días con nodejs que se actualizó a una versión que todavía node-sass no está soportada en ARM.
Afortunadamente, he descubierto NVM (Node Version Manager) en AUR que permite instalar la versión de nodejs que nos haga falta ¡Vamos allá!
Nos conectamos mediante SSH a nuestra Raspberry y empezaremos desinstalando nodejs y npm:
sudo pacman -Rs npm nodejs
Ahora clonamos el repositorio nvm.git:
git clone https://aur.archlinux.org/nvm.git
Cambiamos a la carpeta recién creada:
cd nvm
Y compilamos:
makepkg -si
Salimos de la carpeta,
cd ..
y la borramos:
rm -rf nvm
Tal y como nos indica la wiki, añadimos en .bashrc las siguientes líneas:
nano .bashrc
# Set up Node Version Manager source /usr/share/nvm/init-nvm.sh
Salimos de la terminal, y abrimos otra para que tengamos disponible la modificación de bashrc. Ahora ya podemos instalar la versión que deseemos:
nvm install 12.0
Downloading and installing node v12.0.0... Downloading https://nodejs.org/dist/v12.0.0/node-v12.0.0-linux-armv7l.tar.xz... ######################################################################### 100,0% Computing checksum with sha256sum Checksums matched! Now using node v12.0.0 (npm v6.9.0) Creating default alias: default -> 12.0 (-> v12.0.0)
Gulp
Gulp nos ayudará a automatizar tareas comunes y repetitivas en el desarrollo de aplicaciones web, cómo por ejemplo compilar Sass o JavaScript. Instalamos a nivel global.
sudo npm i -g gulp-cli
Sass
SASS Basicamente es CSS con superpoderes, ofrece muchas opciones que CSS no ofrece y es el acrónimo de Syntatically Awesome StyleSheet.
Si hemos tenido que utilizar la instalación alternativa de nodejs, deberemos utilizar tambien la instalación alternativa de Sass, a continuación.
Si no es el caso, instalación habitual:
sudo npm install -g sass
Instalación alternativa de node-sass
Este modo instalara node-sass indicando la version que queremos instalar, al igual que hemos hecho con nodejs:
npm install node-sass@4.12.0
Webmin
Con Webmin vamos a tener el pleno control del servidor, pero he tenido problemas al instalarlo desde AUR
git clone https://aur.archlinux.org/webmin.git
cd webmin makepkg
==> ERROR: webmin no está disponible para la arquitectura «armv7h».
Hay que modificar PKGBULID:
nano PKGBUILD
Y modificar la siguiente linea:
arch=(x86_64 armv7h)
al segundo intento de compilar:
makepkg
error: no se ha encontrado el paquete: perl-authen-pam error: no se ha encontrado el paquete: perl-encode-detect ==> ERROR: «pacman» ha fallado al instalar las dependencias que faltaban. ==> Dependencias que faltan: -> perl-authen-pam -> perl-encode-detect ==> Comprobando dependencias mientras se compila... ==> ERROR: No se pudieron resolver todas las dependencias.
Las dos dependencias que faltaban las he instalado desde AUR:
cd ..
git clone https://aur.archlinux.org/perl-authen-pam.git cd perl-authen-pam makepkg cd .. rm -rf perl-authen-pam
git clone https://aur.archlinux.org/perl-encode-detect.git cd perl-encode-detect makepkg cd .. rm -rf perl-encode-detect
Y al tercer intento:
cd webmin makepkg -si cd .. rm -rf webmin
Activamos y arrancamos:
sudo systemctl enable webmin.service sudo systemctl start webmin.service
Una vez en marcha, desde nuestro navegador:
192.168.1.76:10000 Web server port (default 10000): Login name (default admin): Login password
Por defecto, el usuario es root y su correspondiente contraseña