GitCafe 和 GitHub 都提供了基于 Jekyll 的 Pages 服务。用户创建特定的 Git 仓库,即可拥有自己的主页。下面在 Debian 中搭建自己的 Pages 服务。
安装软件
安装 Git
sudo apt-get install git
安装 Jekyll
按照此文安装:在 Debian 上安装 Jekyll
安装 SSH Server
安装 SSH Server 是为了能够远程访问 Debian 上的 Git 仓库,如果你是在本地搭建 Pages 服务,则不需要这一步
sudo apt-get install openssh-server
sudo service ssh start
注意: 当心 SSH 安全问题!参照此文提高安全性: SSH 安全防护
安装Web服务器
任何一个 Web 服务器都可以,这里选择 Nginx:
sudo apt-get install nginx
sudo service nginx start
编辑/etc/nginx/sites-available/default
:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /tmp/www/;
index index.html;
charset utf-8;
# Make site accessible from http://localhost/
server_name localhost;
error_page 404 /404.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# Ban xunlei
if ($http_user_agent ~* 'MSIE 6.0') {
return 404;
}
}
创建空的 Git 仓库
mkdir ~/blog.git
cd ~/blog.git
git init --bare
启用post-upgrade
钩子
mv ~/blog.git/hook/post-update{.sample,}
编辑~/blog.git/hook/post-update
#!/bin/bash
git update-server-info
git clone ~/blog.git /tmp/blog
jekyll build -s /tmp/blog -d /tmp/www
rm -rf /tmp/blog
在本地向远程仓库推送
在本地新建一个 Git 仓库用于存储 Pages 的网页
mkdir blog
cd blog
git init
echo 'Hello World!' > index.html
git add index.html
git commit -m "first commit"
将 Debian 上的 Git 仓库添加为此仓库的远程仓库
git remote add pages ssh://username@server:blog.git
向远程推送本地内容
git push -u pages
每次推送完成后,Git 会自动执行post-update
,调用 Jekyll 更新网页。