在 Debian 上搭建自己的 Pages 服务

日期: 05 月 26日, 2014
标签:

GitCafeGitHub 都提供了基于 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 更新网页。