如何优雅的搭建一个Ghost博客?

[Ubuntu+Nginx+Mysql+Node.js+Ghost]

博客地址:https://wwxiong.com

1、前期准备

lsb_release -a //列出当前系统所有版本信息
sudo apt-get update //更新软件源
sudo apt-get install -y language-pack-en-base //中文支持安装
locale-gen en_US.UTF-8 locale  //命令设置语言环境
sudo apt-get install -y vim htop git unzip //安装vim htop git unzip

2、Nginx安装和配置

2.1 安装nginx

sudo apt-get install nginx -y 
sudo apt-get install curl -y # curl命令行工具,发出网络请求得到和提取数据。
curl -i 127.0.0.1 # 确保Nginx运行,默认监听80端口

2.2 设置web目录和cache目录

mkdir /var/www
mkdir -p /var/cache/nginx # -p 可以一下子把中间路径中不存在的文件夹也一起建立,非常实用
chown www-data:www-data /var/www # nginx安装会自动建立用户www-data并且默认用这个用户操作
chown www-data:www-data /var/cache/nginx

2.3 为Ghost单独创建nginx配置文件

rm /etc/nginx/sites-enabled/default # 删掉默认的配置
vim /etc/nginx/sites-available/ghost # 建立一个nginx配置文件
server {
    listen 80;
    server_name wwxiong.com;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

2.4 重启服务

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost # 建立软链接到到实际配置路径,方便统一维护配置文件变化。
sudo service nginx restart # nginx安装好时已经默认注册了系统的服务,我们就可以直接重启nginx服务,让配置文件生效

2.5 web权限配置

sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost
sudo chown -R ghost:ghost /var/www/ghost/

4、Mysql安装和配置

4.1 安装mysql

sudo apt-get install -y mysql-server-5.6

4.2 设置默认字符集:

$ sudo vim /etc/mysql/my.cnf
[mysqld]
collation-server = utf8_unicode_ci  
init-connect='SET NAMES utf8'  
character-set-server = utf8 

4.3 查看字符集

service mysql restart
mysql -u root -p # 输入设置的密码
show variables like 'char%';
show variables like 'collation%';

4.4 创建数据库

mysql -uroot -p -e 'create database ghost;'

5、Node.js安装

sudo apt-get update  
sudo apt-get install -y python-software-properties python g++ make  
sudo add-apt-repository ppa:chris-lea/node.js   
sudo apt-get install -y nodejs
sudo apt-get update 
sudo apt-get install -y nodejs
node -v 
npm -v

6、Ghost安装和配置

6.1 Ghost安装

sudo mkdir -p /var/www
cd /var/www
sudo wget https://ghost.org/zip/ghost-latest.zip
sudo unzip -d ghost ghost-latest.zip

6.2 Ghost配置

cd /var/www/ghost
sudo cp config.example.js config.js
sudo vim config.js
production: {
        url: 'http://wwxiong.com', //替换为你自己的域名。
        mail: {},
        database: {
            updateCheck: false,
            client: 'mysql',
            connection: {
                host     : '127.0.0.1',
                user     : 'root', //我们暂且用 MySQL 的 root 账户
                password : '****', //输入你的 MySQL 密码
                database : 'ghost', //我们前面为 Ghost 创建的数据库名称
                charset  : 'utf8'
            }
        },
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '127.0.0.1',
            port: '2368'
        }
    },

6.3 运行ghost

cd /var/www/ghost
vim package.json 
删除package.json 中的"sqlite3": "3.*.*"  //配置为mysql
sudo npm start --production

6.4 保持Ghost的运行

sudo npm install -g forever
NODE_ENV=production forever start index.js
forever list

7 问题解决

7.1 mysql重启失败

问题:service mysql start 时报start: Job failed to start
解决:① 先重启系统再试试service mysql start
     ② 如果①不行先运行 apt-get upgrade -y 升级一下系统,再重启系统后service mysql start

7.2 502 Bad Gateway

① 检查权限

检查/var/www/ghost权限是否为ghost
如果不是则通过创建新用户ghost并给权限
sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost //已创建可略过
sudo chown -R ghost:ghost /var/www/

② 检查配置/etc/nginx/sites-enabled/ghost 是否与/etc/nginx/sites-available/ghost链接
如果没有该软链接则通过以下命令建立并重启nginx

sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
sudo service nginx restart

注:如果在/etc/nginx/sites-available/ghost更改过配置文件或者配置错误,需要删除原来链接并重新建立

sudo rm sites-enabled/ghost  
sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
sudo service nginx restart

③ 检查/var/www/ghost 是否安装ghost的生产模块、是否已正确配置config.js

sudo npm install -g forever //安装forever
NODE_ENV=production forever start index.js //forever保持ghost运行

8 配置相关

8.1 nginx配置

vim /etc/nginx/sites-available/ghost
server {
    listen 80;
    server_name wwxiong.com;#只需更改此处域名
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

8.2 mysql配置

vim /etc/mysql/my.cnf 
[mysqld]
collation-server = utf8_unicode_ci //指定服务器字符集
init-connect='SET NAMES utf8' //设置mysql编码方式
character-set-server = utf8 //连接字符集

8.3 config.js配置

cd /var/www/ghost
cp config.example.js config.js
vim config.js
production: {
        url: 'http://wwxiong.com', //替换为你自己的域名。
        mail: {},
        database: {
            updateCheck: false,
            client: 'mysql',
            connection: {
                host     : '127.0.0.1',
                user     : 'root', //我们暂且用 MySQL 的 root 账户
                password : '****', //输入你的 MySQL 密码
                database : 'ghost', //我们前面为 Ghost 创建的数据库名称
                charset  : 'utf8'
            }
        },
        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '127.0.0.1',
            port: '2368'
    }
},

9 参考文章

How To Create a Blog with Ghost and Nginx on Ubuntu 14.04

如何搭建一个Ghost平台的博客?

博客第一篇:记录这个网站的诞生过程

搭建Ghost博客 经典教程

使用Ghost搭建个人博客

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

推荐阅读更多精彩内容

  • 文章参考自 kitten 的这篇文章和 Ghost 官网王赛写的这篇文章那么既然已经有人写了很详细的文章,为什么我...
    Mitchell阅读 3,435评论 4 3
  • 首先上个成品:eric.com 一.购买域名,服务器 购买的渠道很多,我是直接在阿里云官网把两个买齐的.买域名没什...
    ericze阅读 1,405评论 4 9
  • 做开发有些时间了,一直希望从高标准严格自己,也希望有个特色风格的技术博客,看了喵神的博客,我很喜欢,于是就仿照做了...
    澜色飞扬阅读 1,284评论 0 3
  • 博客地址 1. 域名购买 域名就是网址,比如你输入img421.com(一级域名),而我的博客blog.img42...
    Springer阅读 2,908评论 4 20
  • 前言 最近脑子一抽,想用ghost搭建一个博客。本来以为,直接把东西往服务器上一扔就行了。没想到还要搞什么Linu...
    旭旭乐阅读 1,293评论 0 3