实战篇-手把手教你搭建ghost博客

首先上个成品:eric.com

一.购买域名,服务器

购买的渠道很多,我是直接在阿里云官网把两个买齐的.买域名没什么需要注意的,搜一下自己喜欢的域名然后按步骤购买就可以了.
买服务器的话,最低配置就可以满足需求了,操作系统要选择UBuntu 64位系统,带宽1M,具体配置如下:

image

买完服务器之后就可以进行域名解析啦,域名解析如下,添加两条就可以了
img

二.配置服务器

2.1 连接服务器

Linux/Mac OS X系统的电脑

  1. 打开SSH客户端
  2. 用户名:root 实例:120.26.xxx.xxx
  3. 输入实例密码进行登录。

Windows系统的电脑

  1. 下载安装Windows SSH和Telnet客户端Putty。 下载Putty
  2. 用户名:root 实例:120.26.xxx.xxx
  3. 按照Putty使用帮助进行登录。Putty使用帮助

ssh root@120.26.xxx.xxx
点击回车,然后输入你的服务器密码,如果密码无误就会出现欢迎界面.

2.2 安装Node.js&Nginx

sudo apt-get update sudo apt-get install -y python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js
如果敲上面的代码出现: add-apt-repository: command not found ,需要先安装才能继续进行:
sudo apt-get install python-software-properties sudo apt-get install software-properties-common
安装完成之后继续执行下面的命令:
sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
都执行完之后用node -v查看安装是否成功:v0.10.37
npm -v:1.4.28
接下来安装Nginx: sudo apt-get install nginx

2.3 安装MySQL

用MySQL数据库来管理存储博客的数据
sudo apt-get install mysql-server
安装过程中系统会让你给root用户设置密码,

image

如果安装过程中出现 mysql Access denied for user 'root'@'localhost' (using password:YES) 解决方案:

  1. 打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。
  2. 重启MySQL服务。
  3. 在命令行中输入“mysql -uroot -p”(不输入密码),回车即可进入数据库。
  4. 执行,“use mysql;”使用mysql数据库。
  5. 执行,“update user set password=PASSWORD("rootadmin") where user='root';”(修改root的密码)
    (期间我还select下user表中的记录,查询全部的时候显示了一些乱码,然后我只查询了user表中的Host、User、Password字段,貌似当时显示了3条记录,有1个没有名称。当然,为了解决问题,这些我也管不了了。)
  6. 打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。
  7. 重启MySQL服务。
  8. 在命令行中输入“mysql -uroot -prootadmin”,问题搞定!
    实际解决方案:删除mysql,重新安装
    安装完MySQL后,设置utf8
    执行命令: cd /etc/mysql
    编辑my.conf文件: vi my.cnf
    然后去修改一下配置文件,点击i进入插入模式
    [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' character-set-server = utf8
    编辑完成之后,按ESC 然后 输入 :wq,保存并退出编辑.然后重启MySQL,
    service mysql restart
    之后我们来检查一下修改是否正确,进入MySQL命令行界面:
    mysql -uroot -p
    输入之前设置的MySQL密码,然后输入指令:
    show variables like 'collation%';,检查键值对是否一致,如果不一致,就去打开刚才的配置文件检查修改的是否有误.
2.4 创建ghost数据库,配置Nginx
  • 为ghost创建一个MySQL数据库,执行如下命令:
    mysql -uroot -p -e 'create database ghost;'
    系统会提示你输入密码,输入刚才设置的MySQL的root用户的密码
  • 我们要用Nginx做ghost的前段代理服务.首先进入Nginx目录下:
    cd /etc/nginx/sites-available/
    然后创建并且编辑ghost.conf配置文件:
    sudo touch ghost.conf
    sudo vi ghost.conf
    server { listen 80; server_name ericze.com; //替换为你自己的域名! location / { proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:2368; } }
    然后为ghost.conf文件做一个软连接到当前目录下(这一步不知道是为啥),反正照着做吧:
    sudo ln -s /etc/nginx/sites-available/ghost.conf /etc/nginx/sites-enabled/ghost.conf
  • 通过npm start 启动ghost的话,如果关闭了远程连接,Ghost也就停了,因此需要一个文件改动监听且自动重启的工具:forever来解决这个问题,输入一下命令安装forever:
    sudo npm install forever -g
2.5 安装Ghost

现在前戏已经做足,重头戏登场,这里我参考的文章里给的方法都不太对,我稍微花了点时间去查找.因为下载的是zip文件,所以先下载个解压工具,
进入srv文件夹:cd /srv/
下载解压工具:sudo apt-get install unzip
然后去下载Ghost: sudo wget http://dl.ghostchina.com/Ghost-0.7.4-zh-full.zip,这个地址是我当时下载的最新版,如果要下载最新版,可以直接去官网拷贝,地址为: Ghost官网下载地址.
然后解压ghost: sudo unzip ghost.zip -d ghost
解压之后,进入Ghost目录修改配置文件:cd /srv/ghost/
拷贝一份配置文件模板:sudo cp config.example.js config.js
然后打开配置文件进行编辑:sudo vi config.js

配置文件里边有两种数据库,上边的是sqlit3的,把那个注释掉,然后下边那个是MySQL的配置,把这个注释打开,注意操作过程中不要出错.这里只修改一下生产环境的配置信息,具体修改如下:
// ### Production // When running Ghost in the wild, use the production environment // Configure your URL and mail settings here production: { url: 'http://ghostchina.com', //替换为你自己的域名。 mail: {}, database: { updateCheck: false, client: 'mysql', connection: { host : '127.0.0.1', user : 'root', //我们暂且用 MySQL 的 root 账户 password : '123456', //输入你的 MySQL 密码 database : 'ghost', //我们前面为 Ghost 创建的数据库名称 charset : 'utf8' } }, server: { // Host to be passed to node's `net.Server#listen()` host: '127.0.0.1', port: '2368' } },
编辑完成之后最好检查一下,因为随便输错一个字符,就要从头排查错误,很伤!
比对无误之后,按ESC,然后输入 :wq保存并退出编辑.

  • 安装ghost依赖库 打开ghost系统的目录下面的package.json文件,将"sqlite3": "2.2.0", 这一行删除掉(注意,你看到的 sqlite 版本可能会不一样,但是,只是 sqlite3 字样,删除即可,不要注释上,一定要把那一行删除了).
    接下来,进入存放Ghost目录下,安装所以来的npm包:
    cd /srv/ghost
    sudo npm install --production
    当所有依赖包安装好之后,目录下就多出一个 node_modules 目录.
终于可以启动ghost了!

执行如下命令重启Nginx:
sudo service nginx restart
然后进入ghost文件目录:cd /srv/ghost
使用forever工具启动ghost:sudo NODE_ENV=production forever start index.js
然后打开浏览器输入你的域名就可以看到ghost画面了,如果你的域名没有备案的话,可以先输入服务器地址查看页面,书写博客。

image

在搭建过程中遇到什么问题,可以联系我交流问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容

  • 文章参考自 kitten 的这篇文章和 Ghost 官网王赛写的这篇文章那么既然已经有人写了很详细的文章,为什么我...
    Mitchell阅读 3,403评论 4 3
  • 博客地址 1. 域名购买 域名就是网址,比如你输入img421.com(一级域名),而我的博客blog.img42...
    Springer阅读 2,849评论 4 20
  • 做开发有些时间了,一直希望从高标准严格自己,也希望有个特色风格的技术博客,看了喵神的博客,我很喜欢,于是就仿照做了...
    澜色飞扬阅读 1,265评论 0 3
  • 2016.12.9 colValue是Object且为null,那么下面这个表达式的结果是啥? 这个其实返回的是t...
    _Away_y阅读 503评论 2 0
  • 最近的脾气不好,大概不是因为高温的缘故,而是体内的板块运动碰撞结果。 工作板块与学习板块,摩擦的次数比较多,于是,...
    木徒阅读 195评论 1 1