|
| 1 | ++++ |
| 2 | +author = ["Jesus R. Gonzalez L."] |
| 3 | +date = "2019-12-06T10:07:34+09:00" |
| 4 | +title = "Como construir sitios web con HUGO" |
| 5 | +series = ["Tutorial"] |
| 6 | ++++ |
| 7 | + |
| 8 | +Esta publicación tiene como objetivo enseñar a como construir sitios web utilizando HUGO y como subirlo a un hosting. |
| 9 | + |
| 10 | +Hugo es un generador de sitios web estáticos construidos con el lenguaje GO, fue creado en el año 2013. Con él se pueden generar sitios web en poco tiempo, versátiles y muy rapidos de hecho su lema es: "The world’s fastest framework for building websites". Algunos casos notables en donde se construyeron sitios web con HUGO son: |
| 11 | + |
| 12 | +- Kubernetes (<https://kubernetes.io/>) |
| 13 | +- Netlify (<https://www.netlify.com/>) |
| 14 | +- Smashingmagazine (<https://www.smashingmagazine.com/>) |
| 15 | +- Cloudflare (<https://developers.cloudflare.com/>) |
| 16 | +- Litecoin (<https://litecoin.org/>) |
| 17 | + |
| 18 | +Para trabajar con Hugo necesitamos instalar los siguientes requerimientos: |
| 19 | + |
| 20 | +1. __Git__ (Software para control de versiones) |
| 21 | +2. __GO__ (Lenguaje de Programación) |
| 22 | +3. __Chocolatey__ (Manejador de paquetes de Windows. Utilice Windows 7) |
| 23 | + |
| 24 | +HUGO también tiene instrucciones para instalarse en otros sistemas operativos, para más información visite este link: |
| 25 | +<https://gohugo.io/getting-started/installing/#quick-install> |
| 26 | + |
| 27 | +### 1. Instalación de Git |
| 28 | + |
| 29 | +Primeramente hay que descargarlo en el siguiente link: |
| 30 | + |
| 31 | +<https://git-scm.com/downloads>. |
| 32 | + |
| 33 | +Después de haber sido instalado abrimos __Git Bash__, para comprobar que nuestra instalación fue exitosa y no tuvo errores, ingresamos el siguiente comando que muestra la versión de git instalada. |
| 34 | + |
| 35 | + git --version |
| 36 | + |
| 37 | +### 2. Instalación de GO (Golang) |
| 38 | + |
| 39 | +Se descarga de la página oficial: |
| 40 | + |
| 41 | +<https://golang.org/dl/> |
| 42 | + |
| 43 | +Luego de haber sido descargado pasamos al proceso de instalación. Cuando finalice su instalación hay agregar una variable en __Enviroment Variables__ –> __User Variables__ con el nombre de __GOPATH__ y en la sección __value__ la dirección de la carpeta donde se instalo. |
| 44 | +Ya con eso se podrá desde la consola ingresar los comandos de GO. Ingresamos el siguiente comando que debería mostrar la versión instalada: |
| 45 | + |
| 46 | + go version |
| 47 | + |
| 48 | +### 3. Instalación de Chocolatey |
| 49 | + |
| 50 | +Procedemos a abrir __powershell.exe__ como administrador, de lo contrario no se instalara. |
| 51 | + |
| 52 | +Ahora toca ingresar el siguiente comando en la consola: |
| 53 | + |
| 54 | + Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) |
| 55 | + |
| 56 | +Luego de finalizar la instalación ingresamos el comando que nos mostrara la versión de Chocolatey: |
| 57 | + |
| 58 | + choco /? |
| 59 | + |
| 60 | +### Instalación de HUGO |
| 61 | + |
| 62 | +Lo primero que debemos hacer es dirigirnos a la carpeta donde se va a instalar HUGO, abrimos la consola __Git Bash__ en modo administrador e ingresamos el siguiente comando: |
| 63 | + |
| 64 | + choco install hugo |
| 65 | + |
| 66 | +Finalizado el proceso, podremos ver la versión de HUGO que se instalo: |
| 67 | + |
| 68 | + hugo version |
| 69 | + |
| 70 | +### a. Crear un sitio web |
| 71 | + |
| 72 | + Se crea con el comando: |
| 73 | + |
| 74 | + hugo new site nombre_tu_preferencia |
| 75 | + |
| 76 | +Ejemplo: |
| 77 | + |
| 78 | + hugo new site gopherblog |
| 79 | + |
| 80 | +Nos dirigimos a la carpeta del nuevo sitio web: |
| 81 | + |
| 82 | + cd gopherblog |
| 83 | + |
| 84 | +Iniciamos Git en el proyecto creado: |
| 85 | + |
| 86 | + git init |
| 87 | + |
| 88 | +### b. Añadir Tema |
| 89 | + |
| 90 | +Utilice el tema: __hugo-sustain__, este es el link del repositorio del tema que elegi: |
| 91 | + |
| 92 | +<https://github.com/nurlansu/hugo-sustain> |
| 93 | + |
| 94 | +Nota: Hugo posee distintos temas para distintos usos. Elige el que se adapta a tus necesidades: |
| 95 | +<https://themes.gohugo.io/> |
| 96 | + |
| 97 | +Ahora toca clonar su repositorio y guardarlo en la carpeta __themes__ de su proyecto. |
| 98 | + |
| 99 | + git clone https://github.com/nurlansu/hugo-sustain.git themes/hugo-sustain |
| 100 | + |
| 101 | +### c. Modificación del Tema |
| 102 | + |
| 103 | +En el archivo __config.toml__ de su proyecto se puede modificar variables que son usadas en el tema. |
| 104 | + |
| 105 | +Debemos empezar por agregar el nombre del tema que se eligió: |
| 106 | + |
| 107 | + theme = 'hugo-sustain' |
| 108 | + |
| 109 | +El formato de los permalink: |
| 110 | + |
| 111 | + post = "/:year/:month/:day/:slug" |
| 112 | + |
| 113 | +Las variables __params__ son donde podemos cambiar algunos aspectos de la página inicial del tema como el autor del proyecto, la descripción y el avatar. En la carpeta __static__, hay que crear una carpeta llamada __img__, se guardara una imagen que puede ser en formato png o jpg. El creador del tema que decidi utilizar recomienda que la imagen sea de una dimensión de 190 x 190 pixeles. |
| 114 | + |
| 115 | + [params] |
| 116 | + avatar = "profile.jpg" |
| 117 | + author = "Jesus Gonzalez" |
| 118 | + description = "Describe your website" |
| 119 | + |
| 120 | +Las variables __params.social__ son las encargadas de capturar el nombre de usuario de las distintas redes sociales. |
| 121 | + |
| 122 | + [params.social] |
| 123 | + Github = "username" |
| 124 | + |
| 125 | + Twitter = "username" |
| 126 | + LinkedIn = "username" |
| 127 | + Stackoverflow = "username" |
| 128 | + Medium = "username" |
| 129 | + Telegram = "username" |
| 130 | + |
| 131 | +Con la variable __menu.main__ se puede agregar secciones a su tema. Ejemplo de como crear una sección: |
| 132 | + |
| 133 | + ## Main Menu |
| 134 | + [[menu.main]] |
| 135 | + name = "blog" |
| 136 | + weight = 100 |
| 137 | + identifier = "blog" |
| 138 | + url = "/blog/" |
| 139 | + |
| 140 | +El archivo final debería tener el siguiente formato: |
| 141 | + |
| 142 | + baseURL = 'http://example.org/' |
| 143 | + languageCode = "en-us" |
| 144 | + title = "gopherblog" |
| 145 | + theme = "hugo-sustain" |
| 146 | + |
| 147 | + [permalinks] |
| 148 | + post = "/:year/:month/:day/:slug" |
| 149 | + |
| 150 | + [params] |
| 151 | + avatar = "profile.jpg" |
| 152 | + author = "Jesus Gonzalez" |
| 153 | + description = "tutorial como construir con HUGO" |
| 154 | + |
| 155 | + [params.social] |
| 156 | + Github = "username" |
| 157 | + |
| 158 | + Twitter = "username" |
| 159 | + LinkedIn = "username" |
| 160 | + Stackoverflow = "username" |
| 161 | + Medium = "username" |
| 162 | + Telegram = "username" |
| 163 | + |
| 164 | + ## Main Menu |
| 165 | + [[menu.main]] |
| 166 | + name = "blog" |
| 167 | + weight = 100 |
| 168 | + identifier = "blog" |
| 169 | + url = "/blog/" |
| 170 | + |
| 171 | +### d. Creación del primer Post |
| 172 | + |
| 173 | +Aprovechando los beneficios de HUGO se pueden crear posts de forma automatica ingresando un comando que genera un archivo donde tu podras ingresar el contenido a publicar. El archivo es en formato __markdown__ |
| 174 | + |
| 175 | + hugo new blog/primer_post.md |
| 176 | + |
| 177 | +### d. Inicio del servidor de HUGO |
| 178 | + |
| 179 | +Para iniciar el servidor local se ingresa: |
| 180 | + |
| 181 | + hugo server –D |
| 182 | + |
| 183 | +Otro comando es: |
| 184 | + |
| 185 | + hugo serve |
| 186 | + |
| 187 | +Este comando va a funcionar, pero los post creados no se van a mostrar porque se encuentran en estado: DRAFT = true, para que se visualicen es necesario eliminar una línea de los posts. |
| 188 | + |
| 189 | + draft: true |
| 190 | + |
| 191 | +### e. Subir el proyecto a un Hosting |
| 192 | + |
| 193 | +Para este tutorial se utilizo __Github Pages__. |
| 194 | + |
| 195 | +#### Pasos para subir el proyecto |
| 196 | + |
| 197 | +1. Un repositorio con el nombre de su proyecto. Ejemplo: |
| 198 | + |
| 199 | + > hugo_blog |
| 200 | +
|
| 201 | +2. Un segundo repositorio con el nombre de usuario de su cuenta de github |
| 202 | + |
| 203 | + > username.github.io |
| 204 | +
|
| 205 | + (Recomendación: Este repositorio debe ser creado con su Readme.md). |
| 206 | + |
| 207 | +3. En la consola __git bash__ que se encuentra abierta en la carpeta de su proyecto agregamos el siguiente comando: |
| 208 | + |
| 209 | + git remote add origin [email protected]:username/hugo_blog.git |
| 210 | + |
| 211 | +4. Ahora debes agregar sus archivos al área staging de git eso se realiza con los comandos: |
| 212 | + |
| 213 | + git add . |
| 214 | + git commit –m “first commit” |
| 215 | + |
| 216 | +5. Luego debes subir al repositorio con el nombre del proyecto. |
| 217 | + |
| 218 | + git push –u origin master |
| 219 | + |
| 220 | +6. Hay que clonar el otro repositorio. |
| 221 | + |
| 222 | + git submodule add -b master [email protected]:username/username.github.io.git public |
| 223 | + |
| 224 | +7. Debes generar la carpeta __public__ donde se almacenaran los archivos que son necesarios para el hosting |
| 225 | + |
| 226 | + hugo |
| 227 | + |
| 228 | +8. Para finalizar es necesario crear un Shell script con el nombre de __deploy.sh__ que debe tener lo siguiente: |
| 229 | + |
| 230 | + #!/bin/sh |
| 231 | + |
| 232 | + # If a command fails then the deploy stops |
| 233 | + set -e |
| 234 | + |
| 235 | + printf "\033[0;32mDeploying updates to GitHub...\033[0m\n" |
| 236 | + |
| 237 | + # Build the project. |
| 238 | + hugo -t hugo-sustain # if using a theme, replace with `hugo -t <YOURTHEME>` |
| 239 | + |
| 240 | + # Go To Public folder |
| 241 | + cd public |
| 242 | + |
| 243 | + # Add changes to git. |
| 244 | + git add . |
| 245 | + |
| 246 | + # Commit changes. |
| 247 | + msg="rebuilding site $(date)" |
| 248 | + if [ -n "$*" ]; then |
| 249 | + msg="$*" |
| 250 | + fi |
| 251 | + git commit -m "$msg" |
| 252 | + |
| 253 | + # Push source and build repos. |
| 254 | + git push origin master |
| 255 | + |
| 256 | +9. Antes de ejecutar el script debes cambiar en el archivo __config.toml__ el valor de la variable __baseURL__ con: |
| 257 | + |
| 258 | + <https://username.github.io/> |
| 259 | + |
| 260 | +10. Ya cambiada esa línea puedes poner en ejecución el script. |
| 261 | + |
| 262 | + sh deploy.sh |
| 263 | + |
| 264 | +Ahora su sitio debería estar disponible. |
| 265 | + |
| 266 | +<https://username.github.io> |
| 267 | + |
| 268 | +### Conclusión |
| 269 | + |
| 270 | +El tutorial fue creado para que las personas que nuncan han trabajado __HUGO__ puedan desarrollar su sitio web en poco tiempo, sin tantas complicaciones y sepan como subirlo a un hosting. |
| 271 | + |
| 272 | +Déjame saber que te pareció el artículo en mi twitter: |
| 273 | + |
| 274 | +[Twitter](https://twitter.com/gonzalezlrjesus) |
| 275 | + |
| 276 | +[Portafolio](https://gonzalezlrjesus.github.io/) (Mi Portafolio fue creado con __HUGO__ y con el tema __hugo-sustain__) |
0 commit comments