使用ghost建立一个免费博客网站
现时建立一个博客的方法五花八门,大致可分为三类。
- 使用第三方博客平台,直接申请一个博客网站,例如Blogger, Medium
- 使用第三方博客框架,建立一个静态博客网站,可以将Github内容转化为博客网站,例如jekyll, GitHub Pages
- 使用第三方网站框架,建立一个博客网站,可以根据自己需要设置网站功能,例如WordPress, ghost
本文章采用的是第三种方法,使用ghost框架来搭建一个免费博客网站。
为什么使用ghost
在以上介绍的三类方法中,以第一种最为方便,注册账号即可建立自己的博客网站,但可修改的空间不多。第三种最为自由度最高,但是建立网站的步骤比较繁琐。第二种为两方面的折中选择。读者可按照自身情况建立自己的博客。如读者自身有一定编程基础,建议使用第二种或第三种方法。
在各种第三方网站框架中,ghost相比其他框架,优势在于自身的小体积和易于上手。相比WordPress那臃肿的框架,ghost的目标十分明确,就是建立一个轻量级,易于上手又不乏扩展性的博客平台。
建立一个博客网站的流程
使用ghost建立一个网站大致分为以下几个步骤,部分流程的先后次序并非绝对,读者可按自身需求调整。(方法一)
- 为博客申请一个(免费)伺服器(可选)
- 在伺服器上安装必要前置软件
- 在伺服器上搭建ghost平台
- 为博客购买和设置域名(可选)
或者可以选用Bitnami软件包,流程为:(方法二)
- 为博客申请一个(免费)伺服器(可选)
- 安装Bitnami软件包
- 为博客购买和设置域名(可选)
虽然Bitnami简化了安装流程,实现了一键安装ghost,但是作者在使用Bitnami之后,出现ghost一旦关闭就不能重新开启的bug(Issue 501),所以不推荐使用Bitnami。
1. 申请一个(免费)伺服器(可选)
博客平台可以建立在自己的电脑或者搭建在第三方伺服器上,两者各有优势。
搭建在自家电脑的优势:
- 不需要远程管理,伺服器的情况自己可以在地监控。
搭建在自家电脑的缺点:
- 需要24小时开机运行,一旦关机,博客就不能被访问。
搭建在第三方平台的优势:
- 第三方平台能提供强大的技术支援和功能扩展。
搭建在第三方平台的缺点:
- 通常需要一定费用来维持伺服器运作
- 需要远程管理
本文选择使用亚马逊网上服务(AWS)的EC2来搭建一个免费的伺服器(中国读者请使用中国亚马逊云服务)。现时AWS推出不少免费的服务,其中包括了EC2,免费期为期一年。读者可以按照自己喜好使用其他伺服器平台,例如阿里云等。
使用AWS服务需要:
- 常用邮箱
- 信用卡
- 电话号码
1.1 注册一个AWS服务
登入AWS,注册一个免费账号。
之后填写个人账号名称,邮箱,密码。进入下一页。
选择个人账号,填写个人的联络资讯。
填写个人信用卡资料,AWS会向信用卡账号收取1美元做验证,之后会归还。
然后是电话验证,AWS会打电话到填写的电话号码,这时候需要输入AWS网上提供的验证码。(图片来自apachefriends)
接着选择Basic服务。(图片来自apachefriends)
最后确认所有资讯无误,注册AWS账号成功。
1.2 申请一个EC2伺服器
登入AWS Console,选择EC2。
选择'Launch Instance',建立一个新伺服器。
现时可以建立两种伺服器:
- 如果不选用Bitnami软件包,建立一个ubuntu伺服器。(方法一)
- 如果选用Bitnami软件包,建立一个自带ghost的伺服器。(方法二)(不建议)
方法一:建立ubuntu伺服器
选择ubuntu 16.04
注意:请谨记选择t2.micro,唯有t2.micro才能享有AWS一年免费服务,即使选择t2.nano也会收钱。
然后不要选'Review and Launch',先设置其他。'Configure Instance'可以不用理会,'Add Storage'则是选择伺服器容量,不建议太小,也不建议太大。建议8GB-10GB即可。
注意:免费服务只提供30GB容量,请不要超出。
'Configure Security Group'方面,添加HTTP和HTTPS接口,否则伺服器不能透过输入网址的方式访问。
确认无误后,点右下角的launch便可建立server。
最后AWS会询问关于配对钥匙的方案,这是关于SSH的访问使用。原因请参考RSA加密。请选择'Create a new key pair',产生一堆新的钥匙。并为钥匙命名。这时候游览器会自动下载自己的密匙。
注意:请务必保存好密匙文件,因为AWS一旦发出密匙文件,就不会保存。一旦密匙丢失,是没有方法找回来的。而密匙是透过SSH连上伺服器的关键,请妥善保管。
点击'Launch Instance',ubuntu伺服器就成功建立了。
方法二:使用bitnami,建立自带ghost的伺服器
先点击AWS Marketplace。
然后在搜寻栏输入ghost,选择'Ghost Certified by Bitnami',
按continue,
同方法一,选择t2.micro。其他选项基本上Bitnami已经预先设置好。(Bitnami预设容量为10GB)
最后AWS同样会询问关于配对钥匙的方案。选择'Create a new key pair',保管好key即可。
点击'Launch Instance',伺服器就成功建立了。
使用方法二的话,bitnami软件包自带安装apache,mysql,node.js和ghost。一旦伺服器运行会自动运行ghost,直接完成网站建设。
1.3 访问EC2伺服器
建立伺服器后,可透过SSH方法连访问伺服器。支持SSH链接的工具有很多,例如PuTTY或者WinSCP。读者可按照自身需要使用。作者使用PuTTY作为示范。
返回EC2界面,'Running Instances'显示有多少server正在运行。点击'Running Instances'。
点击server,选择左上'connect',AWS会教如何使用putty登入伺服器。保存Public DNS网址(xxxxxx.xxxxx.compute.amazonaws.com)
注意:如果使用Bitnami软件包,这里有额外一步-取得应用密码(Application Password),请务必在登入前完成,应用密码仅在第一次显示。
取得应用密码:
- 点击'Actions',选'Instance Setting',点'Get System Log'(图片来自@robmadd3n)
- 在log文件中寻找'Setting Bitnami application password to'(图片来自@robmadd3n)
- 保存该密码,每次登入都需要输入该密码。
使用PuTTY登入伺服器分为2步:
- 将之前下载的密匙(xxx.pem)转换为putty密匙格式(xxx.ppk)
- 透过PuTTY,设置伺服器网址和链接密匙,登入伺服器
(步骤可参考AWS文档)
1.3.1 转换密匙
开启PuTTY Key Generator(程序缩写为PuTTYgen.exe)
点击'Load',选取之前下载的pem文件,PuTTY默认打开.ppk文件,请更改为All Files
之后PuTTY会跳出提示,提醒要保存为'private key'。跟从提示,点击'Save private key',完成步骤。
1.3.2 PuTTY登入设置
打开PuTTY,输入Public DNS网址在Host Name一栏。
在左手边的'Category'中,点'Connection',点'SSH',点'Auth'。右手边选'Browse...',打开刚生成的ppk文件。
返回一开始的PuTTY页面('Session'), 点击Open即可链接上伺服器。(登入前可以保存设置,方便下次登入)
如果不使用Bitnami(方法一),用户名就是ubuntu;如果使用了Bitnami软件包(方法二),用户名就是bitnami,还需要输入之前保存的应用密码。
Ubuntu登入成功:
Bitnami用户(方法二)到这一步可以直接调至域名购买和设置,ubuntu用户继续(方法一)。
2. 在伺服器上安装必要前置软件
(可参考ghost官方文档)
注意:作者安装的是production版本,如果需要安装development版本,请阅读ghost官方文档。
建议新用户登入ubuntu伺服器后,先运行一下指令更新系统。
sudo apt-get update && sudo apt-get dist-upgrade
在安装ghost前,需要安装的软件为node.js,mysql,nginx
2.1 安装node.js
安装node.js十分简单,直接输入命令
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
再输入命令,直接安装node.js
sudo apt-get install -y nodejs
注意:ghost官方不建议使用nvm来安装,更新和维护node.js,建议删除nvm以免造成影响。详情参考官方文档。
2.2 安装mysql
安装mysql只需要输入一项命令即可
sudo apt-get install mysql-server
过程中,系统会询问用户,要求设置一个密码,请谨记该密码。
2.3 安装nginx
如同安装mysql和node.js,输入命令
sudo apt-get install nginx
以免防火墙阻挡外部访问链接,输入命令
sudo ufw allow 'Nginx Full'
自此所有前置已经安装完毕,下一步可以安装ghost
3. 在伺服器上安装ghost
先安装ghost-cli,这会方便输入ghost相关指令
sudo npm i -g ghost-cli
建议新开一个文件夹以存放ghost和相关插件,输入命令,将会建立一个名加ghost的文件夹在/var/www的目录下。(如果/var/www不存在,则会一同建立。)
sudo mkdir -p /var/www/ghost
注意:ghost不能安装在server根目录(即是/root),安装会出现bug,不能安装等问题。
移至新文件夹
cd /var/www/ghost
输入ghost-cli命令,安装ghost
ghost install
安装过程中会要求输入一下资料(ghost版本的差异可能导致问题顺序不同,新版本会要求回答更多问题)
(过程可参考ghost-install文档)
首先是博客域名'Enter your blog Url:',如果暂时没有想好或申请,可以只打ip地址暂代。
(ghost可能会询问'Do you wish to set up ssl?', 输入'no')
其次是MySQL设置'Enter your MySQL hostname [localhost]:',如果按照以上流程,MySQL安装在本地伺服器,直接按'Enter'键即可。
接着是'Enter your MySQL username:',按照以上流程,输入'root'。如果之前有为数据开新开用户,则使用该用户名。
跟着是'Enter your MySQL password:',输入数据库密码。
再者是'Ghost database name:',为ghost的database起名。
之后是'Do you wish to set up a ghost MySQL user?',为ghost建立一个新用户。
然后是'Do you wish to set up nginx?',这里可以输入yes,之后也可以更改。
'Do you wish to set up systemd?'这个可以输入yes,之后也可以更改。
'Do you want to start Ghost?'输入yes,运行ghost。
以上资料可以在config.development.json更改(位置在ghost安装目录下)
(参考ghost-config文档)
这时候输入伺服器ip:ghost端口就能正常访问博客。
如出现任何问题,参考ghost-troubleshooting文档。
4. 为博客购买和设置域名(可选)
域名可以在网上各大域名商购买,例如godaddy,namecheap等。作者的域名是在namesilo购买。在不同平台购买域名都各有优势,读者可按照自身需求购买。各大域名平台都长期有优惠卷提供,能便宜1美金不等,请自行搜索。
注意:在中国内地建立的伺服器购买域名时需要域名备案,外国第三放域名平台可能不设有域名备案服务,请在购买域名前做好搜索,选择合适的域名商。
这里以namesilo为例,注册账号和购买域名(过程略),登入后选择'domain manager'。
点选右边第三个按钮(Manage DNS for this domain)
namesilo会为所有网址预设广告link等,这里全部删除。
然后选取'A'
输入AWS EC2的伺服器ip(仅限ipv4地址)
建议一同开启www网址前置
注意:AWS EC2中每次伺服器重启都会委派新的ip地址,如果想ip地址固定,可以选用EC2的elastic IP,令ip地址固定,不用更新DNS。(教程略)
如果之前ghost url设置上使用的是ip地址,请更改ghost-config文件和nginx配置。(config.development.json位置在ghost安装目录下,nginx配置ghost.conf在/etc/nginx/sites-available/)
(nginx配置可参考ghost中国)
DNS更新需要一定时间,如果半小时至一小时后,输入域名仍未能访问ghost,则很有可能是设置上有问题,建议重新检视DNS,nginx和ghost的设定。
如有任何疑惑和问题,欢迎在讨论区讨论。