Radxa Rock Pro: Linaro Server

28
Radxa Rock Pro: Linaro Server Manual casero de instalación Radxa Rock Pro: Linaro Server Manual casero de instalación de un servidor Linaro en Radxa Rock Pro Por Daniel Expósito Mateo. Última actualización: 10/06/2015 03:46:20 Índice de contenido 0. Introducción 1. Instalación de Ubuntu Server en tarjeta Micro SD. 2. Acceso SSH 3. Configurar una dirección IP estática a la conexión ethernet 4. Habilitar conexión Wifi 5. Actualizar el sistema operativo 6. Cambiar la hora del sistema 7. Establecer contraseña del usuario root 8. Crear un usuario nuevo y borrar el usuario por defecto 8.1. Crear el nuevo usuario 8.2. Borrar el usuario por defecto 9. Hacer un backup del sistema (a lo bruto) 10. Ver programas instalados 11. Instalar MySQL 11.1. Cambiar contraseña de “root” de MySQL 11.2. Crear usuario de MySQL 11.3. Habilitar MySQL para uso remoto 11.4. Cambiar el puerto de MySQL 11.5. MySQL Workbench: Cliente de MySQL 12. Instalar Apache2 12.1. Deshabilitar el listado de directorios web 1 de 28

description

Manual casero para instalación de Lubuntu (Linaro) en Radxa Pro.

Transcript of Radxa Rock Pro: Linaro Server

Page 1: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

Radxa Rock Pro: Linaro Server Manual casero de instalación de un servidor Linaro en Radxa Rock Pro

Por Daniel Expósito Mateo. Última actualización: 10/06/2015 03:46:20

Índice de contenido

0. Introducción

1. Instalación de Ubuntu Server en tarjeta Micro SD.

2. Acceso SSH

3. Configurar una dirección IP estática a la conexión ethernet

4. Habilitar conexión Wifi

5. Actualizar el sistema operativo

6. Cambiar la hora del sistema

7. Establecer contraseña del usuario root

8. Crear un usuario nuevo y borrar el usuario por defecto

8.1. Crear el nuevo usuario

8.2. Borrar el usuario por defecto

9. Hacer un backup del sistema (a lo bruto)

10. Ver programas instalados

11. Instalar MySQL

11.1. Cambiar contraseña de “root” de MySQL

11.2. Crear usuario de MySQL

11.3. Habilitar MySQL para uso remoto

11.4. Cambiar el puerto de MySQL

11.5. MySQL Workbench: Cliente de MySQL

12. Instalar Apache2

12.1. Deshabilitar el listado de directorios web

1 de 28

Page 2: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

12.2. Permisos óptimos para /var/www.

12.3 Configurando Apache

13. Instalar SFTP

13.1. Crear usuario SFTP

13.2. Instalar el servidor SFTP

13.3. Enjaular usuario SFTP

13.4. Enjaular usuario SFTP para acceder a /var/www

14. Instalar PHP.

14.1. Configurando PHP.

15. Instalar cliente de DNS dinámico (ddclient)

16. Usar múltiples dominios en el servidor

17. Instalar firewall UFW

17.1. Uso del firewall

18. Redimensionar partición de la tarjeta SD

19. Hacer backups de datos usando cron

19.1. Usando crontab

0. Introducción

Este documento está basado en mi experiencia instalando y configurando en la Radxa Pro. Me considero un novato en Linux, y todo lo escrito aquí ha sido fruto de muchas horas consultando en internet. Por tanto, seguramente la información contenida es muy mejorable, pero me sirve como punto de partida y referencia para futuras instalaciones en la Radxa Pro. Por favor, si ves errores o conoces un método mejor para hacer algo contenido aquí, no dudes en contactar conmigo y haré los cambios en beneficio de todos los que consultemos este documento.

1. Instalación de Ubuntu Server en tarjeta Micro SD.

Instalaremos el sistema operativo en una tarjeta Micro SD para conservar en NAND (memoria interna de la tarjeta) el sistema Android que viene por defecto. Esto puede ser una buena idea

2 de 28

Page 3: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

porque nos permite hacer copias de las tarjetas y usarlo como un sistema de backup bastante sencillo.

El primer paso consiste en descargar la imagen más reciente del sistema operativo. Hay que tener cuidado de elegir bien la imagen, teniendo presente el tipo de tarjeta Radxa Rock que se posea (las imágenes no son iguales para Rock Lite y Rock Pro, por ejemplo), y que sea para instalar en SD y no en NAND. Las imágenes se encuentran en el siguiente enlace:

http://radxa.com/Rock/prebuilt_images

En el momento de redactar este documento, está disponible la versión Ubuntu (Linaro) 14.04 Server (141030) como la más reciente.

Ahora, necesitaremos una tarjeta Micro SD disponible, un lector de tarjetas para el PC y el programa necesario para añadir la imagen a la tarjeta. El programa se llama Win32 Disk Imager (para Windows), y puede descargarse aquí:

http://sourceforge.net/projects/win32diskimager/

La instalación es sencilla, en el campo Image File seleccionamos el archivo con extensión .img de la imagen y pulsamos el botón Write. Esto copiará la imagen en la tarjeta Micro SD.

Una vez terminado, insertamos la tarjeta en la Radxa Rock. Nos aseguramos de que tiene el cable HDMI y el de red conectados y la encendemos.

Nota: Si por un casual sigue cargando el sistema operativo desde NAND y no desde la tarjeta Micro SD, entonces habrá que configurar la Radxa Rock para ello. Esto se sale de este manual en este momento, la documentación oficial está aquí: http://radxa.com/Rock.

Como es la versión Server del sistema operativo, sólo obtendremos el prompt (línea de comandos) y estará listo para usarse.

Recordemos que usuario/contraseña por defecto son rock/rock respectivamente, aunque se identifica automáticamente como usuario root, que no tiene asignada ninguna contraseña.

2. Acceso SSH

Si nuestro router tiene habilitado el protocolo DHCP, al estar conectada la Radxa Rock con el cable de red, conseguirá automáticamente una dirección IP que le asigna el router. Con ello, conseguirá acceso a nuestra red interna, y por tanto, a internet. Esto nos posibilita establecer una conexión SSH con nuestra Radxa Rock, que no es otra cosa que poder manejar la Radxa Rock desde otro ordenador a través de un terminal que nos muestra el prompt, como si estuviéramos trabajando directamente en ella. Esto es muy recomendable porque al contar únicamente con la línea de comando en la Radxa Rock, es más cómodo trabajar con ella como

3 de 28

Page 4: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

si fuera una ventana en un entorno de trabajo con ratón, navegador web, etc, sobretodo para seguir este manual para copiar y pegar todas las instrucciones que vendrán a continuación.

En primer lugar, desde la Radxa Rock necesitaremos saber qué dirección IP le ha asignado el router. Para ello, en la línea de comando escribiremos lo siguiente:

ifconfig

Esto nos mostrará las interfaces de redes configuradas en ese momento. Nos interesa la que se llama eth0, que corresponde a la conexión por cable ethernet. Nos dará un parámetro llamado Link encap con cuatro números separados entre puntos parecido a esto: “192.168.0.50”. Esa será la dirección IP asignada a la Radxa Pro, que al ser obtenida dinámicamente mediante DHCP, podría cambiar si reiniciamos la Radxa Pro, por ejemplo, así que más tarde le asignaremos una IP fija que no varíe.

Para establecer una conexión DHCP, lo mejor es contar con una aplicación cliente para nuestro PC, siendo el más conocido (en Windows) uno llamado PuTTY, que podemos descargarlo de manera gratuita aquí: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. Ni siquiera hay que instalarlo, lo ejecutamos y listo, añadimos la dirección IP que obtuvimos antes (el puerto por defecto es 22) y pulsamos en Open. Se nos abrirá una ventana y, si todo ha ido bien, nos pedirá login y contraseña, que recordemos que en la Radxa Pro, por defecto es rock para ambos. Ahora podemos trabajar con la Radxa Pro desde nuestro PC, incluso podríamos retirar el cable HDMI y el teclado porque no lo usaremos mucho.

Para acceder a través de otro entorno linux, podemos usar el siguiente comando (asumiendo que la IP es, por ejemplo, 192.168.0.50):

ssh -p 22 192.168.0.150 -l rock

3. Configurar una dirección IP estática a la conexión ethernet

Al usar la Radxa Pro como servidor, no nos conviene que utilizar una dirección IP dinámica, porque si instalamos, por ejemplo, un servidor web para ver desde cualquier parte del mundo y se nos cambia la IP, dejará de tener acceso al exterior. Por lo tanto, es muy recomendable asignarle a la Radxa Pro una IP estática que no varía con los cortes de luz o entre en conflicto con otros dispositivos que obtengan por error la misma IP.

Lo que haremos será editar el archivo de configuración del acceso a internet por cable con este comando:

sudo pico /etc/network/interfaces.d/eth0

Por defecto, contendrá algo así:

4 de 28

Page 5: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

auto eth0 iface eth0 inet dhcp

Y necesitamos que sea algo así (los datos son de ejemplo, habría que sustituirlos por los datos que utilice nuestra red):

auto eth0 iface eth0 inet static

address 192.168.0.100 netmask 255.255.255.0 gateway 192.168.0.1 dns­nameservers 8.8.8.8 8.8.4.4

El editor de texto pico que hemos usado utiliza Control + x para salir, y como hemos realizado cambios, nos pedirá confirmar que deseamos guardarlos, y el nombre del archivo que lo dejaremos como está.

En la teoría, para que los cambios surtan efecto, necesitamos reiniciar la interface de conexión, sería algo así (no hacer):

sudo ifdown eth0

sudo ifup eth0

Esto iría bien trabajando directamente desde la Radxa Pro, pero como seguramente estaremos trabajando desde SSH, nos desconectaría en el primer comando y no podríamos ejecutar el segundo. Para no estar cambiando a la Radxa Pro, podemos probar un comando para reiniciarla:

sudo shutdown -r now

Si todo ha ido bien, la Radxa Pro se reiniciará, pero recordemos que la IP la hemos cambiado, así que deberemos usar la nueva IP para acceder desde SSH.

4. Habilitar conexión Wifi

Confieso que le he dedicado muchas horas a esto y no he conseguido mantener una conexión Wifi que me funcione bien. Como voy a usar el servidor con una conexión ethernet, dejo este punto para estudiarlo más adelante. Mientras, remito a la documentación oficial: http://radxa.com/Rock/Wireless.

5. Actualizar el sistema operativo

Para empezar bien a trabajar con la Radxa Rock, lo más recomendable es actualizar el sistema operativo para asegurarnos de que está al día. El comando para ello es el siguiente:

5 de 28

Page 6: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

sudo apt-get update

sudo apt-get upgrade

6. Cambiar la hora del sistema

La hora del sistema tiene tela, porque muestra la hora según la franja horaria universal (UTC), así que quizás tengamos la hora correcta, pero el sistema muestra una que no corresponde (porque la franja horaria es diferente). Un ejemplo, si vives en Canarias y son las 22:00 horas, y usamos el siguiente comando:

date

El resultado que daría es este:

Sat Jul 19 21:00:00 UTC 2014

No sale correcto porque está dándonos la hora en otra franja horaria. Para cambiar la franja horaria, el método más fiable y rápido es usar el siguiente comando:

sudo dpkg-reconfigure tzdata

Aparecerá un programa parecido a los de MS­DOS y nos hará elegir la ubicación en la que nos encontramos. En el ejemplo de Canarias, habría que elegir:

Atlantic Ocean Canary

Si volviéramos a pedir la hora, saldría algo así:

Sat Jul 19 22:00:00 WEST 2014

Quizás tengamos la zona horaria bien pero la hora sea incorrecta. Para cambiar la hora sería así:

date --set "2015-04-29 1:24"

Las fuentes que seguí son las siguientes:

Web Servidor Debian. Debian administrator.

7. Establecer contraseña del usuario root

El usuario root es el superusuario del servidor, el que puede hacer cualquier cosa en él. Ahora mismo no tiene contraseña y eso es un fallo grave de seguridad, cualquier otro usuario del

6 de 28

Page 7: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

servidor podría cambiar cosas en él, y no conviene. Así que vamos a asignarle una contraseña con el siguiente comando:

sudo passwd root

Nos pedirá que confirmemos la contraseña. Y para ser precavidos, lo mejor es apuntar la contraseña en un papel y guardarlo. A lo largo del documento vamos a tener que establecer diversas contraseñas, y conviene por seguridad que sean diferentes, así que apuntarlas es lo más aconsejable de cara al futuro.

8. Crear un usuario nuevo y borrar el usuario por defecto

Usar el usuario que viene por defecto tampoco es una buena idea de cara a la seguridad. Lo normal es que cada uno utilice su propio usuario, y es recomendable eliminar el usuario por defecto.

8.1. Crear el nuevo usuario

Como primer paso nos vamos a identificar como usuario root para hacer los cambios sin tener problemas de permisos. Se hace simplemente escribiendo:

su

Ahora, podríamos crear el usuario en un solo paso, pero es mejor hacerlo primero por partes para entender lo que hacemos. Lo primero, creamos el usuario. Para este ejemplo usaré mi nombre, aunque es mejor usar algo un poco más complejo o diferente:

useradd daniel

Luego le asignamos una contraseña:

passwd daniel

Todo usuario tiene una carpeta en /home, la creamos así:

mkdir /home/daniel

Y a esa carpeta le asignamos dueño y grupo:

chown daniel:daniel -R /home/daniel

Luego le asignamos permisos:

chmod 755 -R /home/daniel

Y asignamos la carpeta al nuevo usuario:

7 de 28

Page 8: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

usermod -d /home/daniel daniel

El método para hacerlo todo en un solo paso es el siguiente (el grupo debe existir previamente):

useradd -g daniel -d /home/daniel -m -s /bin/bash daniel

Donde ­g especifica el grupo, ­d la carpeta home, ­m crea la carpeta home si no existe, y con ­s establecemos el shell del usuario, que suele ser /bin/bash y básicamente viene a decir que le permitiremos usar la consola.

Ahora entraremos en el archivo /etc/passwd para asegurarnos de que el usuario se ha creado terminando la línea en /bin/bash en vez de /bin/sh:

pico /etc/passwd

Buscamos el usuario nuevo, y si termina con /bin/sh, lo sustituimos.

Por último, añadiremos el usuario en todos los grupos al que pertenece el usuario “rock”. Para ello, abrimos el archivo /etc/group:

pico /etc/group

Buscaremos las siguientes líneas y añadiremos el usuario. Si el usuario rock está en la línea, lo separamos con una coma. Son las siguientes:

dialout:x:20:rock,daniel cdrom:x:1000:rock,daniel sudo:x:27:daniel audio:x:29:rock,daniel dip:x:1000:rock,daniel video:x:44:rock,daniel plugdev:x:1000:rock,daniel

Guardamos con Control + x.

Fuente seguida:

Habilitar root. Administración de usuarios y grupos. Crear un usuario nuevo y todo lo que ello implica.

8.2. Borrar el usuario por defecto

Si todo ha ido bien, podremos hacer login con el nuevo usuario y eliminar el usuario rock. Seguramente, si lo hacemos a continuación de crear nuestro usuario, nos dará problemas al

8 de 28

Page 9: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

borrar rock porque lo hemos estado usando y tiene procesos abiertos, así que lo más sencillo es reiniciar la Radxa Rock:

sudo shutdown -r now

Una vez reinicie la Radxa Rock, nos identificamos con el usuario nuevo. Si nos deja, es que todo ha ido bien. Ahora queda borrar el usuario rock de esta manera:

sudo userdel -r rock

Fuente que he seguido: Eliminar usuario y su home en Debian/Ubuntu.

9. Hacer un backup del sistema (a lo bruto)

Llegados a este punto, no estaría de más hacer un backup del servidor en el estado actual, ya que empezaremos a instalar programas y si falla algo, puede que resulte complicado solucionarlo y tengamos que empezar de cero. Hay varios métodos para hacer backups, pero para hacerlo fácil nos aprovecharemos de que tenemos el sistema en una tarjeta Micro SD. En un punto posterior veremos cómo hacer backups de los datos de un modo más sofisticado.

Primero, apagaremos el servidor para poder sacar la Micro SD:

sudo shutdown -h now

Insertaremos la Micro SD en el lector del PC y volveremos a abrir el programa Win32 Disk Imager. Esta vez, en Image File pondremos la ruta y el nombre que le daremos al archivo, por ejemplo este:

C:\radxa.img

Y para guardar la imagen usaremos el botón Read. Tardará un poco, y el archivo ocupará el tamaño que tenga la tarjeta Micro SD.

10. Ver programas instalados

Ahora estaríamos listos para instalar programas, como el servidor de Apache, Php, etc. Pero puede que la distribución de Linux que tenemos ya traigan esos programas instalados. Para comprobar la lista de programas instalados usaremos este comando:

dpkg --get-selections

También podemos ver los paquetes conocidos por el sistema, que suelen coincidir con los programas instalados, además da una corta descripción de los mismos para hacernos una idea. Se consigue de esta manera:

dpkg -l

9 de 28

Page 10: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

El comando anterior lo podemos usar para buscar un programa específico y saber si está instalado. Por ejemplo, si queremos saber si Apache 2 está instalado sería así:

dpkg -l | grep apache2

Si devuelve algo es que sí está instalado.

La fuente que he seguido:

Cómo saber si un paquete se encuentra instalado o no de manera fácil y rápida.

11. Instalar MySQL

MySQL es un servidor de base de datos muy conocido y extendido.

La imagen de Linux que instalé en la Radxa Rock ya tiene instalado el MySQL, de todas formas no viene mal saber cómo se instala manualmente. Sería así:

sudo apt-get install mysql-server mysql-client

A mitad de la instalación nos pedirá una contraseña para el usuario “root” de MySQL (no confundir con el usuario “root” del sistema). Conviene no poner siempre la misma contraseña para todo, por seguridad.

Para probar que funciona correctamente, usaremos este comando:

mysql -u root -p

Nos pedirá la contraseña de root, y si consigue identificarse, el prompt habitual cambiará a “mysql>” y podremos escribir comandos de MySQL. Por ejemplo, para mostrar las bases de datos existentes, hay que escribir esto:

show databases;

Para salir de MySQL y volver al prompt del sistema, escribimos esto:

exit;

11.1. Cambiar contraseña de “root” de MySQL

Si MySQL viene instalado en el sistema, el usuario root no tendrá contraseña, o es probable que con el paso del tiempo, si no la hemos apuntado, se nos haya olvidado. La forma más sencilla de restablecerla es escribiendo lo siguiente:

sudo dpkg-reconfigure mysql-server-5.5

10 de 28

Page 11: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

Hay que tener en cuenta que sirve para la versión 5.5 de MySQL, si queremos saber qué versión de MySQL tenemos instalado, podemos usar el comando del punto anterior:

dpkg -l | grep mysql

Y luego, en el comando de arriba, cambiar el número de versión.

11.2. Crear usuario de MySQL

Como no es recomendable usar el usuario “root” para trabajar (desde fuera de la Radxa Rock ni se nos permitirá), crearemos un usuario nuevo que podamos usar. Como ejemplo, crearemos un usuario ‘lola’ con la contraseña ‘flores’. Dentro de mysql debemos ejecutar por separado las siguientes tres líneas:

CREATE USER 'lola'@'%' IDENTIFIED BY 'flores';

GRANT ALL PRIVILEGES ON *.* TO 'lola'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Para comprobar que se ha creado bien, saldremos de mysql (“exit;”) y volveremos a entrar usando el nuevo usuario.

mysql -u lola -p

11.3. Habilitar MySQL para uso remoto

Es posible que podamos trabajar localmente, pero no se nos permita acceder desde otra máquina. Eso lo arreglamos editando el archivo /etc/mysql/my.cnf y comentando algunas líneas. Para editar el archivo usamos esta línea:

sudo pico /etc/mysql/my.cnf

Las líneas que hay que comentar son las siguientes (si estuvieran):

skip­external­locking skip­networking (a veces no sale) bind­address = 127.0.0.1

Recordemos que para comentar hay que poner una almohadilla “#” al principio de la línea.

Para que surta efecto, hay que parar el MySQL y volver a iniciarlo. Estos dos comandos harán eso:

sudo /etc/init.d/mysql stop

sudo /etc/init.d/mysql start

O simplemente usar:

11 de 28

Page 12: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

sudo /etc/init.d/mysql restart

Por último, es conveniente terminar probando la conexión desde otra máquina para asegurarse de que queda funcionando.

11.4. Cambiar el puerto de MySQL

Las peticiones al servidor MySQL se hacen, por defecto, a través del puerto 3306. Para añadir un poco de seguridad al servidor vamos a cambiar el puerto de las peticiones. Primero debemos asegurarnos del puerto actual y elegir uno que no se esté usando. Esto podemos averiguarlo con esta línea:

sudo netstat -napt

Vamos a usar como ejemplo el puerto 3307, aunque sea demasiado obvio. Tendremos que acceder al archivo de configuración de MySQL y hacer los cambios. Podemos acceder al archivo así:

sudo pico /etc/mysql/my.cnf

Debemos buscar y cambiar las líneas que contengan lo siguiente:

port = 3350

Suele estar un par de veces, en la sección [client] y [mysqld].

Para finalizar tendremos que reiniciar el servidor:

sudo /etc/init.d/mysql restart

A partir de ahora, no debería dejar acceder a través del puerto 3306, sino a través del puerto 3307.

11.5. MySQL Workbench: Cliente de MySQL

Como nota adicional, recomiendo usar el programa MySQL Workbench para trabajar remotamente con MySQL, no sólo porque nos facilitará la gestión y es gratuito, sino también porque es de la misma compañía de MySQL. Se puede descargar aquí: http://www.mysql.com/products/workbench/.

12. Instalar Apache2

Apache es uno de los servidores web HTTP más utilizados.

También viene instalada en la imagen de Linux que elegí para la Radxa Rock, pero si tuviéramos que instalarla de nuevo, sería así:

12 de 28

Page 13: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

sudo apt-get install apache2

Y listo, para probarlo, únicamente tendremos que ir a un navegador web y copiar la IP que le hayamos asignado a la Radxa Pro. Por ejemplo;

http://192.168.0.100/

Si no da error y aparece una página con el texto “It works!”, es que la instalación ha ido bien.

Las páginas se guardan en /var/www por defecto. El archivo de configuración lo podemos encontrar en /etc/apache2/apache2.conf y /etc/apache2/conf.d para configuración adicional. Hay más archivos de configuración extra (para módulos y demás) en la misma carpeta.

12.1. Deshabilitar el listado de directorios web

Si añadimos en /var/www unas cuantas páginas y carpetas, nos daremos cuenta enseguida que, desde el navegador web, podemos ver el listado de subcarpetas y archivos que contiene una carpeta. Esto nos supone un problema serio de seguridad, así que lo mejor es deshabilitarlo para que no se vea el contenido de las carpetas. Lo más rápido es hacer lo siguiente:

sudo a2dismod autoindex

Y reiniciar el Apache. Podemos usar esta línea:

sudo /etc/init.d/apache2 restart

12.2. Permisos óptimos para /var/www.

Cuando se instala Apache 2, se crea la carpeta /var/www, que posiblemente pertenezca y forme parte del grupo de “root”. Normalmente trabajaremos en esa carpeta con un usuario FTP y habrá que asegurarse de que pertenezca al mismo grupo para que no haya problemas de permisos.

Tendremos que cambiar el grupo de la carpeta /var/www para que sea “www­data”, si no lo es ya:

sudo chgrp www-data -R /var/www

Luego, daremos los permisos correctos a la carpeta /var/www:

sudo chmod 664 -R /var/www/*

Entramos en la carpeta:

cd /var/www

13 de 28

Page 14: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

Y terminamos de establecer permisos:

sudo find ./ -type d -exec chmod 775 \;

sudo find ./ -type d -exec chmod g+s \;

Básicamente, lo que hemos conseguido es que el propietario de los archivos, y los que pertenezcan al mismo grupo que los archivos, puedan leer, escribir y ejecutar lo que hay dentro de /var/www, y el resto sólo pueda mirar pero no tocar.

Me he guiado de esta fuente: Permisos óptimos para archivos de apache en Debian.

12.3 Configurando Apache

Es probable que tengamos que cambiar la configuración de Apache en algún momento. Los ficheros de configuración los podemos encontrar en /etc/apache2/. El archivo principal puede variar, normalmente está en /etc/apache2/apache2.conf, si no, lo mejor es mirar si hay un archivo “readme” que especifique dónde se configurar el servidor.

Una de las modificaciones frecuentes, es habilitar el uso de archivos .htaccess, que permite realizar configuraciones especiales para cada directorio, sin necesidad de modificar la configuración establecida de Apache. Para ello tenemos que usar esta línea:

sudo pico /etc/apache2/apache2.conf

Buscaremos un trozo de texto que ponga lo siguiente:

<Directory /var/www/> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory>

Puede que no tenga la línea “Options Indexes FollowSymLinks”, esa línea es lo que evita que se vean los archivos de los directorios, visto en el punto anterior.

Cambiaremos la opción AllowOverride por lo siguiente:

AllowOverride All

Luego, basta con reiniciar Apache2, esta vez usaremos un método más directo:

sudo /etc/init.d/apache2 restart

Es posible que también queramos activar el módulo mod_rewrite de Apache2, que dos da acceso a modificar más cosas dentro del .htacess. Activarlo es tan fácil como esto:

sudo a2enmod rewrite

14 de 28

Page 15: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

Y de nuevo, reiniciar el Apache2:

sudo /etc/init.d/apache2 restart

13. Instalar SFTP

El programa SFTP es un servidor FTP para intercambio de archivos de forma segura, ya que usa el protocolo SSH.

13.1. Crear usuario SFTP

Antes de instalar el programa, vamos a crear el usuario que usaremos para conectarnos por SFTP. Tendrá estas características:

Por seguridad, no le dejaremos acceder al sistema mediante consola, sólo servirá para el intercambio de archivos.

Será su carpeta en /home la que usaremos para compartir por SFTP.

Sabiendo de antemano que vamos a necesitar permisos de administrador y es una lata poner la contraseña cada vez, nos ponemos en modo “sudo” para el resto de comandos:

sudo -i

El primer paso es crear el usuario, usaremos como ejemplo “lola”. El parámetro “­s /bin/bash” es el que hará que pueda acceder vía SSH:

useradd -d /home/lola -s /bin/bash lola

Ahora lo asignaremos al grupo “www­data”, pues luego añadiremos /var/www a ese grupo para que el usuario SFTP pueda manipular archivos y carpetas:

adduser lola www-data

También hace falta que el usuario tenga una contraseña:

passwd lola

Antes mencionamos que el usuario compartiría su carpeta en /home por FTP, pero realmente lo que nos interesa es que comparta /var/www/html, que por temas de permisos y seguridad, no es posible. Lo solucionamos creando un enlace simbólico (symlink) como su carpeta en /home, que ya especificamos al crear el usuario que la llamaríamos “lola”:

ln -s /var/www /home/lola

Cuidado, si ya existe una carpeta con ese nombre, lo que hará este comando es crear un enlace simbólico llamado “www” dentro, y no nos vale. Hay que asegurarse de que la carpeta

15 de 28

Page 16: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

no existe antes de usar el comando. Sabremos que “lola” es un enlace simbólico, si al listar ejecutar “ls ­l /home” sale la carpeta así:

lola ­> /var/www

Si es así, lo hemos hecho bien.

13.2. Instalar el servidor SFTP

En primer lugar, es bueno asegurarse de que no está ya instalado el programa. En la imagen que elegí, ya viene instalado. El paquete del programa se llama openssh­server, para comprobar si está instalado recordemos este comando:

dpkg -l | grep openssh-server

Si nos lista el paquete, es que ya está instalado. Si no, la instalación es sencilla usando el siguiente comando:

sudo aptitude install openssh-server

Ahora toca configurar un poco el SFTP:

sudo pico /etc/ssh/sshd_config

Aquí buscaremos la siguiente línea:

UsePrivilegeSeparation yes

Y debajo escribiremos lo siguiente:

AllowUsers daniel lola

Donde lola es el usuario que creamos anteriormente para SFTP. Es importante comentar que añadimos el usuario que estamos usando para conectar vía SSH (daniel) o dejará de funcionar y no podremos acceder al servidor remotamente.

Por último, podemos cambiar el puerto que usará el SFTP, que por defecto es 22. Más tarde vendrá bien para añadir seguridad cuando instalemos el firewall. Para cambiarlo buscamos la siguiente línea y le cambiamos el número:

Port 22

Recordemos que para asegurarmos de no elegir un puerto ya usado, podemos listar los que están en uso así:

sudo netstat -napt

Por último, tendremos que reiniciar el servidor:

16 de 28

Page 17: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

sudo /etc/init.d/ssh restart

Es posible que nos desconecte la conexión SSH y tengamos que cambiar el puerto en el cliente SSH para volver a conectar, o quizás pase como me ha pasado a mí y aún podamos acceder por el puerto 22. No soy un experto en linux y desconozco por qué, quizás porque detecta que hay una conexión SSH abierta (la nuestra), así que lo más fácil es usar el método Windows: reiniciar el servidor. Recordemos:

sudo shutdown -r now

Hay que tener en cuenta que habrá que usar un cliente SFTP en vez de FTP para la transferencia de archivos. Por ejemplo, el Dreamweaver tiene la opción de conexiones SFTP.

La fuente que he seguido:

Instalar un servidor SFTP en Debian GNU/Linux.

13.3. Enjaular usuario SFTP

Si nos conectamos al servidor a través de algún programa de transferencia de archivos SFTP nos daremos cuenta de que podemos ver todas las carpetas del servidor, y esto puede ser peligroso si creamos un usuario SFTP para terceras personas. Lo que debe hacerse es “enjaular” al usuario en una carpeta (su carpeta home, por ejemplo), para que no pueda salirse de ahí y así limitamos su acceso. Vamos a intentar enjaular al usuario lola que ya hemos creado.

Antes de nada, lo que haremos será borrar la carpeta /home/lola, porque cuando la creamos lo hicimos como un enlace simbólico y no nos sirve. Vamos a crearla como una carpeta normal:

rm -r /home/lola

mkdir /home/lola

Vamos a hacer que el usuario lola no pueda salir de su carpeta home que es /home/lola. Es esencial que quede claro que todas las carpetas que se incluyen en la ruta del directorio “jaula” tienen que tener como propietario al usuario root, si no, no funcionará. En la carpeta /home es más que probable que sea así si no la hemos tocado, comprobemos la carpeta /lola:

ls -l /home

Si el propietario de /lola no es root lo cambiamos (recordemos que el usuario lola pertenecía al grupo www­data:

chown root:www-data /home/lola

El segundo punto a tener en cuenta, es que los permisos tienen que ser los correctos o no funcionará, en este caso:

17 de 28

Page 18: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

chmod 755 /home/lola

Con esos permisos, el usuario lola tiene una carpeta home que puede consultar, pero sin permisos para añadir o borrar archivos. Dentro de la carpeta, vamos a crear otra que pueda manipular:

mkdir /home/lola/archivos

chown lola:www-data /home/lola/archivos

Ahora toca modificar la configuración del SSH:

pico /etc/ssh/sshd_config

Tenemos que buscar la línea que ponga “Subsystem sftp /usr/lib/openssh/sftp­server” y cambiarlo por esto:

#Subsystem sftp /usr/lib/openssh/sftp­server Subsystem sftp internal­sftp

Y al final del documento, añadimos lo siguiente:

Match group www­data ChrootDirectory /home/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal­sftp

Con esto le decimos al SSH que a todo usuario que sea del grupo www­data lo enjaule en la carpeta con su nombre de usuario que esté dentro de la carpeta /home.

Finalmente, bastaría con reiniciar el servicio SSH:

/etc/init.d/ssh restart

Pero como, sin razón aparente, a veces no me ha funcionado y me lo puedo permitir, prefiero reiniciar todo el servidor:

shutdown -r now

Si todo ha ido bien, deberíamos poder acceder a través de SSH y manipular archivos en la carpeta /home/lola/archivos. Ojo con qué programa lo probamos, por alguna razón, en Dreamweaver me fue perfecto, pero en Aptana me daba errores.

Por cierto, recordemos que el usuario lola tenía acceso a consola, si con un usuario solo vamos a usar programas de transferencia de archivos y no necesitamos la consola, es mejor no permitir que se use. Podemos hacerlo si modificamos el archivo /etc/passwd o así:

18 de 28

Page 19: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

chsh -s /bin/false lola

Fuente seguida: Enjaulado SFTP.

13.4. Enjaular usuario SFTP para acceder a /var/www

Cuando encerramos a un usuario en una carpeta de esta manera, hay que tener en cuenta un par de cosas: la primera es que no podrá salirse de ella, no podremos acceder a nada más a menos que lo configuremos; la segunda es que debido a ello los enlaces simbólicos no funcionarán, por eso lo borramos antes.

La solución más simple para permitir al usuario acceder a /var/www es usar la propia carpeta /var/www para enjaular al usuario, y que tenga acceso a /var/www/html, o enjaularlo en /var/www/html y que tenga su propia de acceso en /var/www/html/lola. Como ejemplo, hagamos lo primero, simplemente tendríamos que volver a configurar lo último que añadimos a la configuración del SSH de esta manera:

Match group www­data ChrootDirectory /var/www X11Forwarding no AllowTcpForwarding no ForceCommand internal­sftp

Así le decimos que todos los usuarios del grupo www­data pueden acceder a /var/www. Para el segundo ejemplo, crearíamos la carpeta /var/www/html/lola con propietario lola:www­data y configuraríamos SSH de esta manera:

Match user lola ChrootDirectory /var/www/html X11Forwarding no AllowTcpForwarding no ForceCommand internal­sftp

Con esto le decimos que el usuario lola puede acceder a /var/www/html. Ojo, podría ver otras carpetas dentro de /var/www/html, a parte de la suya propia, a no ser que controlemos bien los permisos.

Reiniciamos el servidor SSH o todo el servidor y debería funcionar.

Fuente seguida: Enjaulado SFTP.

19 de 28

Page 20: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

14. Instalar PHP.

PHP es un módulo de Apache2 que nos permite mostrar y trabajar con el lenguaje de programación PHP. Conviene asegurarse de que si ya está instalado el paquete libapache2­mod­php5, si no, sólo necesitamos ejecutar esta línea de comando:

sudo apt-get install php5 libapache2-mod-php5

Tras eso, sólo queda reiniciar el Apache2:

sudo /etc/init.d/apache2 restart

Además, PHP también tiene otros módulos útiles, podemos ver una lista de los disponibles tecleando lo siguiente:

apt-cache search php5

Comprobamos si tenemos ya instalado los que nos interesa. Para instalar módulos nuevos, sería algo así (en caso de querer instalar los módulos para mysql y GD):

apt-get install php5-mysql php5-gd

Y volvemos a reiniciar el Apache2:

/etc/init.d/apache2 restart

14.1. Configurando PHP.

Para configurar PHP hay que localizar el archivo php.ini que está en /etc/php5/apache2/php.ini, aunque no viene mal asegurarse, ya que no es difícil terminar modificando el archivo erróneo (a mí me ha pasado). Para saber la ubicación exacta, basta con crear un archivo php con la instrucción “<?php phpinfo(); ?>” y verla desde el navegador; saldrá una tabla con un montón de información sobre el servidor, y en el primer bloque nos sale la ubicación en el parámetro “Loaded Configuration File”.

Para modificar el archivo pondremos:

sudo pico /etc/php5/apache2/php.ini

Un cambio útil podría ser habilitar las etiquetas cortas de código PHP, es decir, poder usar ‘<? ?>’ en vez de ‘<?php ?>’. Lo conseguimos buscando el parámetro short_open_tag y modificando su valor a On:

short_open_tag = On

Otro de los cambios útiles consiste en modificar el parámetro display_errors para permitir mostrar los errores que surjan en PHP, nos ayudará mucho si estamos programando en PHP

20 de 28

Page 21: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

(ojo, no es recomendable tenerlo activo en páginas ya visibles al público, mostrar los errores puede ser un gran agujero de seguridad). La variable debería quedar así:

display_errors = On

Recordemos que también se pueden ver los errores (muy recomendable) mirando el log de errores, que está en /var/log/apache2/error.log:

sudo pico /var/log/apache2/error.log

También podemos echarle un vistazo, por ejemplo, con este comando, mostrando las última 20 líneas:

sudo tail -20 /var/log/apache2/error.log

Las fuentes que he seguido:

Installing PHP5. Configuración del php.ini.

15. Instalar cliente de DNS dinámico (ddclient)

Cuando contratamos un ADSL, lo normal es que nos suministren una IP dinámica para nuestro hogar, es decir, esta IP puede variar si, por ejemplo, reseteamos el router. Esto puede ser un problema si queremos que nuestro servidor esté siempre online y visible desde cualquier parte del mundo a través de un dominio permanente (ejemplo: esteesmidominio.com). Asumiendo que ya hemos contratado un dominio, una solución barata es crear una cuenta con un proveedor de DNS dinámico, que se encarga de actualizar la IP a la que apunta nuestro dominio, así si se nos cae el router o hay problemas técnicos, reestablecerá automáticamente la nueva IP. Normalmente estos proveedores necesitan que instales un cliente en el servidor que se encargará de comprobar si la IP ha cambiado, y ese cliente suele ser ddclient. Instalarlo es muy sencillo:

sudo apt-get install ddclient

Una serie de pantallas de configuración aparecerán en pantalla y tendremos que rellenar los datos. La mayoría de ellos los suministrará el proveedor. En definitiva, estas pantallas lo que harán será completar el fichero de configuración que se encuentra en /etc/ddclient.conf.

Como ejemplo, aquí está la configuración base de dynu.com, que es un proveedor de DNS dinámico:

# ddclient configuration for Dynu # /etc/ddclient.conf daemon=60 # Check every 60 seconds. syslog=yes # Log update msgs to syslog.

21 de 28

Page 22: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

mail=root # Mail all msgs to root. mail­failure=root # Mail failed update msgs to root. pid=/var/run/ddclient.pid # Record PID in file. ssl=yes # Use ssl­support. Works with ssl­library . use=web, web=checkip.dynu.com/, web­skip='IP Address' # Get ip from server. server=api.dynu.com # IP update server. protocol=dyndns2 login=myusername # Your username. password=YOURPASSWORD # Password or MD5 of password. MYDOMAIN.DYNU.COM # List one or more hostnames one on each line.

Nota: no hay que olvidar que las DNS de nuestro dominio tienen que apuntar a los servidores del proveedor de DNS dinámico.

Por último, nos queda crear un demonio que se encargue de ir comprobando la IP. Sería así:

/usr/sbin/ddclient -daemon 300 -syslog

Esto puede añadirse en el crontab para que se ejecute al iniciarse el servidor:

Fuente: ddclient (en inglés).

16. Usar múltiples dominios en el servidor

Teniendo un servidor propio es muy probable que queramos alojar varios sitios web con diferente dominio. Si tenemos dos dominios, por ejemplo midominio.com y otrodominio.com, y ambos apuntan a nuestra IP pública podemos comprobar que, en los dos casos, se mostrarán los archivos alojados en /var/www/html, y no es lo que queremos. Apache nos ayuda con eso a través de la configuración de sitios en dos carpetas diferentes. La primera carpeta es /etc/apache2/sites­available, que guarda las configuraciones existentes, y por defecto, debería haber dos archivos: 000­default.conf (web por defecto) y default­ssl.conf (web por defecto con certificado ssl, y sin certificado no se usa).

Lo primero que haremos será crear, dentro de la carpeta, un archivo nuevo copiando el ya existente:

cd /etc/apache2/sites-available

sudo cp 000-default.conf midominiocom.conf

Luego lo editamos:

sudo pico midominiocom.conf

Y modificamos estos valores:

22 de 28

Page 23: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

DocumentRoot /var/www/html/midominiocom ServerName www.midominio.com ServerAlias midominio.com

Con esto, básicamente le decimos al Apache que si le llega una petición de mostrar midominio.com, tiene que buscar los archivos en /var/www/html/midominiocom en vez de en /var/www/html. Hay que mencionar que si no usamos el ServerAlias, www.midominio.com y midominio.com apuntarán a sitios diferentes, el primero a la carpeta ./html/midominiocom y el segundo a la carpeta ./html.

El siguiente paso es añadir la configuración a la segunda carpeta que mencionamos, que es /etc/apache2/sites­enables creando un enlace simbólico, y esto lo hacemos fácilmente con este comando:

sudo a2ensite midominiocom.conf

Si quisiéramos, podríamos eliminarlo con este comando:

sudo a2dissite midominiocom.conf

Esto es útil si, por alguna razón, no queremos que se muestre una web durante un tiempo pero tampoco queremos eliminar la configuración.

Nos queda crear la carpeta donde se guardarán los archivos:

sudo mkdir /var/www/html/midominiocom

Podemos crear rápidamente un archivo de prueba así:

cd /var/www/html/midominiocom

sudo touch index.html

sudo chmod 777 index.html

sudo echo "Funciona el dominio" > index.html

Por último, hay que reiniciar el Apache:

sudo /etc/init.d/apache2 reload

Sólo queda probarlo, pero no podemos acceder a través del dominio desde dentro de nuestra IP (desde la misma red usamos, por ejemplo, http://192.168.0.100/midominiocom/). ¿Lo más fácil? Pues desactivar el Wifi del móvil y acceder desde su navegador, ya que no estará dentro de nuestra red doméstica al usar el plan de datos. Hay que comprobar el dominio con y sin “www”.

Y en resumen, estos pasos habría que seguirlos por cada dominio que queramos alojar, donde cada uno se guardará en una carpeta diferente.

23 de 28

Page 24: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

Fuente: Alojar varios dominios en un hosting con Apache.

17. Instalar firewall UFW

Una de las maneras de intentar mantener seguro el servidor, es controlar los puertos de acceso para que no pase nadie sin autorización. Esto es muy importante en puertos como el 22 (SSH), 21 (FTP), etc. Además, si tenemos el sistema actualizado constantemente y encima cambiamos los puestos por defecto por otros que elijamos, añadimos seguridad al equipo. Por ejemplo, podemos cambiar el puerto 22 del SSH por el 70. Como hemos visto en puntos anteriores, estos puertos se cambian en los archivos de configuración de los programas, y muchos de ellos requieren reiniciarlos. Ejemplo:

sudo pico /etc/proftpd/proftpd.conf

sudo /etc/init.d/proftpd restart

Mi imagen ya tiene instalado el cortafuegos UFW, pero si necesitamos instalarlo solo hay que teclear lo siguiente:

sudo apt-get install ufw

17.1. Uso del firewall

Para habilitar y deshabilitar el firewall los comandos son estos:

sudo ufw enable

sudo ufw disable

Para permitir todo el acceso (no recomendado) o denegar todo el acceso (ojo, que nos quedamos sin SSH si está habilitado el firewall):

sudo ufw default allow

sudo ufw default deny

Para añadir o denegar acceso a un puerto:

sudo ufw allow 59345

sudo ufw allow 59345 /tcp

sudo ufw deny 59345

sudo ufw deny 59345 /tcp

Para eliminar alguna regla que hayamos creado, sería así:

sudo ufw delete allow 59345

sudo ufw delete allow 59345 /tcp

sudo ufw delete deny 59345

sudo ufw delete deny 59345 /tcp

24 de 28

Page 25: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

Para ver las reglas que hemos añadido, usamos este comando:

sudo ufw status

Quizás muestre un texto como este:

WARN: uid is 0 but '/' is owned by 1001

Eso quiere decir que la carpeta ‘/’ no tiene a root como propierario y eso no es bueno. Para cambiarlo, modificaremos el propietario y permisos de esa carpeta:

sudo chown root.root /

sudo chmod 0755 /

Lo mismo con cualquier otra carpeta que no tenga el propietario adecuado.

La fuentes que he usado:

Configura facilmente tu FIREWALL en debian/ubuntu.

18. Redimensionar partición de la tarjeta SD

Normalmente en Lubuntu, el rootfs () tiene un tamaño por defecto de 2Gb, así que si usamos una tarjeta SD de 8Gb, nos sobrarán 6Gb que no se usarán para nada, y no tendremos mucho espacio para instalar cosas y gestionar archivos.

Para solucionar esto desde la propia Radxa, lo primero que debemos hacer es aumentar el tamaño de rootfs, así que crearemos un script que haga esto mismo.

Creamos un archivo nuevo donde guardaremos el código del script:

sudo pico cambiarootfs.sh

Dentro, guardaremos el siguiente código, extraído de la página de ayuda de Radxa:

#!/bin/bash START_SECTOR=cat /sys/block/mmcblk0/mmcblk0p1/start fdisk /dev/mmcblk0 << EOF d n p 1 $START_SECTOR w EOF

25 de 28

Page 26: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

echo ­e "\n\n\n \n============================================================" echo "!!!!!expands rootfs done! reboot system" echo "!!!!!and run command "resize2fs/dev/mmcblk0p1" after reboot" echo ­e "=============================================================\n\n\n"

A continuación, lo ejecutaremos:

sudo bash cambiarootfs.sh

Cuando el proceso termina, necesitamos reiniciar el sistema:

sudo shutdown -r now

Y por último, una vez reinicie, cambiaremos el tamaño de la partición con este comando:

sudo resize2fs /dev/mmcblk0p1

Además, como ya no es necesario, podremos borrar el script de esta manera:

rm cambiaparticion.sh

Me he guiado de esta fuente: Resize Linux Rootfs (en inglés).

19. Hacer backups de datos usando cron

Ya hemos visto cómo hacer un backup rudimentario de toda la tarjeta SD, pero seguramente necesitaremos hacer copias frecuentes de algunos datos, por ejemplo, de las bases de datos mysql. Una forma sencilla es usar el comando cron. Para poner un ejemplo, configuraremos un backup diario de todas las bases de datos a un pendrive USB.

El primer paso será identificarnos como root:

su

Ahora necesitamos conectar el pendrive en el USB y comprobar qué nombre tiene:

fdisk -l

Nos dará el nombre del dispositivo USB, en este caso, /dev/sda1.

Para trabajar con el dispositivo USB, crearemos una carpeta y montaremos el dispositivo sobre ella. La carpeta la crearemos de esta manera:

mkdir /backup

26 de 28

Page 27: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

Es recomendable automatizar el proceso de montar el dispositivo, así que editaremos el archivo /etc/fstab:

pico /etc/fstab

Y lo editaremos con el siguiente texto:

/dev/sda1 /backup vfat defaults 0 0

Luego, podemos montar el dispositivo (y todos los que estén en esa lista):

mount -a

En este momento ya tenemos el dispositivo USB montado y podemos ver su contenido. Ahora, crearemos un script para que haga un respaldo de las bases de datos en el pendrive. Como queremos que se haga diariamente, lo guardaremos en la carpeta etc/cron.daily, que es donde se ejecutan los script diarios:

pico /etc/cron.daily/mysql_backup.sh

Añadiremos este texto, que se encarga de hacer el backup de las bases de datos:

#!/bin/sh now="$(date +'%d_%m_%Y_%H_%M_%S')" filename="mysql_$now".gz backupfolder="/backup" fullpathbackupfile="$backupfolder/$filename" logfile="$backupfolder/"backup_log_"$(date +'%Y_%m')".txt echo "mysqldump started at $(date +'%d­%m­%Y %H:%M:%S')" >> "$logfile" mysqldump ­­user=usuario ­­password=contrasenia ­­default­character­set=utf8 ­­all­databases | gzip > "$fullpathbackupfile" echo "mysqldump finished at $(date +'%d­%m­%Y %H:%M:%S')" >> "$logfile" echo "*****************" >> "$logfile" exit 0

Como se ve en la línea del mysqldump, se está proporcionando el usuario y contraseña de mysql, y como no queremos que cualquiera pueda ver esa información, vamos a cambiar los permisos del archivo, para que solo root pueda leerlo:

chmod 700 /etc/cron.daily/mysql_backup.sh

Si queremos, podemos probar el script manualmente escribiendo lo siguiente:

27 de 28

Page 28: Radxa Rock Pro: Linaro Server

Radxa Rock Pro: Linaro Server ­ Manual casero de instalación

bash /etc/cron.daily/mysql_backup.sh

Las fuentes que he seguido:

How to mount USB drive in Linux (inglés). Linux shell script for database backup (inglés). Manual básico de cron (español).

19.1. Usando crontab

Es posible que, como a mí, no termine de ejecutarse el script aunque lo hayamos colocado en /etc/cron.daily/. Así que otra manera de hacer que se ejecute el script es creando un archivo crontab específico para el usuario, en este caso, root.

Con este comando podemos ver si ya existe un archivo para el usuario, y ver qué contiene:

crontab -l

Para editarlo, el comando es el siguiente:

crontab -e

Siguiendo el ejemplo anterior, si queremos que el script se ejecute todos los días a las 6 de la mañana, añadiríamos la siguiente línea:

* 6 * * * bash /etc/cron.daily/mysql­backup.sh

Los asteriscos corresponden a lo siguiente (min hor dmes mes dsem):

min: minuto al que se ejecuta (0 a 59). hor: hora a la que se ejecuta (0 a 23). dmes: día del mes en el que se ejecuta. mes: el mes en el que se ejecuta. dsem: día de la semana en la que se ejecuta (0 a 7, donde 0 y 7 son domingo).

Fuente: Cron & crontab, explicados (español).

28 de 28