在自己的服务器上安装 jekyll

jekyll 是一个基于 markdown 语言的博客后台,ta 可以把 markdown 生成为 html 站点并发布。

jekyll 官网:https://jekyllrb.com

安装 jekyll

我使用的是 CentOS 7,所以用官方推荐的方式 gem install jekyll 是不行的。https://rubygems.org/gems/jekyll 上最新版本是 3.6.2,依赖于 ruby 2.1,我又不想为了这个理由把 CentOS 7 上的 ruby 升级,所以降级使用 jekyll 3.4.5,亲测可用。

yum groupinstall Development\ Tools
yum install gem
gem install bundler
gem isntall jekyll —version=3.4.5

初始化站点

jekyll 有两个概念,一个是原始目录,存放配置以及 markdown 文章等。另一个是目标目录,存放生成的静态文件。最终用户访问的是静态文件。 默认情况下原始目录和目标目录是合在一起的,不过我打算分开。

jekyll new www.fangyunlin.com

创建原始目录。

[root@1 jekyll]# tree
.
└── www.fangyunlin.com
    ├── about.md
    ├── _config.yml
    ├── Gemfile
    ├── Gemfile.lock
    ├── index.md
    └── _posts
        └── 2017-12-10-welcome-to-jekyll.markdown

_config.yml 里有一些基础配置,具体可以参考官网文档:https://jekyllrb.com/docs/configuration/ 。很简单。

我推荐把文档都看完,也很简单:https://jekyllrb.com/docs/home/

通常情况下,文章写在 _posts 中。

运行服务并更新目标目录

jekyll serve --watch --source=/root/jekyll/www.fangyunlin.com --destination=/root/site/www.fangyunlin.com

服务默认运行在 127.0.0.1:4000 端口。你可以用 –host 参数暴露到互联网,这样就可以直接访问了。不过我比较喜欢在前面加一个 nginx,转发进来。

这是我的 nginx 配置:

server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /root/site/www.fangyunlin.com;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {
		proxy_pass http://127.0.0.1:4000;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

用 GIT 来管理博客

  1. 把原始目录放到 GIT 仓库
  2. 在 crontab 中定期 pull 就行了。

用 systemd 来管理 jekyll

这是我的 systemd 配置

[root@1 ~]# cat /usr/lib/systemd/system/www.fangyunlin.com.service
[Unit]
Description=www.fangyunlin.com
After=network.target

[Service]
ExecStart=/usr/local/bin/jekyll serve --watch
WorkingDirectory=/root/jekyll/www.fangyunlin.com

[Install]
WantedBy=multi-user.target

最后

systemctl enable www.fangyunlin.com
systemctl start www.fangyunlin.com

就可以了。