Migrare un'installazione Wordpress a Docker

From RVM Wiki
Revision as of 12:18, 16 June 2023 by Gabriele.vivinetto (talk | contribs) (Created page with "=Preparazione Reverse Proxy Apache= * Predisporre il certificato SSL * Assicurarsi che sia abilitato sudo a2enmod headers * Configurare il VirtualHost <pre> <VirtualHost *:...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Preparazione Reverse Proxy Apache

  • Predisporre il certificato SSL
  • Assicurarsi che sia abilitato
sudo a2enmod headers
  • Configurare il VirtualHost
<VirtualHost *:80>
   ServerAdmin admin@example.com
	ServerName www.example.com
	ServerAlias example.com

        DocumentRoot /var/www

        ErrorLog ${APACHE_LOG_DIR}/www.example.com.error.log
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/www.example.com.access.log combined

        RewriteEngine   on
        RewriteRule             ^/.well-known/acme-challenge/ - [L]
        RewriteCond             %{SERVER_PORT} ^80$
        RewriteRule             ^/(.*) https://%{SERVER_NAME}/$1 [L,R]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
        ServerAdmin admin@example.com
	ServerName www.example.com
	ServerAlias example.com

	DocumentRoot /var/www

    ErrorLog ${APACHE_LOG_DIR}/www.example.com-ssl.error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/www.example.com-ssl.access.log combined

	SSLEngine on
	SSLProtocol All -SSLv2 -SSLv3
	SSLCertificateKeyFile   /var/lib/dehydrated/certs/www.example.com/privkey.pem
	SSLCertificateFile      /var/lib/dehydrated/certs/www.example.com/fullchain.pem

	ProxyRequests Off
	ProxyPreserveHost On
    RequestHeader set X-Forwarded-Proto "https"
    RequestHeader set X-Forwarded-Port "443" 
    ProxyPass 		/ 	http://127.0.0.1:8901/
    ProxyPassReverse 	/ 	http://127.0.0.1:8901/
</VirtualHost>
</IfModule>

Risorse da migrare

  • Fare un dump di mysql
mysqldump | gzip > example.com.sql
  • Fare una tarball della sola wp-content
tar cvzf example.com.tar.gz wp-content/

Configurazione Container

  • Creare il docker-compose:
version: "3.1"
services:
    wp:
        image: wordpress:latest
        container_name: wordpress-example.com-app
        restart: unless-stopped
        ports:
            - 8901:80
        environment:
            WORDPRESS_DB_HOST: db
            WORDPRESS_DB_USER: example_com
            WORDPRESS_DB_PASSWORD: sVZaDMCmD0ohbguw
            WORDPRESS_DB_NAME: example_com
            #WORDPRESS_TABLE_PREFIX: wp_wlm_blog_
            VIRTUAL_HOST: www.example.com
            #LETSENCRYPT_HOST: exp0000.test-domain.de
            #LETSENCRYPT_EMAIL: xxxx@yyyy.zz
        volumes:
            - ./wordpress:/var/www/html
    db:
        image: mysql:5.7
        container_name: wordpress-example.com-db
        restart: unless-stopped
        environment:
            MYSQL_DATABASE: example_com
            MYSQL_USER: example_com
            MYSQL_PASSWORD: sVZaDMCmD0ohbguw
            MYSQL_ROOT_PASSWORD: wprootpass
        volumes:
            - ./db:/var/lib/mysql


  • Avviare il container
docker compose up
  • Provare a collegarsi all'url https: verificare che sia mostrata la schermata di installazione di wordpress, con il logo.
  • NON proseguire nell'installazione

Importazione risorse

  • Importare il DB
cat example.com.sql | docker exec -i   wordpress-example.com-db sh -c '/usr/bin/mysql -u root --password="$MYSQL_ROOT_PASSWORD" example_com'
  • Importare i files:
cd wordpress  # the directory name of the named volume in the project directory
rm -rf wp-content
tar xvzf ../example.com.tar.gz 
  • Il sito è ora operativo

Riferimenti