Instalar LAMP con WordPress para backup de Blog en Raspberry PI 3

Aprovechando que esta semana pasada era algo así como vacacional aunque en mi caso ha resultado convaleciente, he dedicado mi tiempo a temas técnicos que me hacen olvidar la inmediatez, lo cual a veces resulta tranquilizante y otras perturbador, como por ejemplo aprender a manejar herramientas de diseño gráfico como Inkscape (para gráficos vectoriales) que necesito para crear portadas profesionales de los libros que próximamente iré maquetando con Scribus (otra necesidad imperiosa para lo mismo).

Entre las diversas tareítas que tenía pendientes, una de ellas era cada día más «acuciante» para la persona más obsesa de las copias de seguridad que conozco: Hacer BackUp de mi blog.

¡Y por fin lo he logrado!

Lo he restaurado repetidas veces en una Raspberry PI 3 que tengo desde hace unos meses y a la que le dedico unas cuantas horas a la semana. De momento, había instalado diversos sistemas operativos pensando que podía servir para sustituir a un PC viejuno, pero ha resultado ser mucho más útil como servidor de lo que sea, desposeída de pantalla y de la necesidad de un entorno gráfico que consume su escasa memoria RAM.

El proceso que he seguido (después de mucha «prueba y error») ha sido más o menos el siguiente:

_______________________________________________________________
Preparando LAMP para restauración de BLOG de giusseppe.net
Linux Apache Mysql Php
_______________________________________________________________

Para Instalar PHP 5 es preciso añadir al final de /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi

sudo apt-get update
sudo apt-get install -y apache2 mysql-server php5 php5-curl php5-cli php5-mysql php5-gd phpmyadmin ntfs-3g

(NO HACER) sudo apt-get install php7.0

Habilitar el módulo de reescritura en Apache
Opción 1.- sudo a2enmod rewrite
Opción 2.-
cd /etc/apache2/mods-enabled
sudo ln -s ../mods-available/rewrite.load

Y para que se use php5 en lugar de php7:
>>> sudo update-alternatives –set php /usr/bin/php5

Deshabilitar (php7.0) y habilitar (php5) en Apache:
sudo a2dismod php7.0
sudo a2enmod php5
sudo service apache2 restart

_______________________________________________________________
Preparar BASE DE DATOS para RESTAURAR el BLOG:

Crear una base de datos como la del blog con el usuario y contraseña del blog (ver datos en wp-config.config de Backup)
sudo mysql -u root -p

MariaDB [(none)]> create database carmend1_wrdp2;
MariaDB [(none)]> create user carmend1_wrdp2;
MariaDB [(none)]> set password for carmend1_wrdp2 = password("LADELARCHIVOCONFIGPHP");
MariaDB [(none)]> grant all PRIVILEGES on carmend1_wrdp2.* to carmend1_wrdp2@localhost identified by 'LADELARCHIVOCONFIGPHP';
/// PARA ASEGURARSE de QUE ESTÁ CREADO:
select User from mysql.user;
MariaDB [(none)]> exit;

_______________________________________________________________
Instalar WordPress (en /blog)
https://www.atareao.es/tutorial/raspberry-pi-primeros-pasos/wordpress-en-la-raspberry/
_______________________________________________________________

cd /var/www/html
sudo wget http://wordpress.org/latest.tar.gz
sudo tar xfz latest.tar.gz
sudo mv wordpress blog
sudo rm -f latest.tar.gz
sudo chown -R www-data:www-data /var/www/html
sudo find /var/www/html -type d -print -exec chmod 775 {} \;
sudo find /var/www/html -type f -print -exec chmod 664 {} \;

_______________________________________________________________
Copiar toda la estructura de archivos de
wp-content/upload /themes /others /plugins
Organizarla para que tenga estructura de carpetas

Opción 1.- Utilizar acceso NFS

Opción 2.- Instalar soporte NTFS para leer y montar pendrives:
(NO HACER si ya está hecho) sudo apt-get install ntfs-3g
sudo mkdir /media/mikomono
sudo chown pi:pi /media/mikomono
sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/sda1 /media/mikomono

Copiar el contenido del wp-content al blog (Según proceda modificar esto)
sudo cp -rf /media/mikomono/20180320/wp-content/. /var/www/html/blog/wp-content/.
Copiar wp-config.config en wp-config.php
sudo cp /media/mikomono/20180320/site-data/wp-config.config /var/www/html/blog/wp-config.php
cd
cp /media/mikomono/20180320/site-data/giusseppe.net-blog_wp.db .

_________________________
Restoring the WordPress Database Using MySQL Commands
Copiarlo previamente en ~/giusseppe.net-blog_wp.db
Modificar el número de prefijo de la base en el archivo.db de datos por wp_
_________________________

mysql -u carmend1_wrdp2 -p
CONTRASEÑA la de wp-config.config

mysql > use carmend1_wrdp2;
mysql > source giusseppe.net-blog_wp.db

Cambiar datos del dominio anterior (giusseppe.net) si procede a localhost o lo que sea
(en phpmyadmin)
UPDATE wp_posts SET guid = REPLACE ( guid, 'giusseppe.net/blog', 'raspi.net/blog' );
UPDATE wp_posts SET post_content = REPLACE ( post_content, 'giusseppe.net/blog', 'raspi.net/blog' );
UPDATE wp_postmeta SET meta_value = REPLACE ( meta_value, 'giusseppe.net/blog', 'raspi.net/blog' );

ALTERNATIVA:
Usar /media/GSPDISK/almacen/BackUps/BLOG/searchreplacedb2.php
(Copiar en /blog y acceder a ello)

Necesario también cambiar el fichero de configuración de Apache para el SITE:
/etc/apache2/apache2.conf
o añadir datos en sites-enabled/000-default.conf


..otras directivas aqui
AllowOverride All (Asegurarse que no es NONE)

Crear archivo /var/www/html/blog/.htaccess
_________________________________
# BEGIN WordPress

RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]

# END WordPress
_________________________________

_______________________________________________________________
Cómo devolver acceso completo a root, si lo pierde, en MariaDB
(Versión por defecto de mysql-server)
_________________________
sudo mysql -u root

mysql>
use mysql;
update user set plugin='' where User='root';
flush privileges;
\q

sudo service mysql restart
_______________________________________________________________

_______________________________________________________________

REPONER PERMISOS en /var/www/html:

sudo chown -R pi:pi /var/www/html
sudo find /var/www/html -type d -print -exec chmod 775 {} \;
sudo find /var/www/html -type f -print -exec chmod 664 {} \;

REPONER PERMISOS en . (Si se es propietario de ese directorio)

find . -type d -print -exec chmod 775 {} \;
find . -type f -print -exec chmod 664 {} \;

Esto no es una broma