[GO] Hugo – Premiers pas – My Wishlist

L’installation de Golang sur mon serveur étant enfin prête, je vais donc pouvoir m’amuser avec Hugo.

Hugo qu’est-ce que c’est ?

Hugo est un programme écrit en Go qui permet de créer rapidement des sites. Ceux-ci sont statiques et écrit en Markdown.

Voici une vidéos qui présente comment créer un site en 2 minutes, mais que l’on soit bien d’accord, il faut bien connaitre comment fonctionne l’outil. Votre premier site vous prendra un peu plus de temps. De plus la phase installation n’est pas indiqué dans cette vidéos.

Présentation :

Installation :

Après avoir vu cette présentation, je suis donc passé a la phase d’installation en suivant ce guide :
Guide d’installation

Celui-ci est en soit simple, mais j’ai manqué l’info capital : Go 1.5+ Or ce n’était pas le cas … d’où mon précédent ticket sur l’installation de Go.

Au final voici les instructions que j’ai suivi pour faire l’installation complète :

# creating folder where go application will be
$ mkdir $HOME/go

# setting GOPATH environnement variable
$ echo 'export GOPATH=$HOME/go' >> $HOME/.zsh_local

# reloading current config
$ source ~/.zshrc 

# getting Hugo application from sources
$ go get -u -v github.com/spf13/hugo

# editing PATH environnement variable to use new application
$ echo 'export PATH=$PATH:$HOME/go/bin' >> $HOME/.zsh_local

# reloading current config
$ source ~/.zshrc 

# testing Hugo
$ hugo version
Hugo Static Site Generator v0.17-DEV BuildDate: 2016-06-27T01:25:28+02:00

# Being Happy =)

hugo-logo

Initialisation :

# creating new go project
$ hugo new site myWishlist

$ cd myWishlist

# create a welcome post
$ hugo new post/welcome.md
/home/scorfly/myWishlist/content/post/welcome.md created

Mon message d’accueil :

$ cat content/post/welcome.md 
+++
date = "2016-07-01T01:04:28+02:00"
title = "Welcome"
type = "welcome"
+++

Je fait enfin mes premiers pas avec Hugo pour réaliser un blog / wishlist \o/

**Pourquoi un site wishlist ?**

Dans un premier temps par ce qu'il me faut des projets divers et varier afin de tester les technologies qui ont la hype actuellement !

De plus je suis toujours "en galère" pour indiquer à mes proches ce que je souhaite à Noël ou à mon anniversaire ... et bien souvent les idées, je les ai une fois les fêtes passées ...
Donc autan les noter :D

### J'organiserais les articles suivant différentes catégories :

* [books] - les livres (genre j'ouvre les bouquins parfois)
* [clothes] - les vêtements
* [tools] - les objets
* [others] - divers

Gestion du thème
Ensuite une liste de theme est disponible sur https://themes.gohugo.io/
J’ai pour ma part sélectionné Hugo Futur Imperfect

$ cd themes
$ git clone https://github.com/jpescador/hugo-future-imperfect.git

Pour le thème que j’ai sélectionné un exemple de fichier de configuration est disponible. J’ai donc copié celui-ci afin d’avoir une bonne base.

$ cd hugo-future-imperfect
$ cp exampleSite/config.toml > ../../config.toml

Après l’avoir personnalisé, voici mon fichier config.toml

baseurl = "http://wishlist.scorfly.ovh/"
languageCode = "en-us"
title = "My WishList - Scorfly"
theme = "hugo-future-imperfect"
preserveTaxonomyNames = true
paginate = 3
googleAnalytics = "UA-19965251-5"
publishdir = "public"

[params]
    # Sets the meta tag description, usually reserved for the main page
    description          = "Wishlist de Scrofly"
    # This will appear on the top left of the navigation bar
    navbarTitle          = "My Wishlist"
    # Social media buttons that appear on the sidebar
    socialAppearAtTop    = true
    socialAppearAtBottom = true
    # set this to the section name if section is not post
    viewMorePostLink     = "/blog/"

    # Optional Params
    categoriesByCount    = true
    includeReadingTime   = true
    loadFavicon          = false
    faviconVersion       = ""

# parms.intro will appear on the sidebar
# This is optional, but it's suggested to use
[params.intro]
    header    = "My Wishlist"
    paragraph = ""
    about     = ""

# This will also appear on the sidebar.
# A width of less than 100px is recommended
# This is optional
[params.intro.pic]
    src       = "/img/main/logo.jpg"
    circle    = false
    imperfect = true
    width     = ""
    alt       = "My WhisList"

# Adjust the amount of recent posts on the sidebar.
# This is optional. The default value 5 will be used
[params.postAmount]
    sidebar = 2

# Set up your menu items in the navigation bar
# You can use identifier to prepend a font awesome icon to your text
[[menu.main]]
    name = "Categories"
    url = "/categories"
    weight = 2

[[menu.main]]
    name = "List"
    url = "/blog"
    identifier = "fa fa-newspaper-o"
    weight = 1

# Insert your username and the icon will apear on the page as long as
# socialAppearAtTop or socialAppearAtBottom is set to true in the params area
# The social media icons will appear on the sidebar
[social]
    github          = "scorfly"
    facebook        = "scorfly"
    twitter         = "scorfly"
    email           = "scorfly@gmail.com"
    linkedin        = "Scorfly"

Gestion de la configuration nginx

$ cat /etc/nginx/sites-enabled/wishlist
server {

	listen 80;
	server_name www.wishlist.scorfly.ovh wishlist.scorfly.ovh;

	access_log /var/log/nginx/default.access.wishlist.log;

	# hide nginx version on error page
	server_tokens off;

	location / {
		# Be sur this folder is created
		root   /home/scorfly/myWishlist/public;
		index  index.html index.htm;
	}
}

$ /etc/init.d/nginx restart

Avec goHugo, les modifications réalisé aux articles ne sont pas directement appliqué.
Pour que les modification soit appliqué, il faut relancer le programme hugo
Ceci recréera le site en statique suivant les fichiers qui ont été modifier. Il vous suiffit donc de vous placer dans le dossier de votre projet, puis de lancer hugo.

$ cd $HOME/myWishlit
$ hugo
Started building site
0 draft content
0 future content
0 expired content
2 pages created
0 non-page files copied
3 paginator pages created
0 tags created
1 categories created
in 82 ms

Voilà, c’est fini, il n’y a plus qu’à créer des articles !

Vous pouvez récupérer le début de mon dépôt sur :
GitHub