Hello World
Blog configuration:
- Static Website Generation
- Jekyll 3.8.5
- Ruby 2.6.0
- Lagrange theme
- Website Aynalysis
- Google Analysis
- Baidu Analysis
- Deployment
- GitHub Pages
This is my first post, which I would like to note the beginning of the blog as the simplest “hello world” and how to build such blog by yourself.
The article will contain three steps:
- Choose type of blog
- Prepare something needed
- Compose them
Step 01 Choose Type of Blog
There are static websites and dynamic websites depending on whether the frontend web page interacts with the backend server or database.
Static websites:
- Just HTML / CSS / JS
- No backend server storing data
- Data is pre-generated
Dynamic websites:
- Apply with HTML / CSS / JS
- Fetching data from backend server
- Response user requests dynamically
So, static blog is:
- Posts are pre-generated
- No need for backend server
While dynamic blog is:
- Posts are fetching from backend server
- Fetching occurs in frontend dynamically
Considering this is my first blog building, I choose simple static blog. And I choose Jekyll
for static website generator as there are so many open source static website generator so far.
To choose appropriate static website generator, please see
[Jekyll / Hugo / Hexo Static Comparision]({{ “/posts/jekyll-hugo-hexo” | relative_url }}).
Step 02 Prepare Something Needed
Preparation needs 4 parts below:
- Blog articles;
- Blog introduction;
- Author information;
- Blog domain.
Several Articles to Post
Several articles should be written and ready to post in advance.
- GitHub Pages Deployment Notes (this article 😆);
- [Jekyll Supports Multiple Language without Plugin]({{ “/posts/jekyll-multi-language-without-plugin” | relative_url }}) (this blog supports English and Chinese 😆);
- [Jekyll / Hugo / Hexo Comparision]({{ “/posts/jekyll-hugo-hexo” | relative_url }}) (this blog use Jekyll 😆);
- [Choose An English Name]({{ “/posts/choose-english-name” | relative_url }}) (mine is Lex Cao 😆).
Blog Introduction
Write a about.html
page in advance which only contains brief information. And add more details in the future.
Detail page, please see [Abount Me]({{ “/menu/about.html” | relative_url }})
Author Information
Pen name
I choose an English name for myself, Lex Cao
.
To Choose an English name, please see How to choose an English name.
Blog name
English name is CodingNotes
.
Chinese name is 代码笔记
.
Blog Domain
caolixin.com
The Chinese PinYin of my Chinese name with no meaning.
lexcao.com
Pretty good but already taken.
thecodingnotes.com
Just ok, and a little bit long.
So, I would keep it for lexcao.github.io
until a better domain found.
Step 03 Compose them
Jekyll
Install
Relative links:
Used commands:
# install ruby 2.6.0+
$ xcode-select --install
$ brew install ruby
$ export PATH=/usr/local/opt/ruby/bin:$PATH
$ source ~/.zshrc
# install jekyll & bundler
$ gem install --user-install bundler jekyll
$ export PATH=$HOME/.gem/ruby/2.6.0/bin:$PATH
$ source ~/.zshrc
# init
$ cd /blogs/github-pages-jekyll
$ git init
$ jekyll new .
$ jekyll serve
Theme
Regarding the theme, I would rather be simpler.
Usefull theme gallery:
Find liked theme:
Lagrange
was the selected theme over 4 themes above finally.
Plugin Notice
github-pages
plugin is needed to automated deployment when GitHub Pages integration Jekyll, which some white-list plugins are limited while deploying. See Permit plugins with versions;- The method to use more plugins (not in the white-list) is to push
_site
folder to the repository other than automated deplyment by Github Pages and to auto deploy manually. - I would like to use automated deployment by Github Pages because of the first blog.
Multiple Language Setting
There are many tricks need to be set, please see
Jekyll Supports Multiple Language without Plugin.
Deploy on GitHub
Create a Repository
The name of repository should be a fixed pattern <user>.github.io
.
For example, lexcao.github.io
Push articles to GitHub
# add remote repository
$ git remote add origin https://github.com/lexcao/lexcao.github.io.git
$ git push -u origin master
It is Ready for Visiting
Go to the settings of the repository Settings
> Options
> scroll down to bottom.
If you can see Your site is published at https://lexcao.github.io/
the blog success publishing.
Visit https://lexcao.github.io to see the website
On repository page, there is a easy way to see every time deployments from environment, which automated deployment is triggered by pushing to master
branch by default.
Website Analystic
Google Analytics
- Create a media resource from Google Analytics to get track ID
UA-xxx-x
and include the tracking code. - Create a tracking code in Google Tag Manager, add a
Google Analytics
code tracking based on theUA-xxx-x
ID you got above, include the global tracking code and pubish. - Optional, associate to Google Search Console with `Google Analytics.
Notice:
- Variable name of Chiese is not allowed in
Google Tag Manager
; - If there is
net::ERR_BLOCKED_BY_CLIENT
error on requestingjs
file after GitHub Pages re-deployment, refresh page without ad block extensions would solve the problem.
Baidu Analytics
To install tracking of Baidu is much easier, registration then including the code on Baidu Analytics page.
Real-time performance is slightly worse than Google Analytics
(probably the reason why the domain name github.io
is abroad)
Done
So far, the entire blog has been running perfectly. It is time to concentrate on writing articles 😊.