En esta serie de posts voy a recopilar los pasos para crear una web en wordpress desde cero.
La web que voy a crear en esta serie de posts es la del escuadron virtual de simulación aérea militar GCv Bullfighters. Este escuadrón, de reciente creación, ha sido fundado por miembros veteranos del mítico escuadrón de vuelo español Escuadron 69. En este tipo de escuadrones virtuales se simulan misiones áreas con decenas de pilotos virtuales sobre la plataforma DCS (Digital Combat Simulator). Aplicando normas y procediminetos aereos los más cercanos a la realidad posibles. Basados en procedimientos como la Naval Air Training and Operating Procedures Standardization (NATOPS).
Después de esta breve introducción... ¿Porque Wordpress? Por tres razones principales:
- Rapidez y sencillez de uso (no tenía intención de crear un site desde cero para esto).
- Conocer una nueva "tecnología".
- Conocer el CMS con más presencia en internet.
Para hacerlo vamos a utilizar docker en el entorno de desarrollo, pero en productivo voy a montar el stack LAMP desde cero. Así vemos las dos opciones posibles.
Configurando nuestro entorno de Desarrollo:
Las 3 piezas (ignorando el sistema operativo) que soportan la infraestructura de una web wordpress son:
- mysql - Contenedor para mysql
- server - Contenedor para wordpress
- phpmyadmin - Contenedor para phpmyadmin
En el primer caso, utilizando docker simplemente necesitamos un docker-compose.yml que describa los tres contenedores y como interactuan entre si:
version: "3" networks: env-net: driver: bridge services: mysql: image: mysql:5.7 container_name: mysqlcontainer tty: true ports: - "4208:3306" volumes: - "/var/libclea/mysql/:/var/lib/mysql" environment: MYSQL_DATABASE: <wp_database> MYSQL_USER: <wp_user> MYSQL_PASSWORD: <wp_pass> MYSQL_ROOT_PASSWORD: <password> networks: - env-net server: image: wordpress:latest container_name: wordpresscontainer ports: - "4282:80" volumes: - /var/www/html/:/var/www/html environment: WORDPRESS_DB_HOST: mysqlcontainer WORDPRESS_DB_NAME: <wp_database> WORDPRESS_DB_USER: <wp_user> WORDPRESS_DB_PASSWORD: <wp_pass> depends_on: - mysqlcontainer networks: - env- net phpmyadmin: image: phpmyadmin/phpmyadmin container_name: phpmyadmincontainer ports: - "4283:80" environment: PMA_HOST: mysqlcontainer MYSQL_ROOT_PASSWORD: <phpma_pass> depends_on: - mysqlcontainer networks: - env-net
Para lanzar nuestro entorno únicamente deberemos ejecutar el comando: sudo docker-compose up
isma@ismalinux ~/Desktop/code/bullfighters master ± sudo docker-compose up Starting mysqlcontainer ... done Starting wordpresscontainer ... done Starting phpmyadmincontainer ... done Attaching to mysqlcontainer , wordpresscontainer, phpmyadmincontainer mysqlcontainer | 2023-02-05 08:34:39+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.41-1.el7 started. mysqlcontainer | 2023-02-05 08:34:40+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' mysqlcontainer | 2023-02-05 08:34:40+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.41-1.el7 started. mysqlcontainer | '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock' ...
Esto lanzará nuestros contenedores:
isma@ismalinux ~/Desktop/code/bullfighters master ± docker container list CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0f674a2baf78 wordpress:latest "docker-entrypoint.s…" 36 hours ago Up About a minute 0.0.0.0:4282->80/tcp, :::4282->80/tcp wordpresscontainer 950b50249e34 phpmyadmin/phpmyadmin "/docker-entrypoint.…" 36 hours ago Up About a minute 0.0.0.0:4283->80/tcp, :::4283->80/tcp phpmyadmincontainer d86d384d185b mysql:5.7 "docker-entrypoint.s…" 36 hours ago Up About a minute 33060/tcp, 0.0.0.0:4208->3306/tcp, :::4208->3306/tcp mysqlcontainer
Los contenedores dependen de dos estructuras de ficheros en nuestro sistema, que son /var/libcea/ (MySQL) y /var/www/html/ (Sitio Wordpress). Prestar especial atención a los owner de cada carpeta.
isma@ismalinux ~/Desktop/code/bullfighters master ± ls /var/libclea -l total 4 drwxr-xr-x 6 999 isma 4096 Feb 5 09:35 mysql isma@ismalinux ~/Desktop/code/bullfighters master ± ls /var/www/html -l total 244 -rw-r--r-- 1 www-data www-data 405 Feb 6 2020 index.php -rw-r--r-- 1 www-data www-data 19915 Jan 30 21:33 license.txt -rw-r--r-- 1 www-data www-data 7389 Jan 30 21:33 readme.html -rw-r--r-- 1 www-data www-data 7205 Sep 17 01:13 wp-activate.php drwxr-xr-x 9 www-data www-data 4096 Nov 15 20:03 wp-admin -rw-r--r-- 1 www-data www-data 351 Feb 6 2020 wp-blog-header.php -rw-r--r-- 1 www-data www-data 2338 Nov 10 2021 wp-comments-post.php -rw-rw-r-- 1 www-data www-data 5480 Jan 12 01:03 wp-config-docker.php -rw-r--r-- 1 www-data www-data 5584 Jan 29 09:04 wp-config.php -rw-r--r-- 1 www-data www-data 3001 Dec 14 2021 wp-config-sample.php drwxr-xr-x 8 www-data www-data 4096 Feb 3 23:38 wp-content -rw-r--r-- 1 www-data www-data 5543 Sep 20 17:44 wp-cron.php drwxr-xr-x 27 www-data www-data 16384 Nov 15 20:03 wp-includes -rw-r--r-- 1 www-data www-data 2494 Mar 19 2022 wp-links-opml.php -rw-r--r-- 1 www-data www-data 3985 Sep 19 10:59 wp-load.php -rw-r--r-- 1 www-data www-data 49135 Sep 20 00:26 wp-login.php -rw-r--r-- 1 www-data www-data 8522 Oct 17 13:06 wp-mail.php -rw-r--r-- 1 www-data www-data 24587 Sep 26 12:17 wp-settings.php -rw-r--r-- 1 www-data www-data 34350 Sep 17 02:35 wp-signup.php -rw-r--r-- 1 www-data www-data 4914 Oct 17 13:22 wp-trackback.php -rw-r--r-- 1 www-data www-data 3236 Jun 8 2020 xmlrpc.php isma@ismalinux ~/Desktop/code/bullfighters master ±
El contenedor de wordpress contiene un servidor apache por defecto preconfigurado, por lo que no tenemos que hacer nada adicional. Simplemente accediendo por localhost en el puerto 4282 podremos acceder a la instancia de wordpress y configurar nuestro sitio (instalar un tema, configurarlo, etc.) y por el puerto 4283 acceder a la instancia de phpadmin. Este último punto será importante de cara al paso a producción, ya que aquí exportaremos nuestra base de datos como paso previo a importarla en producción.