Deploy en 1and1 utilizando Git
El post de hoy no va a ser muy largo ni muy técnico, pero creo que si que va a ser muy útil para aquellos que como yo sigáis utilizando el hosting compartido Linux de 1and1 para vuestras webs.
Lo primero que debéis saber es que nos vamos a conectar al hosting mediante SSH por lo que, si utilizáis Windows como es mi caso, tendréis que instalar algún cliente del tipo de Putty. En caso de que uséis Linux o macOS podréis conectaros a través del terminal.
Pues bien, ahora tendremos que saber cuáles son nuestros datos de conexión, para lo que accederemos al panel de 1and1 y buscaremos la opción de “Acceso SSH (Secure Shell)”.
En esa página podremos ver tanto el nombre del alojamiento, como el nombre de usuario y se nos explicará que la contraseña es la misma que para el usuario principal del FTP, es decir, no podremos conectarnos con cuentas secundarias que hayamos creado para el servicio FTP.
Comenzando con el proceso
Una vez que ya estamos conectados, tenemos que crear un directorio para nuestro proyecto, dentro de éste crearemos dos directorios más, uno donde estará nuestro repositorio y otro donde se copiará realmente el proyecto, a este último es donde tendrá que apuntar el dominio que vayamos a utilizar.
En el ejemplo llamaremos a estos dos directorios repo y live.
Ahora tenemos que iniciar Git en el directorio llamado repo, y lo haremos con el siguiente comando:
git init --bare
Con este comando lo que hacemos es iniciar un repositorio sin working copy, algo parecido a lo que ocurre en los repositorios con los que trabajamos en Bitbucket o GitHub.
La parte importante
Para el siguiente paso tendremos dos opciones.
La primera es la de crear un archivo llamado post-receive con el contenido que veréis a continuación, y subirlo mediante FTP a la carpeta hooks que se encuentra dentro del repositorio que acabamos de inicializar.
La segunda opción es la de crear el archivo directamente desde la consola usando vi o cat, a fin de cuentas el resultado va a ser el mismo.
#!/bin/sh
GIT_WORK_TREE=”RUTA_CARPETA_LIVE” git checkout -f
chmod +x hooks/post-receive
Para obtener el path para “RUTA_CARPETA_LIVE” podremos usar el comando pwd dentro de la carpeta live, algo que nos garantizará que escribiremos el correcto.
Ahora solo nos quedará darle permisos chmod 715 al archivo que acabamos de crear, bien mediante el siguiente comando:
chmod ug+x post-receive
O bien mediante un cliente como Filezilla, de nuevo, algo que queda a vuestra elección.
Últimos pasos
Ya solo nos quedará configurar el remoto en nuestro cliente de Git favorito, si es que no gestionamos todo a través de comandos, utilizando la misma dirección que hemos usado para conectarnos a través de SSH pero especificando en que directorio está nuestro repositorio:
ssh://dirección/~/repositorios/repo
Por último y para ver que todo se ha configurado correctamente, probaremos haciendo un push de la rama master, por ejemplo.
Cabe destacar que al tener que conectarnos mediante SSH al repositorio alojado en 1and1, tendremos que conocer las credenciales de acceso que hemos utilizado al principio del artículo, es decir, si trabajan varias personas con la misma cuenta de hosting deberán conocerlas.