Ir al contenido
Código en GitHub (se abre en una pestaña nueva)

Documentación · Guías

Desplegar el sitio

Cómo subes el sitio a un servidor, qué sube y qué borra Ehundu, y qué hacer cuando cambias de dirección.

Versión 0.16

Desplegar es compilar el sitio y subirlo al servidor con una sola orden. Dices adónde en sitio.yml. Esto es para un FTP, que es lo que ofrece casi cualquier alojamiento compartido:

despliegue:
  destino: ftp
  servidor: ftp.ejemplo.com
  usuario: ana
  ruta: /public_html

La contraseña no va ahí, porque sitio.yml se comparte y se versiona. Va en .secretos.yml, que no:

despliegue:
  clave: 'la-contraseña'

Y lo subes en dos pasos: primero mira qué haría, luego hazlo.

php ehundu.phar desplegar --simular
php ehundu.phar desplegar

Qué sube y qué borra

desplegar compila el proyecto entero, como compilar. Si hay errores, no publica nada. Si no, compara lo compilado con lo que ya hay en el servidor y sube solo lo nuevo o lo que ha cambiado. Para saberlo, deja en el destino un fichero, .ehundu.json, con la lista de lo que ha subido, cada fichero con su MD5 y su tamaño. Cualquier máquina que despliegue el sitio ve lo mismo, así que puedes publicar desde tu portátil o desde otro ordenador.

Lo importante es lo que no hace: borra solo lo que subió él. Lo que haya en el servidor y no esté en ese fichero no se toca nunca, sea el fichero con el que verificaste un dominio, el .well-known de un certificado o un formulario en PHP que alguien dejó ahí. La contrapartida es que, la primera vez que despliegas sobre un sitio que ya existía, los ficheros del sitio anterior se quedan hasta que los quites a mano.

Los ficheros suben primero (el CSS, las imágenes), luego las páginas y al final el sitemap y el feed, para que una página nueva no enlace algo que todavía no está. Si el despliegue se corta, el siguiente sigue donde se quedó.

Cada destino

Destino Qué necesita
carpeta Una carpeta de tu máquina, fuera del proyecto: un servidor web local, una carpeta sincronizada, un disco de red.
ftp La extensión ftp de PHP. Por defecto va cifrado (FTPS); con cifrado: no va sin cifrar, y entonces la contraseña viaja a la vista.
sftp Contraseña (clave) o clave privada (clavePrivada, y frase si la lleva). Pide además la huella del servidor.
s3 Cualquier servicio compatible con S3: AWS, Scaleway, Cloudflare R2, Backblaze, Hetzner. Lleva servidor, region, cubo y usuario.

Con SFTP, la primera vez el despliegue se detiene y te dice cuál es la huella del servidor. Compruébala con quien lo administra y anótala en sitio.yml (huella:): así sabes que subes al servidor que crees y no a otro.

Contraseñas

Van siempre en .secretos.yml, entre comillas simples. Sin las comillas, YAML lee algunas contraseñas de otra manera sin avisar: lo que va detrás de # es un comentario, y una que empieza por !, *, @ o % ni siquiera se lee. Si una comilla simple forma parte de la contraseña, se escribe doble ('l''arte'). Y si pones una contraseña en sitio.yml, el despliegue se detiene.

Cuando cambias la dirección del sitio

Ehundu anota en .ehundu.json de qué sitio es el destino. Si no coincide con la url de tu sitio.yml, se detiene antes de tocar nada. Lo normal es que la ruta esté mal, por ejemplo en un sitio.yml copiado de otro sitio que comparte servidor, y desplegar ahí borraría todo lo del otro.

Si es el mismo sitio con otra dirección (otro dominio, con www o sin él, de http a https), lo confirmas con --todo:

php ehundu.phar desplegar --todo

Sube todo aunque no haya cambiado, y es también lo que necesitas si alguien ha tocado a mano los ficheros del servidor.

Lo que no hace

Nada después de desplegar: no avisa a otros servicios ni vacía la caché de una CDN. No hay variables de entorno para las contraseñas. Y no hay bloqueo: si dos máquinas despliegan el mismo sitio a la vez, el fichero .ehundu.json puede quedar mal. Se arregla con --todo.

El detalle está en el despliegue y en sitio.yml.