在阿里云服务器上部署Jekyll博客

Step 0 首先买一台服务器,并且装好环境

我都是在阿里云上面买,而且我只是想挂一个个人网站,所以只需要最便宜的轻量应用服务器就好,半年只需要72块钱。(我现在想来,之前也应该买香港的服务器,因为更加便宜(大陆的要60块一月),而且不需要给服务器备案,想起我当时备案还弄了好久)。另一方面来说,大陆访问香港的服务器确实会比较慢。

在阿里云服务器上部署Jekyll博客_第1张图片

安装环境主要是安装Ruby和Jekyll的环境,如果是在mac上面,还可能会报一些错。但是在一个纯净的ubuntu环境,那么安装简直太舒服,根本不可能报错。

Step 1: Installing Ruby

sudo apt-get update
sudo apt-get install ruby-full make gcc nodejs build-essential patch

Step 2: Setting up Jekyll

gem install jekyll bundler

创建一个新的博客(里面仅有一些基本信息,但是已经可以在网站上显示内容)

jekyll new myblog
cd myblog
sudo bundle exec jekyll serve --detach --watch

第一行创建一个博客文件夹并且自动完成初始化,最后这一行中detach表示和终端脱离,有点像nohup的作用,在终端关闭的情况下继续运行。这就是我们想要的。

Step 3 启动网站,并且将网页的地址映射到80端口

在阿里云这个统一的环境下,域名的配置就变得很简单。只需要在自己的域名下,进行解析的设置设置解析到服务器的ip地址即可。

在阿里云服务器上部署Jekyll博客_第2张图片

最开始这一步我总是遇到问题,就是配置上了,但是却不能用域名访问。如果直接访问域名,将会出现connection error这样的错误。经过研究,我发现了问题所在。也就是我在Nginx proxy配置的时候,是将本机的ip访问映射到了4000的端口,也就是jekyll侦听的端口。这种情况下,如果我们使用ip地址来访问,Nginx proxy将会将我们引导到4000的端口,并且正确打开网页。但是如果是用域名访问,这个过程就先将用域名解析,得到ip地址,然后电脑去找这个ip地址。我推测,这个过程中服务器看到的还是这个域名,而不是ip地址。(因为这个信息可能是写在包里面没有被解析的过程更改)这样Nginx proxy并不会完成端口的映射,所以就卡在了80端口。这也就是我为什么使用windows机,获得的页面跟只有Nginx proxy,而没有jekyll的状态相同的原因。

当然,阻止我解决这个问题的是,最开始在我使用mac的时候,连Nginx proxy的欢迎页面都没有跳转出来,导致我怀疑是网页都没有被挂上去。

最后

这个过程中还学到了一些东西,知道还有一些可以做得更好的点。比如说,配置上https,以提升网络的安全性。另外还应该使用最小权限原则,尽量不使用超级用户权限,虽然事实上,我用的时候,因为反正是新的服务器,而且用途也很单一,所以就如果报错权限不够就直接上sudo,当然这是很不好的,特别是在多人共用的服务器上面。

参考资料

你可能感兴趣的:(Linux)