This how-to will guide you on how to setup a jekyll blog from scratch, hosted on Github Pages.
You will need a fresh ruby installation. If you don't, follow lewagon/setup
First, make sure you have jekyll installed with:
$ gem install jekyll
We will create a site served at http://<your_github_username>.github.io
and hosted on Github at <your_github_username>.github.io
. In the previous terms, just remplace <your_github_username>
with your own GitHub username, obviously.
$ cd ~/code/<your_github_username>
$ jekyll new <your_github_username>.github.io
$ cd <your_github_username>.github.io
$ git init
$ git add .
$ git commit -m "Jekyll blog generated"
You can preview your blog articles locally. Open a new terminal tab, and run, in the root folder of your blog:
$ jekyll serve --watch
It will run forever, that's why we opened a new terminal tab. Then you can your browser, and go to the following URL:
http://0.0.0.0:4000
Great, this is your new blog! Time to write a new article.
Your articles live in the _posts
folder of your jekyll project. To create a new article, you need to create a new file in this folder, with a filename strictly following the convention:
YYYY-MM-DD-the-blog-article.markdown
Where YYYY-MM-DD
is the date of the date, and the-blog-article
will be
the URL where the article will be served:
http://0.0.0.0:4000/the-blog-article.html
Open this file in Sublime Text, and make sure the 4 first lines follow the following convention:
---
layout: post
title: "The Blog Article"
---
Then you can save your file, go to your browser and refresh your blog
root page (listing all your articles). You should see a link to your
new article. Click on it, you should see a blank article. Time to add
some content with Sublime Text to posts/YYYY-MM-DD-the-blog-article.markdown
!
You need to create a new GitHub repository. Go to github.com/new, and create repository named <your_github_username>.github.io
.
The name is very important. Once created, you will get instructions to add this
remote to your local git repository (the two command specified at the bottom).
To publish your article, it's just a push:
$ git push origin master
You will have to create a CNAME
file. Here is a great guide.
Suppose you want to have an "About" page or a "Resume" page. These are not really blog articles. And you want to have a special URL:
Just create a file at the root of your jekyll project:
$ touch about.html
And then, inside this file, don't forget the head:
---
layout: default
title: About me
---
Note that the layout in this case is default
, not post
. They are related
to what you can find in the _layouts
folder!
You can drop the .html
suffix in your URL, in that case you need a folder:
$ mkdir about
$ touch about/index.html
The Markdown syntax to add an image is:
![Alt text](/path/to/img.jpg)
You should create an images
folder to put your images in:
$ mkdir images
This way, if you have an image me.jpg
in your images
folder,
you can put it in your article with the following:
![Me](/images/me.jpg)
You can use Wufoo or Brace forms, I wrote an article about it.
Well, you can tweak the layout, or the CSS. You can also find some inspiration on jekyllthemes.org
Use Disqus!
In this section, I will explained stuff that happen automagically with Github Pages.
Suppose you want to host your Jekyll site old-school, on your own server. You
will need to upload the site to a FTP server. In that case, you need to build
locally the site, and push this compiled version to the FTP. By default, it
is built in the _site
folder. You can read the doc
Jekyll is using Liquid, a templating
language created by Shopify. That's what you see if you wander in the _layouts
folder.
It gives you helpers, for
loops and if
conditions.
You can read the great guide Liquid for Designers if you want to build your own template.
You can store data in your repo, and view it as a static database. It can be useful if you want to create a page listing all your startup employees. Putting the
employees in a yaml file and using a liquid {% for %}
loop will help you create a greate page!
I wrote an article about this approach