Jekyll là công cụ được sử dụng phổ biến hiện nay trong việc chuyển đổi nội dung văn bản từ Markdown/Textile thành trang web HTML tĩnh. Để hỗ trợ cho các bạn đang gặp khó khăn trong việc sử dụng Jekyll với các plugin mở rộng, bài viết này tôi hướng dẫn cách cài đặt Jekyll trên hệ điều hành Ubuntu.

Jekyll là ứng dụng phát triển trên nền tảng Ruby. Có nhiều cách cài đặt môi trường phát triển ứng dụng Ruby, trong đó linh hoạt nhất phải kể đến cách sử dụng RVM (Ruby Version Manager) để cài đặt và quản lý Ruby cũng như các phần mềm chạy trên Ruby.

RVM là gì?

RVM (Ruby Version Manager) là một công cụ dòng lệnh trên Linux dùng để quản lý các phiên bản Ruby khác nhau chạy trên cùng một máy tính. Các bạn có thể tìm hiểu thêm về RVM bằng cách vào trang web rvm.io.

Cài đặt RVM

Để cài đặt rvm trong Ubuntu (Linux nói chung) chúng ta cần có sẵn phần mềm curl. Các bạn có thể kiểm tra xem phần mềm này đã được cài đặt hay chưa bằng lệnh đơn giản sau (lưu ý dấu $ là dấu nhắc đợi lệnh, không nằm trong lệnh trên):

$ curl --version
curl 7.19.3 (i686-pc-linux-gnu) libcurl/7.19.3 OpenSSL/0.9.8k zlib/1.2.3
Protocols: tftp ftp telnet dict ldap http file https ftps 
Features: IPv6 Largefile NTLM SSL libz

Nếu kết qủa hiển thị phiên bản của curl như trên, thì hệ điều hành của bạn đã được cài đặt. Nếu không, cũng đừng lo lắng, bạn chỉ việc chạy lệnh sau để cài và chờ một vài phút để quá trình tải và cài đặt hoàn tất:

$ sudo apt-get install curl

Sau khi đã có curl, các bạn cài đặt rvm vào môi trường của tài khoản đăng nhập hiện thời (lưu ý cài đặt này không dùng cho toàn bộ hệ thống) như sau:

$ \curl -sSL https://get.rvm.io | bash -s stable

Lệnh cài đặt rvm ở trên có thể có thêm các tùy chọn cài đặt --ruby, --rail, --puma,… tuy nhiên chúng ta sẽ đợi rvm cài đặt thành công xong rồi mới chọn phiên bản ruby để cài đặt.

Sau khi cài đặt, khi chưa khởi động lại máy, chúng ta phải nạp khai báo môi trường rvm trước khi sử dụng:

$ source ~/.rvm/scripts/rvm

Sau khi nạp xong thông số môi trường, kiểm tra thử rvm có chạy được từ dòng lệnh không, bằng lệnh hiển thị phiên bản như sau:

$ rvm --version
rvm 1.25.25 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, 
Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Cài đặt Ruby

Sau khi cài đặt và chạy được rvm, cài đặt ruby phiên bản 2.1.1 như sau:

$ rvm install ruby 2.1.1

Chờ vài phút để quá trình cài đặt thực hiện xong. Trong quá trình cài, có thể trình cài đặt yêu cầu nhập mật khẩu root do hệ thống phải ở trạng thái cập nhật mới nhất trước khi cài đặt ruby. Sau khi cài đặt xong, thiết lập phiên bản 2.1.1 làm phiên bản mặc định:

$ rvm --default use 2.1.1

Khai báo sử dụng ruby bằng lệnh sau:

$ rvm use ruby default
Using /home/pnhung177/.rvm/gems/ruby-2.1.1

Nếu rvm không hiển thị thông báo kết quả thực hiện lệnh là “Using …”, mà thay vào đó hiển thị thông báo:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for a example.

Trường hợp này phát sinh là do mặc định gnome-terminal chạy với chế độ cửa sổ không login (non-login shell), do đó nó bỏ qua việc khởi tạo /etc/profile.d (và cả ~/.bash_profile nữa), nên RVM không được khởi tạo đầy đủ và từ đó xuất hiện lỗi “RVM is not a function”.

Để khắc phục tình trạng này, chúng ta cần mở cửa sổ tùy chọn “Edit > Profile Preferences” của gnome-terminal, check vào lựa chọn “Run command as login shell” như trong hình vẽ.

Thiết lập tùy chọn "Run command as login shell" cho Gnome Terminal

Đóng cửa sổ tùy chọn, đóng cửa sổ dòng lệnh và mở cửa sổ dòng lệnh mới, sau đó chạy lại lệnh sau:

$ rvm use ruby default
Using /home/pnhung177/.rvm/gems/ruby-2.1.1

Kỳ vọng là bạn sẽ nhận được thông báo kết quả thực thi lệnh như ở trên. Nếu vẫn không được, hãy chạy thử lệnh bash –login trước khi nạp ruby:

$ bash --login
$ rvm use ruby default
Using /home/pnhung177/.rvm/gems/ruby-2.1.1

Nếu vẫn không được, vui lòng search google và đăng câu hỏi vào stackoverflow.com để nhờ cộng đồng trợ giúp.

Cài đặt Jekyll

Sau khi chạy xong ruby, chúng ta có thể cài đặt Jekyll bằng lệnh đơn giản sau:

$ gem install jekyll

Đợi vài phút để gem cài đặt hết Jekyll và các thư viện liên quan. Tương tự như với rvmruby, chúng ta có thể kiểm tra việc cài đặt Jekyll đã hoàn chỉnh chưa bằng lệnh sau:

$ jekyll --version
jekyll 2.3.0

Sử dụng Jekyll

Đầu tiên, mở cửa sổ dòng lệnh (Gnome Terminal) mới, khai báo sử dụng phiên bản ruby default:

$ rvm use ruby default
Using /home/pnhung177/.rvm/gems/ruby-2.1.1

Chuyển đến thư mục chứa mã nguồn trang web Jekyll của bạn:

$ cd /path/to/your/jekyll/blog/folder

Bên trong thư mục mã nguồn trang web của bạn, chạy thử Server của Jekyll tại cổng mặc định 4000 bằng lệnh:

$ jekyll serve --watch
Configuration file: /path/to/your/jekyll/blog/folder/_config.yml
            Source: /path/to/your/jekyll/blog/folder
       Destination: /path/to/your/jekyll/blog/folder/_site
      Generating... 
     Build Warning: Layout 'none' requested in feed.xml does not exist.
     Build Warning: Layout 'nil' requested in sitemap.xml does not exist.
                    done.
 Auto-regeneration: enabled for '/path/to/your/jekyll/blog/folder'
Configuration file: /path/to/your/jekyll/blog/folder/_config.yml
    Server address: http://0.0.0.0:4000/
  Server running... press ctrl-c to stop.

Mở trình duyệt web và nhập địa chỉ http://localhost:4000/ để xem trang web. Tham số --watch nhằm yêu cầu Jekyll biên dịch lại mỗi khi có thay đổi trong nội dung bài viết. Các trang HTML được tạo ra mặc định trong thư mục con _site.

Để biên dịch nội dung HTML vào một thư mục khác (chẳng hạn trong thư mục bên trong htdocs của trình chủ Apache Web Server), chúng ta sử dụng lệnh build với tham số --destination như sau:

$ jekyll build --destination=/var/www/htdocs/blog

Các bạn có thể tìm hiểu thêm các tính năng khác của Jekyll trong trang tài liệu của dự án này.

Comments