Home > Archives > 在 AWS 上搭建一个 Jekyll 博客

在 AWS 上搭建一个 Jekyll 博客

Publish:

关键工具:Git, Jekyll, Apache, AWS

具体流程:在本地用文本编辑器编写 .md 文件,通过 Marboo 预览。然后在服务器上建立 Git 仓库,欲发表的博文 push 到该仓库,同时网站的模版放置于公开的 Github 中,方便管理与同步。服务器为 AWS EC2 的虚拟主机,可以通过 SSH 登陆管理。服务器端配置好 Apache 服务器(同时可配置 WebDav 做同步盘),利用 Crontab 每天定时 pull 最新的博客文章,并使用 Jekyll 编译为可访问的网站。

大致框架

一切为了什么:我想这一切的一切都是因为 电脑洁癖 !

工作准备

  1. 一个 AWS EC2 主机,或者其它主机都可以,注意一定要是虚拟主机,不能是云主机。
  2. 一个给力的网络,因为需要 SSH 登陆到主机操作,所以我觉得一个好的网络还是不错的
  3. 一个 Github 账号,没有去申请就可以了。

AWS EC2 服务器

申请开通

AWS EC2 的申请开通很简单,去网上可以搜到很多教程。不过需要注意的是,现在的 AWS 服务好像变了,新注册的账号只能在美国的 Virginia 和 Oregon 这两个地区创建实例,可以发邮件申请换两个地区,而且可以用 CloudPing 查看自己网络连接到各地区服务器的 Ping 值。

SSH 连接

创建好合适地区的实例(instance)后就可以连接到服务器了(实例的安全规则里一定要有 SSH 的端口开放)

我选择的是新加坡的主机,系统选择的是 Ubuntu 14.04 LTS ,点击实例页面的连接,会教你怎么连接,具体命令是:

ssh -i xxxx.pem ubuntu@xxx.xxx.xxx.xxx

.pem证书文件名和 IP 地址视你的实例而定

配置 Apache

配置 Apache 的话,需要服务器的 80 端口打开,在安全规则里面添加就可以。

安装 LAMP

我图省事,直接在 Ubuntu 下安装的 LAMP,LAMP 是 Linux, Apache, Mysql, PHP5 的简称,话不多说,直接开始吧:

先 update 一下软件列表

sudo apt-get update

发现网络真的是很赞,安装 LAMP

sudo apt-get install tasksel
sudo tasksel install lamp-server

接下来就是 LAMP 的配置,其实这时候你在浏览器访问你的主机 IP 就已经有个示例页面了:

Apache 演示页面

更改网站目录

电脑洁癖又犯了,默认的网站页面文件是在 /var/www,赶紧调整到自己的 home 目录下吧,以后也好管理,我们以 000-default 的配置为基础,来创建自己的 site 配置:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mysite.conf

修改 /etc/apache2/sites-available/mysite,将其中所有的 /var/www 改为 /home/ubuntu/mysite,也就是我们站点的起始目录。你可以根据自己的情况选择合适的目录。

这样修改之后,访问者可能不具备访问 /home/ubuntu/mysite 的权限,可以修改 /etc/apache2/apache2.conf 文件,找到

<Directory /var/www>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>

将这一段复制,并粘贴在后面,将其中的 /var/www 改为 /home/ubuntu/mysite 就可以了。

重新载入配置

可以使用下面的命令来查看现有的站点:

apache2ctl -S

现在,我们要改用 mysite 配置。停止默认的站点,启动自定义站点:

sudo a2dissite 000-default && sudo a2ensite mysite
sudo service apache2 reload

默认站点可能不叫做 000-default。根据 apache2ctl -S 的返回结果,相应修改上面的命令。

最后重启Apache2,可以放一个 index.html 页面放在自定义的目录下测试一下。

sudo service apache2 restart

自此,一个符合电脑洁癖者的 Apache 服务器就搭建好了。

[Optinal] 如果你想让你的服务器的 PHP5 支持 MySQL,你还可以安装:

sudo apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

[Optinal] 安装 XCache 优化缓存

sudo apt-get install php5-xcache

[Optinal] 安装phpmyadmin管理Mysql:

sudo apt-get install phpmyadmin

配置 WebDav

WebDav 是一个基于 HTTP 1.1 的通信协议,搭建一个 WebDav 的服务器可以方便的当云盘使用,Apple 中有很多软件都支持 WebDav 同步。

Apache 内建了一些模块来支持 WebDav 功能,我们可以通过两个命令简单的开启:

sudo a2enmod dav
sudo a2enmod dav_fs

然后重启 Apache 服务就可以了,当然下面还需要详细配置一下。

更改文件位置

首先和网站一样,需要配置一个 WebDav 的根目录,默认的 Apache 服务器的目录在 /var/www,我们在家目录下创建 WebDav 文件夹。

mkdir webdav

然后把这个目录的所有者转给 www-data,这样这个目录就可以正常的展示了。

sudo chown www-data webdav

设置密码保护

我们可以通过建立 htpasswd 文件来建立认证,决定是否可访问该目录。

sudo htpasswd -c /etc/apache2/webdav.password username

用户名自己定,而后会让你输入密码,如果没有 htpasswd 命令就安装apache2-utils。当然这个文件我们也要保护一下,重设一下这个文件的权限。

sudo chown root:www-data /etc/apache2/webdav.password
sudo chmod 640 /etc/apache2/webdav.password

最后的配置

最后还需要修改一下mysite.conf,一是添加 Webdav 目录的权限,二是直接将服务器地址的/webdav关联到这一文件夹,用来方便的访问。

<Directory /var/www>
	Options Indexes FollowSymLinks
	AllowOverride None
	Require all granted
</Directory>

Alias /webdav /home/ubuntu/webdav

<Location /webdav>
	Options Indexes
	DAV On
	AuthType Basic
	AuthName "webdav"
	AuthUserFile /etc/apache2/webdav.password
	Require valid-user
</Location>

保存并关闭文件,重启 Apache 就可以了。访问的地址就是domain_or_IP_addr/webdav, 输入用户名密码就 OK 了。

参考: How to Configure WebDAV Access with Apache on Ubuntu 12.04

Ubuntu 安装 Jekyll

安装 Ruby

这里有一个大坑,就是如果直接安装 Ruby 会安装的版本不高,达不到 Jekyll 的要求,所以我们通过 RVM 安装,安装 RVM 需要 curl,如果没有自己装上,使用 curl 下载 RVM:

curl -sSL https://get.rvm.io | bash -s stable

如果它提示系统没有证书,按照它的提示装上就可以了:

command curl -sSL https://rvm.io/mpapis.asc | gpg --import -

RVM 安装完成后,这里注意一下,RVM 是安装在自己 home 目录下的,以后执行要注意环境变量,第一次执行也要注销或者重启一下主机。利用 RVM 安装新版本的 ruby:

rvm install 2.0.0

此处会比较久,应该是服务器配置不太高,需要编译一会儿,不过也还好,装完可以检查一下:

ruby --version

安装 rubygems

直接用apt-get即可

sudo apt-get install rubygems-integration

安装NodeJS或其他JavaScript runtime

推荐装nodejs(可选therubyracer),直接用apt-get

sudo apt-get install nodejs

安装 Jekyll

gem install jekyll

[Optinal]安装 rdiscount

gem install rdiscount

使用 Git

配置 Github

我是从 Github 上拉取主题,所以先安装 git:

sudo apt-get install git

产生 SSH 公钥

ssh-keygen -t rsa -C xxxx@xxx.com

剩下来就没什么了,写个脚本 push/pull 数据,想方便还可以给远程端命个名:

git remote add origin git@github.com:yourID/yourrepos.git

习惯是把远程端叫origin ,这样也好写统一的控制脚本,而且不同 git 目录是互不干扰的

Cron 自动运行脚本

注意设置服务器时区!

sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

执行命令 crontab -e 就可以调出当前用户的系统定时任务。

总结

到此为止,一个搭建在 AWS 上的免费自动博客系统就完成了,如果不想这么麻烦的话,直接搭载在 github 上也很好,这里动手实践一下还是蛮爽的

声明: 本文采用 BY-NC-SA 授权。转载请注明转自: Omega