如何優雅的搭建一個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搭建個人博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 文章參考自 kitten 的這篇文章和 Ghost 官網王賽寫的這篇文章那么既然已經有人寫了很詳細的文章,為什么我...
    Mitchell閱讀 3,505評論 4 3
  • 首先上個成品:eric.com 一.購買域名,服務器 購買的渠道很多,我是直接在阿里云官網把兩個買齊的.買域名沒什...
    ericze閱讀 1,468評論 4 9
  • 做開發有些時間了,一直希望從高標準嚴格自己,也希望有個特色風格的技術博客,看了喵神的博客,我很喜歡,于是就仿照做了...
    瀾色飛揚閱讀 1,339評論 0 3
  • 博客地址 1. 域名購買 域名就是網址,比如你輸入img421.com(一級域名),而我的博客blog.img42...
    Springer閱讀 2,955評論 4 20
  • 前言 最近腦子一抽,想用ghost搭建一個博客。本來以為,直接把東西往服務器上一扔就行了。沒想到還要搞什么Linu...
    旭旭樂閱讀 1,361評論 0 3