No primeiro artigo expliquei as motivações por trás da criação desse blog e porque optei por criar um site estático e armazená-lo utilizando os serviços do Amazon Web Services. Nesta primeira parte da série vamos abordar o básico: Hexo!

O Hexo é um framework para desenvolvimento de blogs estáticos com diversos plugins que o tornam ainda mais poderoso. Ele é desenvolvido utilizando o Node.js, um interpretador javascript desenvolvido com base no motor javascript Chrome V8.

Se você já conhece e utiliza o Node.js, basta instalar o Hexo. Eu precisei instalar o Node.js em meu Ubuntu, e a maneira mais prática que encontrei para fazê-lo foi através do nvm; a forma também descrita na documentação do Hexo. No terminal do Ubuntu, como usuário normal (não root) fiz:

$ wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh

E em seguida usei o nvm para instalar o Node.js.

$ nvm install 4.4.3

Muitos tutoriais na internet utilizam a versão 0.12 do Node.js com o Hexo, mas alguns plugins e módulos do próprio Node.js requerem a versão mais nova. Então preferi instalar a versão LTS, v4.4.3 enquanto escrevo esse artigo. Também poderia baixar o instalador no site do Node.js. Caso tenha usado o nvm, em novas sessões do terminal é importante ativar o Node.js rodando nvm use 4.4.3.

Instalando o Hexo e iniciando o blog

Depois foi só instalar o Hexo. No momento em que esse artigo é escrito a versão mais recente é a 3.2.0.

$ npm install hexo-cli -g

Para iniciar o blog

Iniciar o novo blog
1
2
3
$ hexo init meuBlog
$ cd meuBlog
$ npm install

O último comando é responsável por instalar os pacotes Node.js dos quais o hexo depende para gerar o blog. Para quem já trabalha com Node.js não é novidade, mas é importante saber que o diretório do blog é como uma espécie de sistema desenvolvido em Node.js. O Hexo e todas os pacotes dos quais eles dependente são instalados dentro do diretório do blog.

Para ver o blog rodando, o Hexo possui um mini servidor:

$ hexo server

Acesse o conteúdo apontando seu navegador para http://localhost:4000.

Controlando seu blog com Git

Esse passo é opcional mas muito recomendado. Como alterações nas configurações, testes, novos artigos são operações freqüentes no blog, o versionamento do conteúdo é uma excelente maneira de manter registro dessas modificações e, de quebra, adicionar um pouco de proteção a desastres (sem dispensar o backup). Após inicializar o blog com Hexo, inicializei um repositório Git:

$ git init

Coloquei um arquivo .gitignore no repositório para instruir o git a ignorar arquivos que não devem ser rastreados.

.gitignore
1
2
3
4
5
6
7
8
.DS_Store
Thumbs.db
db.json
*.log
node_modules/
public/
.deploy*/
*~

E adicionei os arquivos ao repositório:

adicionar arquivos ao repositório
1
2
$ git add *
$ git commit -m "Blog: estado inicial"

A cada alteração importante eu gravo um snapshot no repositório com um novo commit. Dessa forma posso retroceder a qualquer momento no tempo e restaurar um estado funcional do site.

Arquivos do site

Um site recém gerado com Hexo contém:

_config.yml Configuração do blog e plugins do Hexo
package.json Lista de npm packages necessários para o blog
scaffolds Modelo dos layouts disponíveis (draft, post, page)
source Arquivos dos posts, páginas e conteúdo do site
themes Temas instalados, por padrão o Hexo traz o tema Landscape, esse site usa o Tranquilpeak

Veja a listagem deste blog.

Hexo file structure
1
2
3
4
5
6
7
8
9
10
drwxrwxr-x 6 jrbenito jrbenito 4096 Mai 19 00:43 .
drwxrwxr-x 5 jrbenito jrbenito 4096 Mai 19 00:43 ..
-rw-rw-r-- 1 jrbenito jrbenito 2203 Mai 19 00:43 _config.yml
drwxrwxr-x 8 jrbenito jrbenito 4096 Mai 19 00:43 .git
-rw-rw-r-- 1 jrbenito jrbenito 71 Mai 19 00:43 .gitignore
-rw-rw-r-- 1 jrbenito jrbenito 727 Mai 19 00:43 package.json
drwxrwxr-x 2 jrbenito jrbenito 4096 Mai 19 00:43 scaffolds
drwxrwxr-x 7 jrbenito jrbenito 4096 Mai 19 00:43 source
drwxrwxr-x 4 jrbenito jrbenito 4096 Mai 19 00:43 themes
-rw-rw-r-- 1 jrbenito jrbenito 2590 Mai 19 00:43 .travis.yml

Os arquivos .git e .gitignore são específicos dos repositório git; o .travis·yml também não pertence ao Hexo e sua função é assunto para outro post.

Feito!

Pronto, agora é só personalizar o blog através das configurações e temas.

Dentre os geradores de sites que conheci, escolhi o hexo por sua simplicidade e por rodar em diversas plataformas sem problemas de compatibilidade possibilitando que eu edite esse blog em casa no Linux ou em uma máquina windows on the go. Continuando minha saga escreverei ainda sobre como hospedar o blog no AWS S3 e configurar uma CDN para acelerar o acesso ao site.