Diferència entre revisions de la pàgina «WoSeBerry - Manual técnico»
Línia 25: | Línia 25: | ||
*IP (eth0): 192.168.30.254/24 | *IP (eth0): 192.168.30.254/24 | ||
*IP (eth1): 192.168.3.123/24 | *IP (eth1): 192.168.3.123/24 | ||
+ | *DNS: 192.168.30.254 10.27.100.1 | ||
'''Raspberry 2:''' | '''Raspberry 2:''' | ||
Línia 30: | Línia 31: | ||
*Software: WordPress | *Software: WordPress | ||
*IP (eth0): 192.168.30.2/24 | *IP (eth0): 192.168.30.2/24 | ||
+ | *DNS: 192.168.30.254 | ||
'''Raspberry 3:''' | '''Raspberry 3:''' | ||
Línia 35: | Línia 37: | ||
*Software: WordPress | *Software: WordPress | ||
*IP (eth0): 192.168.30.3/24 | *IP (eth0): 192.168.30.3/24 | ||
+ | *DNS: 192.168.30.254 | ||
'''Raspberry 4:''' | '''Raspberry 4:''' | ||
Línia 40: | Línia 43: | ||
*Software: MariaDB y Galera Cluster | *Software: MariaDB y Galera Cluster | ||
*IP (eth0): 192.168.30.4/24 | *IP (eth0): 192.168.30.4/24 | ||
+ | *DNS: 192.168.30.254 | ||
'''Raspberry 5:''' | '''Raspberry 5:''' | ||
Línia 45: | Línia 49: | ||
*Software: MariaDB y Galera Cluster | *Software: MariaDB y Galera Cluster | ||
*IP (eth0): 192.168.30.5/24 | *IP (eth0): 192.168.30.5/24 | ||
+ | *DNS: 192.168.30.254 | ||
== Configuración básica para la Raspberry firewall == | == Configuración básica para la Raspberry firewall == |
Revisió del 19:44, 9 maig 2018
Manual de instalación y configuración.
$ comando
Configuración de las Raspberry Pi
Instalación del sistema operativo
Todas las Raspberry Pi de nuestro proyecto cuentan con el sistema operativo Raspbian. Este sistema es la adaptación de la distribución Debian adaptada al hardware de una Raspberry. A excepción del resto de Raspberry, la Raspberry con función de firewall (BERRY-01) llevará instalada la versión con interfaz gráfica.
Una vez instalado el sistema operativo Raspbian en cada una de las Raspberry, procederemos a la configuración básica con la ejecución del siguiente comando:
$ sudo raspi-config
Asignación del direccionamiento IP
Dado que el proyecto está montado bajo una LAN, se creó una red independiente con IPs de clase privada de tipo C. Para configurar la IP estática en las Raspberry deberemos editar el siguiente fichero:
$ sudo nano /etc/dhcpcd.conf
En éste asignaremos el direccionamiento correspondiente a cada Raspberry:
Raspberry 1:
- Hostname: BERRY-01
- Software: HAProxy y UFW
- IP (eth0): 192.168.30.254/24
- IP (eth1): 192.168.3.123/24
- DNS: 192.168.30.254 10.27.100.1
Raspberry 2:
- Hostname: BERRY-02
- Software: WordPress
- IP (eth0): 192.168.30.2/24
- DNS: 192.168.30.254
Raspberry 3:
- Hostname: BERRY-03
- Software: WordPress
- IP (eth0): 192.168.30.3/24
- DNS: 192.168.30.254
Raspberry 4:
- Hostname: BERRY-04
- Software: MariaDB y Galera Cluster
- IP (eth0): 192.168.30.4/24
- DNS: 192.168.30.254
Raspberry 5:
- Hostname: BERRY-05
- Software: MariaDB y Galera Cluster
- IP (eth0): 192.168.30.5/24
- DNS: 192.168.30.254
Configuración básica para la Raspberry firewall
Dado que todo el escenario estará montado bajo una LAN, deberemos configurar en la Raspberry con función de firewall (BERRY-01) aspectos como:
- Servidor DNS: Nos proporcionará la asignación de un dominio para la tienda online.
- Enrutamiento: Permitirá la circulación de tráfico.
- Enmascaramiento: Permitirá enmascarar el tráfico de la red LAN con la IP de la interfaz "eth1".
Servidor DNS
Para configurar un servidor DNS en Raspbian necesitaremos instalar el paquete "bind9", para ello ejecutaremos el siguiente comando:
pi@BERRY-01:~$ sudo apt install bind9
Una vez instalado, realizaremos una copia de seguridad de los archivos de configuración. De esta manera, en caso de tener un error podremos restaurar la configuración por defecto:
pi@BERRY-01:~$ sudo cp /etc/bind/named.conf.local /etc/bind/named.conf.local.bak pi@BERRY-01:~$ sudo cp /etc/bind/db.local /etc/bind/db.woseberry
Seguidamente editaremos el archivo /etc/bind/named.conf.local para crear la zona directa e indicar cual es el archivo que contiene su configuración:
pi@BERRY-01:~$ sudo nano /etc/bind/named.conf.local
zone "woseberry.tk" { type master; file "/etc/bind/db.woseberry"; };
Por último, crearemos la zona directa editando el fichero /etc/bind/db.woseberry
pi@BERRY-01:~$ sudo nano /etc/bind/db.woseberry
; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA woseberry.tk. root.woseberry.tk. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS woseberry.tk. 192.168.3.X IN A woseberry.tk.
Enrutamiento y enmascaramiento
En el archivo rc.local de la Raspberry que nos poporcionará salida a Internet, configuramos el enrutamiento y la regla iptables correspondiente para que se ejecute automáticamente al iniciar el sistema.
pi@BERRY-01:~$ sudo nano /etc/rc.local
… # Activar el enrutamiento echo 1 > /proc/sys/net/ipv4/ip_forward # Enmascarar el tráfico de la LAN con la IP de la interfaz que nos proporciona salida a Internet iptables -t nat -A POSTROUTING -s 192.168.30.0/24 -o eth1 -j MASQUERADE exit 0
Instalación y configuración WordPress
Instalación servidor base de datos MySQL
Instalamos MySQL y phpmyadmin en las Raspberry que contendrán la base de datos de la plataforma Wordpress. Una vez instalados, creamos un usuario con todos los privilegios para cualquier base de datos.
pi@BERRY-04:~$ sudo apt install mysql-server mysql-client phpmyadmin pi@BERRY-04:~$ sudo su root@BERRY-04:/home/pi# mysql -u root MariaDB [(none)]> CREATE USER 'pi'@'%' IDENTIFIED BY 'woseberry'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'pi'@'%'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit;
pi@BERRY-05:~$ sudo apt install mysql-server mysql-client phpmyadmin pi@BERRY-05:~$ sudo su root@BERRY-05:/home/pi# mysql -u root MariaDB [(none)]> CREATE USER 'pi'@'%' IDENTIFIED BY 'woseberry'; MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'pi'@'%'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit;
Creamos una base de datos llamada wordpress y un usuario con el mismo nombre con permisos sobre esa base de datos.
pi@BERRY-04:~$ sudo mysql -u root -p MariaDB [(none)]> CREATE DATABASE wordpress; MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wordpress'@'%' IDENTIFIED BY 'woseberry'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit;
pi@BERRY-05:~$ sudo mysql -u root -p MariaDB [(none)]> CREATE DATABASE wordpress; MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wordpress'@'%' IDENTIFIED BY 'woseberry'; MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> exit;
A continuación modificamos la dirección IP por defecto del archivo 50-server.cnf y en la línea bind-address ponemos la IP 0.0.0.0 para que escuche peticiones provinientes de cualquier dirección IP.
pi@BERRY-04:~$ sudo nano /etc/mysql/mariadb-conf.d/50-server.cnf [mysqld] bind-address = 0.0.0.0 pi@BERRY-04:~$ sudo service mysql restart
pi@BERRY-05:~$ sudo nano /etc/mysql/mariadb-conf.d/50-server.cnf [mysqld] bind-address = 0.0.0.0 pi@BERRY-05:~$ sudo service mysql restart
Instalación servidor web apache
Instalamos el servidor web apache2 y sus dependencias en las Raspberry correspondientes.
pi@BERRY-02:~$ sudo apt-get install apache2 php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-gd php7.0-imap php7.0-mcrypt php7.0-recode php7.0-tidy php7.0-xmlrpc
pi@BERRY-03:~$ sudo apt-get install apache2 php7.0 libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-gd php7.0-imap php7.0-mcrypt php7.0-recode php7.0-tidy php7.0-xmlrpc
Descarga, instalación y configuración Wordpress
En primer lugar descargamos wordpress de su página oficial.
pi@BERRY-02:~$ wget https://es.wordpress.org/wordpress-4.9.5-es_ES.zip
pi@BERRY-03:~$ wget https://es.wordpress.org/wordpress-4.9.5-es_ES.zip
Descomprimimos Wordpress y copiamos el contenido de la carpeta en el directorio /var/www/html
pi@BERRY-02:~$ unzip wordpress-4.9.5-es_ES.zip pi@BERRY-02:~$ sudo cp -R wordpress/* /var/www/html
pi@BERRY-03:~$ unzip wordpress-4.9.5-es_ES.zip pi@BERRY-03:~$ sudo cp -R wordpress/* /var/www/html
Ya que hemos copiado el contenido de la carpeta wordpress directamente en el directorio por defecto del servidor web, eliminamos la página de ejemplo de Apache2.
pi@BERRY-02:~$ sudo rm /var/www/html/index.html
pi@BERRY-03:~$ sudo rm /var/www/html/index.html
Copiamos el archivo de configuración de ejemplo de Wordpress.
pi@BERRY-02:~$ sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
pi@BERRY-03:~$ sudo cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
Cambiamos el propietario y los permisos a los archivos de Wordpress.
pi@BERRY-02:~$ sudo chown -R www-data:www-data /var/www/html/ pi@BERRY-02:~$ sudo chmod -R 755 /var/www/html/
pi@BERRY-03:~$ sudo chown -R www-data:www-data /var/www/html/ pi@BERRY-03:~$ sudo chmod -R 755 /var/www/html/
Activamos los módulos correspondientes de Apache2 para que Wordpress funcione correctamente.
pi@BERRY-02:~$ sudo a2enmod headers pi@BERRY-02:~$ sudo a2enmod rewrite
pi@BERRY-03:~$ sudo a2enmod headers pi@BERRY-03:~$ sudo a2enmod rewrite
Reiniciar Apache2 para aplicar los cambios.
pi@BERRY-02:~$ sudo service apache2 restart
pi@BERRY-03:~$ sudo service apache2 restart
Modificamos el archivo de configuración wp-config.php para vincularlo con la base de datos correspondiente.
pi@BERRY-02:~$ sudo nano /var/www/html/wp-config.php
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpress'); /** MySQL database password */ define('DB_PASSWORD', 'woseberry'); /** MySQL hostname */ define('DB_HOST', '192.168.30.2'); /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', '');
pi@BERRY-03:~$ sudo nano /var/www/html/wp-config.php
// ** MySQL settings - You can get this info from your web host ** // /** The name of the database for WordPress */ define('DB_NAME', 'wordpress'); /** MySQL database username */ define('DB_USER', 'wordpress'); /** MySQL database password */ define('DB_PASSWORD', 'woseberry'); /** MySQL hostname */ define('DB_HOST', '192.168.30.3'); /** Database Charset to use in creating database tables. */ define('DB_CHARSET', 'utf8'); /** The Database Collate type. Don't change this if in doubt. */ define('DB_COLLATE', '');
Ahora solo nos falta completar el proceso de instalación desde la interfaz web. Para ello, en la barra de direcciones de un navegador web, escribimos el dominio o la dirección IP del servidor de la siguiente forma http://dominio_o_IP
En nuestro caso, accederemos mediante el dominio:
https://woseberry.tk
Balanceo de carga - HAProxy
Instalación y configuración HAProxy
Instalamos el programa HAProxy
pi@BERRY-01:~$ sudo apt install haproxy
Para poder iniciar el balanceador de carga, debemos entrar en el archivo /etc/default/haproxy y modificar el valor por defecto de la línea "ENABLED" por el valor 1
pi@BERRY-01:~$ sudo nano /etc/default/haproxy
... ENABLED=1
En el archivo de configuración de HAProxy deberemos introducir los parámetros necesarios para que la BERRY-01 sea capaz de balancear la carga entre los diferentes Wordpress. Además también deberá conservar las sesiones pertinentes para que un usuario pueda iniciar sesión y no la pierda mientras navega por las diferentes páginas o realiza una compra. Para ello editaremos el archivo /etc/haproxy/haproxy.cfg
pi@BERRY-01:~$ sudo nano /etc/haproxy/haproxy.cfg
... frontend woseberry bind *:80 bind *:443 ssl crt /etc/apache2/ssl/woseberry.pem default_backend apaches backend apaches balance leastconn cookie SRVNAME insert server BERRY-02 192.168.30.2:443 check cookie BERRY-02 check ssl verify none server BERRY-03 192.168.30.3:443 check cookie BERRY-0r check ssl verify none