ghost+nginx+MariaDBをインストールして試してみた

Just a blogging platform

f:id:yuhei_kagaya:20131202002117p:plain
ghostは、ブログを書くためのプラットフォームです。
mediumのような、シンプルでかっこいいブログサイトを作ることができます。
ブログを書くためだけの機能のみ提供されているので、使い方はとても簡単です。
記事はmarkdownで書くこともできます。


やたらと高機能になってしまった感のあるWordPressよりも、
ghostの方が書くことに集中できていいかもしれません。

インストール

Ubuntu 12.04.3 LTSにいれてみました。
せっかくなので、フロントにnginx、DBにはMariaDB10.0.6を使ってみました。

インストールしたもの

Node.jsをインストール

cd ~/src
wget http://nodejs.org/dist/v0.10.22/node-v0.10.22.tar.gz
tar xf node-v0.10.22.tar.gz
cd node-v0.10.22
./configure --prefix=/usr/local/node
make

sudo paco -D make install

MariaDB10.0.6をインストール

sudo groupadd mysql
sudo useradd -g mysql -M mysql -s /bin/false

cd ~/src

wget https://downloads.mariadb.org/interstitial/mariadb-10.0.6/kvm-bintar-hardy-amd64/mariadb-10.0.6-linux-x86_64.tar.gz/from/http://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb
gunzip < mariadb | tar xvf -
sudo mv mariadb-10.0.6-linux-x86_64/ /usr/local/
sudo ln -s /usr/local/mariadb-10.0.6-linux-x86_64 /usr/local/mysql

cd /usr/local/mysql
sudo chown -R mysql .
sudo chgrp -R mysql .

sudo apt-get install -y libaio1
scripts/mysql_install_db --user=mysql

sudo chown -R root .
sudo chown -R mysql data

sudo cp support-files/mysql.server /etc/init.d/mysql
sudo sysv-rc-conf mysql on

sudo cp support-files/my-large.cnf /etc/my.cnf

sudo ./bin/mysql_secure_installation

rootユーザーのパスワードを設定
匿名ユーザーの削除
rootユーザーのリモート接続を禁止
testデータベースの削除

sudo sh -c "echo 'export PATH=\$PATH:/usr/local/mysql/bin' >> /etc/profile.d/mysql.sh"
source /etc/profile.d/mysql.sh

とりあえず最低限の設定、文字コードをutf8に

vi /etc/my.cnf
[mysqld]
character-set-server = utf8

mysqlのプロンプトで確認

mysql -uroot -p

status
show engines;
show variables like '%char%';

nginxをインストール

sudo groupadd nginx
sudo useradd -g nginx -M nginx -s /bin/false

sudo mkdir /var/{log,run}/nginx
sudo chown nginx:nginx /var/{log,run}/nginx/


sudo apt-get install -y zlib1g-dev libpcre3-dev

cd ~/src
wget http://nginx.org/download/nginx-1.4.4.tar.gz
tar xf nginx-1.4.4.tar.gz
cd nginx-1.4.4/

./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/run/nginx/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--without-http_ssi_module

make
sudo paco -D make install
sudo chown -R nginx /usr/local/nginx

リバースプロキシの設定
ghostが2368ポートで立ち上がるので、流す。

vi /usr/local/nginx/conf/nginx.conf
// (snip)
    server {
        listen       80;
        server_name  localhost;

        location / {
            proxy_pass http://localhost:2368;
        }
// (snip)

起動スクリプト

cd ~/src
wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx
sed -i \
-e 's/PIDSPATH=\/usr\/local\/nginx\/logs/PIDSPATH=\/var\/run\/nginx/' \
-e 's/lockfile=\/var\/lock\/subsys\/nginx/lockfile=\/var\/run\/nginx/' \
nginx
sudo chown root:root nginx
sudo chmod 755 nginx
sudo mv nginx /etc/init.d/
sudo /etc/init.d/nginx start

ghostをインストール

cd ~/src
wget https://ghost.org/zip/ghost-0.3.3.zip
unzip ghost-0.3.3.zip -d ~/ghost
cd ~/ghost
cp config.example.js config.js


本番環境として動かすので、productionの設定
最初のユーザを作るためにメール送信の設定が必要ぽいので
この辺に書いてあるのでどれかを使う。
http://docs.ghost.org/mail/

vi config.js
// (snip)
    production: {
        url: 'http://my-ghost-blog.com',
        mail: {
             transport: 'SMTP',
             options: {
                 service: 'Gmail',
                 auth: {
                     user: 'your-account@gmail.com',
                     pass: 'password'
                 }
             }
        },
        database: {
            client: 'mysql',
            connection: {
                {
                  host: '127.0.0.1',
                  user: 'db-user',
                  password: 'db-user-password',
                  database: 'ghost',
                  charset: 'utf8'
                },
            },
            debug: false
        },
        server: {
            host: '127.0.0.1',
            port: '2368'
        }
    },
// (snip)
npm install mysql
npm install --production

ghostを起動

sudo NODE_ENV=production /usr/local/node/bin/npm start

せっかくなので、foreverを使ってデーモン化する

sudo npm install  forever

起動と停止のスクリプト

vi start.sh
#!/bin/sh
export PATH=$PATH:/usr/local/node/bin
export NODE_ENV=production
forever start index.js
vi stop.sh
#!/bin/sh
export PATH=$PATH:/usr/local/node/bin
export NODE_ENV=production
forever stop index.js
chmod u+x {start,stop}.sh

ブログのユーザを作成

/ghost/signupにアクセスしてサインアップ
http://my-ghost-blog.com/ghost/signup/

このあと、config.jsのメールの設定はとっちゃってok

テーマの追加

テーマを変更すると、ブログの外観をガラリと変更できます、

http://marketplace.ghost.org/
このあたりから選んでディレクトリに突っ込んでghostを再起動すると
管理画面のsetting -> generalから追加したテーマを選択することができるようになります。

ghostのフォーラムにも上がってた
https://ghost.org/forum/themes/

テーマ「ghostium」の追加例:

cd ~/ghost/content/theme
git clone https://github.com/oswaldoacauan/ghostium/


今の流行なんでしょうか、フラットデザインでレスポンシブ、写真と文字がでかいデザインが多いですね。
シンプルでかっこいいので、使う人が増えてテーマが増えるといいなぁ。