W grudniu ubiegłego roku zamieściłem wpis opisujący konfigurację Vagranta w celu użycia go do blogowania z wykorzystaniem frameworku Octopress. Ponarzekałem też trochę na szybkość generowania stron gdy blog w Octopressie rozrasta się do trochę większych rozmiarów. Z tego narzekania wyszło tyle, że zacząłem rozglądać się za jakąś alternatywą do statycznego generowania stron. Postanowiłem poszukać czegoś opartego o Javę, żeby być bardziej zaznajomionym z kodem i żeby móc ewentualnie szybciej dorobić potrzebne dla siebie elementy. Java chyba nie jest ulubionym językiem do tego typu rzeczy, bo jedynym w miarę sensownym rozwiązaniem jakie udało mi się znaleźć był JBake.

Kod źródłowy JBake można znaleźć na GitHubie. Nie udało mi się jeszcze poznać tego projektu na tyle, żeby móc napisać więcej szczegółów na jego temat. Jak tylko zapoznam się z nim bliżej, to opiszę tutaj swoje wrażenia. Na chwilę obecną mogę przytoczyć dwa fakty. Po pierwsze JBake jest znacznie mniej rozpowszechniony niż Octopress, a co za tym idzie znacznie mniej osób go współtworzy i rozwija. Drugim faktem jest to, że JBake podczas generowania strony loguje nam na ekran każdy swój krok, co jest dużym plusem w stosunku do Octopressa, który nie mówi nam prawie nic i nie wiemy, czy gdzieś się zawiesił, czy ciągle działa.

Postanowiłem sprawdzić JBake w praktyce. Zbiegło się to akurat w czasie z przygotowaniami do odpalenia mojego drugiego bloga KodujLepiej.PL, który był jednym z moich noworocznych postanowień. Wstępnie zdecydowałem się wykorzystać JBake do obsługi tego bloga. Po dłuższym przemyśleniu postawiłem jednak na WordPressa, bo jest on znacznie prostszy do zarządzania wieloma użytkownikami na blogu. O samym projekcie napiszę pewnie wkrótce po jego wystartowaniu. Tymczasem przygotowałem sobie już konfigurację Vagranta do współpracy z JBake, podobnie jak to miało miejsce z Octopressem, więc mimo wszystko chciałbym się nią tutaj podzielić.

Instalacja Vagranta i VirtualBoxa

Na początek musimy zainstalować Vagranta oraz ustawić odpowiedniego providera, co z tą dokumentacją jest naprawdę banalnie proste. Jako providera wybrałem VirtualBoxa, który jest obecnie najbardziej polecany przez twórców Vagranta.

Przygotowanie JBake

Wszystkie niezbędne informacje na ten temat znajdziecie na stronie jbake.org.

Konfiguracja Vagranta

Będą nam potrzebne do tego dwa pliki:

  • Vagrantfile – podstawowy plik konfiguracyjny niezbędny za każdym razem do uruchomienia Vagranta
  • bootstrap.sh – skrypt bash opalany przy uruchamianiu Vagranta, konfigurujący całe środowisko pod JBake

Opis każdego polecenia widoczny jest w komentarzach w listingu plików poniżej.

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

# configuration for second version of Vagrant
Vagrant.configure("2") do |config|
  # setting box (here we have Ubuntu 12.04 LTS 64-bit)
  config.vm.box = "hashicorp/precise64"

  # setting file for ssh provisioning (this file will be run on startup)
  config.vm.provision :shell, :path => "bootstrap.sh"

  # port forwarding (8820 is a default JBake port)
  config.vm.network "forwarded_port", guest: 8820, host: 8820
  # ssh agent forwarding (virtual machine will have access to our local ssh settings)
  config.ssh.forward_agent = true

  # syncing JBake project folder to have access to it from the virtual machine
  config.vm.synced_folder "../../../JBakeProject", "/home/vagrant/project", create: false

  # configuration for VirtualBox provider
  config.vm.provider :virtualbox do |vb|

    vb.name = "VagrantForJBake"

    #fix for issue with symbolic links in shared folders
    vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]

    # memory settings
    vb.memory = 1024
    # CPU settings
    vb.cpus = 2

    # this two settings fixed my problem with network slowness between local and virtual machine
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  end
end
bootstrap.sh
#!/usr/bin/env bash
HOME="/home/vagrant"

# download newest package lists from the repositories 
sudo apt-get update

# install JDK and unzip
sudo apt-get install -y openjdk-7-jre unzip

# download JBake 2.3.2
wget http://hash.to/HM -O jbake.zip -o jbake-download.log

# unzip downloaded JBake
unzip jbake.zip

# add JBake to $PATH
echo 'export PATH="$HOME/jbake-2.3.2/bin:$PATH"' >> $HOME/.profile

# change ownership of JBake directory
sudo chown -Rf vagrant:vagrant $HOME/jbake*

Download

Powyższe pliki konfiguracyjne możecie sklonować z mojego repozytorium na GitHubie: https://github.com/prondzyn/vagrant-jbake.