Page 1 sur 41234

[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

Go – installation

go

Depuis que j’ai préparé mon serveur web, je n’ai pas avancé sur la création de ma wishlist …
J’ai décidé de créer ce site avec l’outil Hugo ceci pour des raisons simples :

  • Découverte de cet nouvel outil
  • Utilisation du go

Cependant je me retrouve dors et déjà bloqué … Bien que je sois actuellement sur une distribution Debian récente, mais l’installation de go me donne une version non à jour.

$ go version
go version go1.3.3 linux/amd64

En effet il me faut une version 1.5+ pour faire tourner l’outil voulu … Dès collègues de boulot m’avaient prévenu qu’avec Debian les paquets sont souvent « en retard » pour des souci de proposer uniquement des version dite « stable »

Je risque d’ailleurs de ne pas être à jour pour nginx aussi … je mettrais donc à jour mon serveur web dans un second temps.

Je vais donc installer GO en suivant le guide officiel :
Installation de Go

Je commence donc a télécharger la dernière version actuellement disponible sur :
Téléchargement de Go

Puis installation de celui-ci en suivant les guide.
Résumé de l’installation :

# going to temp folder to dl files
$ cd /tmp

# downlad go
$ wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz

# extract it to my custom bin folder
$ tar -C $HOME/bin -xzf go1.6.2.linux-amd64.tar.gz

# add some var environement var
# pour le fonctionnement de .zsh_local : http://me.scorfly.com/blog/?p=129
$ echo 'export GOROOT=$HOME/bin/go' >> $HOME/.zsh_local
$ echo 'export PATH=$PATH:$GOROOT/bin' >> $HOME/.zsh_local

# refresh environnement to get the news values setted
$ source ~/.zshrc

# test go version
$ go version
go version go1.6.2 linux/amd64

Au final l’installation via les binaires fut très simple.

J’avais souhaité faire l’installation directement via les sources git en compilant moi même les sources.
Mais je me suis heurté à de nouvelles problématiques … la volonté principale actuellement étant de tester différents outils, je ferais donc cela plus tard.

Installation de nginx

Il y a les outils pour créer des sites web (symfony2, gohugo, ghost, …) mais il y a aussi les outils derrières pour que ceux-ci puissent fonctionner sur le serveur.

Pour faire tourner un serveur web beaucoup utilisent apache2. Mais depuis plusieurs année nginx (une alternative) est utilisé par une grand nombre.

NGINX_logo_rgb-01

J’ai pu travailler sur différent projet où un serveur web sur nginx tournait. Mais je n’ai jamais eu le loisir d’un installer un moi-même ni d’en configurer un. (… shame one me …)

Ayant plusieurs outil de création de site que je souhaite tester, je vais profiter de ces projets pour utiliser ce serveur web dont j’ai beaucoup entendu parlé, mais que je n’ai pas testé.

La première étape sera donc l’installation.

$ sudo apt-get install nginx

Après installation, on pourra voir constater que l’arborescence du programme ressemble sensiblement à ce que l’on peut retrouver avec apache2 :

$ tree /etc/nginx          
/etc/nginx
├── conf.d
├── fastcgi.conf
├── fastcgi_params
├── koi-utf
├── koi-win
├── mime.types
├── nginx.conf
├── proxy_params
├── scgi_params
├── sites-available
│   └── default
├── sites-enabled
│   └── default -> /etc/nginx/sites-available/default
├── snippets
│   ├── fastcgi-php.conf
│   └── snakeoil.conf
├── uwsgi_params
└── win-utf

Mon projet web sera un site pour ma « whislist ». Je créer donc un fichier qui contiendra la configuration du serveur web pour ce projet

$ sudo vim /etc/nginx/sites-available/whislist
server {
    listen 80;
    server_name www.whishlist.scorfly.ovh whishlist.scorfly.ovh;

    # log file
    access_log /var/log/nginx/default.access.whishlist.log;

    # hide nginx version on error page
    server_tokens off;

    # Allow only GET and HEAD request
    # i'm creating a full static web site
    if ($request_method !~ ^(GET|HEAD)$ ) {
        return 444; # No Response
    }

    location / {
        # Be sure this folder and file are created
        root   /var/www/whishlist;
        index  index.html;
    }
}

On active le host :

$ sudo ln -s /etc/nginx/site-available/whishlist /etc/nginx/sites-enabled/

Et pour finir on restart notre serveur web :

$ sudo /etc/init.d/nginx restart
[ ok ] Restarting nginx (via systemctl): nginx.service.

Mon site est maintenant accessible grace à cette configuration très basique.
Nous verrons par la suite les changements qui seront apporté a cette configuration suivant les besoins que je pourrais avoir au fur et à mesure des différents projets.

Gérer sa configuration par défaut Debian

On passe souvent beaucoup de temps à configurer puis reconfigurer sa ou ses machines.

Le plus long n’est pas d’installer zsh, vim, screen, … mais bien de réaliser l’ensemble des configurations propre à chaque outil.

Afin d’être plus rapide dans ces manipulations il devient de plus en plus répandu de versionner ces fichiers.
Ces dépôts « dotfiles » sont souvent publique sur github.

github
Vous pourrez le constater en faisant la recherche de « dotfiles » sur ce site :

Je viens donc de créer mon propre dépôt pour pouvoir mieux gérer mes configurations et je vous propose d’y accéder :

Vous avez sur celui-ci les commandes que j’utilise pour configurer mes machines. Mes fichier de configuration et quelque base sur la sécurité qui doit être mise en place.

Le dépôt évoluera au fur et à mesure de mes besoins. En effet je ne ferais plus aucune config sur mes machine en direct sans que ceci soit versionné.

Cependant il est a noté que les fichier peuvent inclure d’autre fichier s’ils sont présent sur la machine.
Par exemple zshrc inclu ~/.zshrc_local
Ceci me permet d’avoir des bouts de configuration tel que certain alias que je veut sur certaine machine, sans que ceux-ci soit disponible au grand publique.

Page 1 sur 41234