Categorías
Blog

Cómo montar un entorno local para WordPress en Mac sin MAMP ni XAMP

Recientemente he tenido que montar entornos de desarrollo locales para WordPress en varios equipo Mac bajo el sistema operativo MacOS Big Sur 11.0.1. En anteriores ocasiones había utilizado directamente MAMP o XAMP para montar estos entornos, pero en esta ocasión he preferido hacerlo sin ayuda de estas herramientas y, a modo de guía, he guardado una serie de notas que ahora publico en forma de post. Espero que pueda servirte de ayuda si has llegado hasta aquí buscando información para el mismo objetivo.

¿Qué necesitamos para tener nuestro entorno local WordPress de manera totalmente funcional? PHP, MySQL, Apache, y una copia de la versión más reciente de WordPress. Nada más.

PHP

Nuestro Mac con SO MacOS Big Sur 11.0.1 ya incluye la versión de PHP 7.3.22 instalada de forma nativa. Podemos comprobarlo a través del siguiente comando en nuestra consola:

php --version

Necesitaremos definir el fichero php.ini, en el que en caso de necesidad podremos realizar cambios en la configuración de PHP. Para esto copiaremos el fichero de modelo que incluye nuestra instalación de PHP de la siguiente forma:

sudo scp /private/etc/php.ini.default /private/etc/php.ini

Apache

Al igual que con PHP, en nuestra instalación de Mac ya encontramos una versión funcional de Apache. Podremos iniciarlo, detenerlo y reiniciarlo con los siguientes comandos:

sudo apachectl start

sudo apachectl stop

sudo apachectl restart

Podemos probar que vamos por buen camino iniciando Apache y accediendo en nuestro navegador a http://localhost, donde debemos ver el mensaje It works!.

A continuación debemos realizar algunos cambios en la configuración de Apache a través de la edición de algunos de sus ficheros. En primer lugar, editaremos el fichero /private/etc/apache2/httpd.conf, donde definiremos la carga de módulos necesarios para nuestro WordPress, la ruta de la instalación de nuestros proyectos y sus permisos, el usuario y el grupo que usará nuestro entorno y la llamada a los ficheros que configurarán nuestros dominios locales.

En primer lugar activaremos la carga de los módulos php7_module y rewrite_module. Dentro de httpd.conf buscaremos las siguientes líneas:

LoadModule alias_module libexec/apache2/mod_alias.so
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
#LoadModule php7_module libexec/apache2/libphp7.so
#LoadModule perl_module libexec/apache2/mod_perl.so

Debemos borrar la almohadilla que encontramos en la primera posición de esas líneas para que se active la carga de los módulos, con un resultado como el siguiente:

LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php7_module libexec/apache2/libphp7.so
#LoadModule perl_module libexec/apache2/mod_perl.so

A continuación, definiremos la ruta de nuestros proyectos buscando y editando la siguiente línea:

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">

Reemplazaremos el directorio definido por el directorio con el que nos encontremos más cómodos. En mi caso, prefiero tener una carpeta del dentro de mi carpeta de usuario, por lo que en mi caso tiene una forma como la siguiente:

DocumentRoot "/Users/minombre/dev"
<Directory "/Users/minombre/dev">

Solo unas líneas más abajo, definiremos la capacidad de reescritura de enlaces desde el fichero .htaccess, a través de las siguientes líneas:

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   AllowOverride FileInfo AuthConfig Limit
#
AllowOverride None

Debemos reemplazar None por All, quedando esta última línea de la siguiente forma:

AllowOverride All

Ahora configuraremos el usuario el grupo que utilizará nuestro entorno. Esto es importante para evitar los comunes errores de permisos a la hora de subir medios desde nuestro panel de administración de WordPress. Buscaremos las siguientes líneas:

<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run
httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www
</IfModule>

En este caso cambiaremos los valores marcados por los siguientes:

User minombre
Group staff

Y por último buscaremos la siguientes líneas para activar la llamada al fichero donde configuraremos los dominios locales:

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Al igual que hicimos con la carga de módulo, retiramos la almohadilla que ocupa la primera posición de la línea para activar esta carga. El resultado debe ser el siguiente:

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

Esto es todo lo que debemos hacer en httpd.conf. Ahora vamos a definir un dominio local para nuestro entorno. Para hacerlo, realizaremos cambios en dos ficheros. En primer lugar, definiremos la el dominio en el fichero /etc/hosts, donde nos encontraremos lo siguiente:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost

Aquí, simplemente añadiremos el dominio que queramos usar, quedando de la siguiente forma:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
127.0.0.1       miwordpress.local
255.255.255.255 broadcasthost
::1             localhost

Y a continuación, asignaremos este nuevo dominio a la ruta local en nuestro equipo donde tendremos la instalación de nuestro WordPress. Recordemos que previamente hemos definido la ruta donde tendremos nuestros proyectos, /Users/minombre/dev, así que incluiremos en esta ruta la carpeta con la instalación básica de WordPress que descargaremos desde es.wordpress.org.

Haremos esta asignación editando el fichero /private/etc/apache2/extra/httpd-vhosts.conf, en el que encontraremos dos ejemplos de cómo debemos realizar esta asignación. Uno de los modelos es el siguiente:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/usr/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/private/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

Simplemente debemos duplicar este ejemplo y adaptar las definiciones a nuestras necesidades:

<VirtualHost *:80>
    ServerAdmin miemail@midomio.com
    DocumentRoot "/Users/minombre/dev/miwordpress"
    ServerName miwordpress.local
    ErrorLog "/private/var/log/apache2/miwordpress.local-error_log"
    CustomLog "/private/var/log/apache2/miwordpress.local-access_log" common
</VirtualHost>

Esto es todo lo que debemos configurar relativo a Apache.

MySQL

Al contrario que de lo que sucede con PHP y Apache, MySQL no se encuentra instalado por defecto en nuestro Mac con MacOS Big Sur 11.0.1, así que tendremos que instalarlo manualmente. Realizaremos esta instalación a través de la herramienta Homebrew, así que, si aún no la tenemos instalada, lo haremos a través del siguiente comando:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Ahora que tenemos instalado Homebrew, ya podemos realizar la instalación de MySQL. En el momento de la edición de este post decidí instalar la última versión, 8.0.22:

brew install mysql@8.0.22

Y ahora también tenemos instalado MySQL en nuestro equipo. Al igual que con Apache, debemos conocer las instrucciones para iniciar, detener y reiniciar MySQL:

mysql.server start

mysql.server stop

mysql.server restart

Por último, debemos definir una contraseña para nuestro usuario root de MySQL o crear uno nuevo, y crear una base de datos para nuestro WordPress. Para realizar estas operaciones y gestionar las bases de datos utilizo la herramienta MySQL Workbench, que podéis descargar a través de mysql.com. Descargado e instalado, y con MySQL corriendo, arrancamos MySQL Workbench.

En primer lugar, crearemos una nueva base de datos vacía a través de la opción Create new scheme y le asignaremos un nombre. El resto de parámetros los dejaremos tal cual los ha definido MySQL Workbench por defecto. Y por último, debemos definir la contraseña para root o crear el nuevo usuario. Desde una pestaña Query ejecutaremos la siguiente instrucción para modificar el usuario root:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'micontraseña';
FLUSH PRIVILEGES;

Si lo que queremos es crear un nuevo usuario lo haremos desde la siguiente forma:

CREATE USER 'nombredeusuario'@'localhost' IDENTIFIED WITH mysql_native_password BY 'micontraseña';
FLUSH PRIVILEGES;

Hasta aquí todos los pasos para configurar nuestro entorno. Ahora solo debemos reiniciar nuestro Apache y nuestro MySQL y acceder al dominio local que hemos definido para iniciar la instalación de nuestro WordPress. ¡Ya puedes trabajar en local!

Categorías
Blog

Camilo Radio Player incluye la emisión de radios libres españolas

El día 8/11/20 ha sido desplegada una actualización de Camilo Radio Player que incluye una nueva funcionalidad en pruebas: la opción de escuchar una serie de radios libres con emisión desde España.

Para la integración de esta nueva funcionalidad se ha añadido a la aplicación una cabecera en la que encontramos un selector de país con el que podremos elegir entre las radios nacionales y provinciales de Cuba o una, por ahora, pequeña serie de radios libres de España.

Como adelantaba unas líneas atrás, es una funcionalidad en pruebas. Creo que tener la opción de conectar emisoras de más países es algo muy positivo, sin embargo, aún hay que analizar la viabilidad de la conexión con radios libres españolas debido a un inconveniente técnico muy concreto; en su mayoría, realizan las emisiones a través de protocolo de transferencia sin certificado de seguridad, impidiendo el streaming desde aplicaciones bajo dominios que cuenten con certificado, como es el caso de Camilo Radio Player. Puedes leer más acerca de las limitaciones del contenido mixto en este enlace.

¿Compensa poder mostrar solo una reducida parte del total de radios libres españolas? Es lo que analizaré las próximas semanas. También analizaré la opción de incluir radios de otros países de habla hispana, ya que aunque no sea segura la integración final de radios libres de España, poder seleccionar radios de otros países sí apunta al objetivo final de Camilo Radio Player.

Categorías
Blog

Publicada la aplicación web Camilo Radio Player

El día 18/04/2020 he abierto al público Camilo Radio Player, la última aplicación en la que he estado trabajando durante los ratos libres de los últimos meses. Es una aplicación web dedicada a la reproducción online de todas las radios nacionales y provinciales de Cuba. Ha sido desarrollada en React y en la que se administra su contenido a través de endpoints generados con WordPress.

Camilo comienza siendo nada más que una herramienta de uso personal, con el objetivo de poder escuchar las emisoras de radio cubanas que habitualmente sintonizo de una forma más sencilla, orientada a dispositivos móviles, y que me permitiera cambiar de emisora sin tener que cambiar de site y repetir varios clics. Sin embargo, una vez terminada, he creído conveniente hacerla pública por si a cualquier persona también le pudiera servir como herramienta que le facilite estar informado sobre la actualidad de La Mayor de las Antillas.

Esta aplicación no tiene ningún tipo de objetivo comercial. No se ha insertado publicidad, ni ningún servicio de recogida de estadísticas de visitas o seguimiento de usuarios. Es, tan solo, una herramienta desinteresada y compartida.

Categorías
Bitácora de Tympanum

Abierta rama de desarrollo de Tympanum

Tras la publicación de la beta de Tympanum y la recepción de los primeros feedbacks por parte de usuarios y desarrolladores, se empieza a arrojar luz sobre las mejoras y bugs del theme. Por este motivo he publicado una rama para desarrollo sobre la cual he empezado a volcar mejoras.

Todos los que estéis interesados en testar o revisar o simplemente curiosear, os invito a que paséis directamente por la rama develop:

https://github.com/santiagojimenez/tympanum/tree/develop

Por ahora y hasta que complete el readme, que detallará tanto el funcionamiento como el concepto y orientación de futuro de Tympanum, los reportes podéis hacerlos a sj@sjim.dev.

Categorías
Bitácora de Tympanum

La versión beta de Tympanum ya es pública

Como había anunciado anteriormente, hoy he publicado el repositorio de Tympanum con la versión beta, por lo que desde este momento cualquiera es libre de revisar el código, probarlo, y por supuesto, realizar comentarios, sugerencias o reportar errores.

Comienza una fase en la que es importante la colaboración pública, ya que tras tantos meses de desarrollo, llega un momento en que ciertas cosas se pasan por alto. Por ese motivo, toda sugerencia o reporte será tan bienvenida como agradecida.

Los próximos pasos serán, primero dejar un periodo de tiempo no inferior a un mes, en el que recibir feedback y esperar una visión más externa, y después dar comienzo a otra fase de desarrollo en la que aplicar todos los reportes y mejoras obtenidas previamente y dar a luz una versión 1.0.0.

Hoy, el día de la primera publicación, es un día importante. Han pasado muchas cosas desde que inicié este proyecto hasta ahora. Pero tengo la sensación de que lo verdaderamente bueno, empieza ahora.

https://github.com/santiagojimenez/tympanum

Categorías
Bitácora de Tympanum

La beta de Tympanum se abre el 27/10/2019

Tras el proceso de refactorización general, queda fijada fecha para la publicación del repositorio con la versión beta de Tympanum, siendo abierto en GitHub el 27/10/2019.

Esta versión, la 0.2.0, es una versión estable, que estará dispuesta para su instalación y recepción de feedback por parte de distintos desarrolladores y usuarios. Una vez recibido este feedback, se procederá a realizar las modificaciones y optimizaciones necesarias y se publicará una versión 1.0.0.

No será hasta la publicación de esta versión productiva cuando se comenzará el desarrollo de adaptación del theme a los criterios técnicos necesarios para su publicación en el repositorio de themes de WordPress.

De cara a este lanzamiento, se retira de este blog el theme Tympanum en desarrollo y se instala el reciente Twenty Nineteen. Volvemos a lo básico para el blog, por ahora.

Categorías
Bitácora de Tympanum

Refactorización

Después de una parada programada dentro de la planificación de lanzamiento, se retoma el desarrollo de Tympanum.

El theme se encuentra en un avanzado estado de desarrollo, en ese momento en el que, tras meses de trabajo y haber interiorizado todo el código, se vienen a la cabeza multitud de mejoras y nuevas funcionalidades. Sin embargo, es imprescindible trazar la línea divisoria entre las funcionalidades básicas que deben ir en una versión 1.0.0 y las que deben agregarse una vez tomado contacto con el usuario final.

Por lo tanto, ha comenzado el tiempo de refactorización; optimizar funciones, limpiar y comentar código y pulir detalles de cara a la primera subida a repositorio público. Sigue adelante la fecha avanzada para su publicación de Octubre de 2019.

Categorías
Bitácora de Tympanum

Agregados página de podcast, buscador y división de ficheros CSS a Tympanum

Más avances significativos en el desarrollo de Tympanum. La página de podcast ya está lista y funcionando. Definitivamente contendrá, además del listado de los episodios asociados, el título y la descripción, campos personalizados para un logo, una cuenta de twitter y un enlace a un sitio web asociado.

El buscador, así como la vista de resultados de búsqueda, también está terminado, situándose de forma absoluta en la parte superior tras un clic en el icono de la cabecera.

Y, finalmente y tras valorar muchas opciones, los estilos quedarán repartidos en dos ficheros CSS, uno con el contenido mobile y otro con los estilos para escritorio administrado con el parámetro $media de wp_enqueue_style.

Categorías
Bitácora de Tympanum

La agregación de audios en los episodios ya se integra en Gutenberg

La edición de episodios en el panel de control cuenta con nuevo avance: la agregación de los audios queda integrada dentro de la interface del nuevo editor de contenido de WordPress.

Hasta ahora, los campos personalizados se ubicaban en la parte inferior del editor visual, rompiendo la experiencia de edición sin distracción. Desde este momento estos campos se sitúan junto al resto de campos nativos a la derecha del editor.

También se ha definido las fuentes permitidas para el audio agregado; podrán adjuntarse audios subidos a la biblioteca de medios o URL directas externas a ficheros MP3 u OGG.

Categorías
Bitácora de Tympanum

Tympanum: un nuevo rumbo

Las dos finalidades que impulsaron el nacimiento de este proyecto fueron crear una herramienta que respondiera a las necesidades de un site de gestión y difusión de podcast por parte de agrupaciones de comunicación o radios libres, y que esta herramienta estuviese disponible desde el repositorio WordPress para compartir con la comunidad conocimientos y metodología.

Sin embargo, según avanza el desarrollo, algunas de las necesidades que implican estas dos finalidades han entrado en contradicción. Es cierto que se puede optar por soluciones intermedias, pero también es cierto que querer abarcar de más complica el mantenimiento y la comodidad del usuario con la UX y los procesos de instalación. La pregunta es, ¿existe una prioridad en cuanto a las finalidades? En ese caso, ¿a qué criterios responde esa prioridad? La respuesta a esta pregunta, tras profunda consideración, es que tendrá prioridad la finalidad que más útil pueda ser en base a oferta actual, es decir, la gestión y difusión de podcast por parte de agrupaciones de comunicación o radios libres.

Ya existen themes o plugins en el repositorio WordPress que hacen de un site un espacio para el podcasting, pero no conozco themes de código abierto para estas funciones desarrollado hacia un usuario objetivo tan específico. He vivido de cerca durante muchos años el trabajo de estos proyectos de comunicación libre y la necesidad de un theme enfocado estos proyectos es mayor.

Por este motivo, el desarrollo de Tympanum se realizará atendiendo estas necesidades, se publicará a través de un repositorio público GitHub como fuente principal y, una vez publicada la versión 1.0.0 y con el necesario periodo de feedbacks y reflexión, se procederá a su adaptación en base a los requerimientos del repositorio WordPress y su proceso de validación.

No obstante, por su condición de código abierto seguirá conservando la posibilidad de ser fuente de consulta y uso por la comunidad WordPress y por cualquier visitante.