序章

Ghostは軽量(〜7.5MB)のオープンソースのブログプラットフォームで、本当に使いやすいです。 Ghostは完全にカスタマイズ可能です。 インターネット上のGhostで利用できるテーマはたくさんあり、無料でも有料でもあります。

このチュートリアルでは、GhostをセットアップしてUbuntu14.04システムで実行する手順を説明します。 また、プロキシポートにNginxをインストールし、ノードパッケージであるforeverをインストールして、Ghostをバックグラウンドで実行し続けます。

前提条件

サーバーがGhostを実行するための最小サイズ要件はありません。 ドロップレットを作成するサイズを決定するときは、ブログにアクセスする訪問者の数と、共有する予定のコンテンツの量を考慮してください。 このチュートリアルは、Ubuntu14.04を実行している最小サイズのDigitalOceanDropletでテストされました。

始める前に、次のものが必要です。

  • Ubuntu14.04ドロップレット
  • ドロップレットのIPアドレスを指す登録済みドメイン名
  • sudo権限を持つroot以外のユーザー

このチュートリアルは、ドロップレットを指すようにドメイン名を設定するのに役立ちます。

このチュートリアルのすべてのコマンドは、root以外のユーザーとして実行する必要があります。 コマンドにrootアクセスが必要な場合は、その前にsudoが付きます。 Ubuntu 14.04を使用したサーバーの初期設定では、ユーザーを追加してsudoアクセスを許可する方法について説明しています。

ステップ1—Node.jsとNpmをインストールします

ローカルパッケージインデックスを更新し、zipおよびwgetパッケージをインストールする必要があります。 これらは、このチュートリアルの後半で使用します。

  1. sudo apt-get update
  2. sudo apt-get install zip wget

GhostにはNode.jsv0.10.x(最新の安定版)が必要です。 v0.12.xなどの不安定なバージョンのNodeは、サポートされていません。 Node.jsv0.10.36およびnpmv2.5.0は、Ghost.orgによって推奨されています。

このチュートリアルのPPAメソッドを使用してNode.jsをインストールします。

Node.jsをインストールしたら、次を実行してインストールされているバージョンを確認します。

  1. node -v

出力は次のようになります。

v0.10.38

npmがインストールされているかどうかを確認します。

  1. npm -v

インストールされている場合は、インストールされているバージョンのnpmが出力されます。

1.4.28

npmがインストールされていないというエラーが出力された場合は、次のコマンドでインストールしてください。

  1. sudo apt-get install npm

次のコマンドを実行して、npmをバージョン2.5.0に更新します。

  1. sudo npm install [email protected] -g

インストールされているnpmのバージョンを確認してください。

  1. npm -v

出力は次のようになります。

2.5.0

ステップ2—Ghostをインストールします

次に、Ghostをインストールする必要があります。 Ghost.orgはGhostをvar/www/ghostにインストールすることを推奨しているので、そこにインストールします。

まず、ディレクトリ/var/www/を作成してから、GhostのGitHubリポジトリから最新バージョンのGhostをダウンロードします。

  1. sudo mkdir -p /var/www/
  2. cd /var/www/
  3. sudo wget https://ghost.org/zip/ghost-latest.zip

Ghostの最新バージョンを入手したので、それを解凍する必要があります。 また、ディレクトリを/var/www/ghost/に変更します。

  1. sudo unzip -d ghost ghost-latest.zip
  2. cd ghost/

これで、Ghostの依存関係とノードモジュールをインストールできます(本番の依存関係のみ)。

  1. sudo npm install --production

これが完了すると、Ghostがインストールされます。 Ghostを起動する前に、Ghostを設定する必要があります。

ステップ3—Ghostを設定する

Ghostの設定ファイルは/var/www/ghost/config.jsにあります。 ただし、そのようなファイルはGhostとともにインストールされません。 代わりに、インストールにはconfig.example.jsが含まれます。

サンプル構成ファイルを適切な場所にコピーします。 変更を元に戻す必要がある場合に備えて、元の構成ファイルのコピーを入手できるように、移動するのではなく、必ずコピーしてください。

  1. sudo cp config.example.js config.js

productionセクションにあるURLとメール設定は、変更が必要な情報の重要な領域です。 URLが必要です。 それ以外の場合、リンクをクリックするとデフォルトのhttp://my-ghost-blog.comページに移動します。 Ghostはメール設定がなくても機能しますが、これを追加することをお勧めします。 この記事の執筆時点では、Ghostは、ユーザーがアカウントのパスワードを忘れた場合にのみメールが機能することを要求しているため、メールを設定しなくてもそれほど害はありません。

編集用にファイルを開きます。

  1. sudo nano config.js

urlの値をドメインに変更する必要があります(または、現在ドメインを使用したくない場合は、サーバーのIPアドレスを使用できます)。 この値はURLの形式である必要があります。 たとえば、http://example.com/またはhttp://45.55.76.126/です。 この値が正しくフォーマットされていない場合、Ghostは起動しません。

また、serverセクションのhostの値を0.0.0.0に変更します。

以下に、変更する必要のある値を赤で示します。

/var/www/ghost/config.js
var path = require('path'),
    config;

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'http://my-ghost-blog.com',
        mail: {
            // Your mail settings
        },
        database: {
            client: 'sqlite3',
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')
            },
            debug: false
        },

        server: {
            // Host to be passed to node's `net.Server#listen()`
            host: '127.0.0.1',
            // Port to be passed to node's `net.Server#listen()`, for iisnode s$
            port: '2368'
        }
    },

(...)

ファイルを保存し、CTRL+XY、最後にENTERの順に押して、nanoテキストエディターを終了します。

/var/www/ghostディレクトリにいる間に、次のコマンドでGhostを起動します。

  1. sudo npm start --production

出力は次のようになります。

> [email protected] start /var/www/ghost
> node index

Migrations: Database initialisation required for version 003
Migrations: Creating tables...
Migrations: Creating table: posts

[...]

すべてがうまくいけば、ポート2368 http://your_domain._name:2368(またはhttp://your_servers_ip:2368)を使用してブログにアクセスできるはずです。

端末のCTRL+Cを押して、Ghostインスタンスをシャットダウンします。

注:ゴーストはさらにカスタマイズできます。 Ghost.org では、各構成オプションについて詳しく説明しています。

ステップ4—Nginxをインストールします

次のステップはNginxをインストールすることです。 基本的に、ポート80の接続は、Ghostが実行されているポートに接続できます。 簡単に言うと、:2368を追加しなくてもGhostブログにアクセスできます。

次のコマンドでインストールします。

  1. sudo apt-get install nginx

次に、ディレクトリを/etc/nginxに変更し、/etc/nginx/sites-enabledのデフォルトファイルを削除して、Nginxを構成する必要があります。

  1. cd /etc/nginx/
  2. sudo rm sites-enabled/default

/etc/nginx/sites-available/ghostという名前の新しいファイルを作成し、nanoで開いて編集します。

  1. sudo touch /etc/nginx/sites-available/ghost
  2. sudo nano /etc/nginx/sites-available/ghost

次のコードをファイルに貼り付け、で強調表示されている赤のコードをドメイン名に変更します。ドメインを今すぐ追加しない場合は、サーバーのIPアドレスに変更します。

server {
    listen 80;
    server_name your_domain.tld;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

次に、sites-enabledで構成をシンボリックリンクします。

  1. sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost

Nginxを再起動します:

  1. sudo service nginx restart

次に、新しいユーザーを作成します。 このユーザーには、ディレクトリ/var/www/ghostで作業を行うための権限のみが付与されます。 これはセキュリティ対策です。 Ghostが危険にさらされた場合、システムは安全になります。 これは、次のコマンドを実行することで実行できます。

  1. sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost

特権を付与します:

  1. sudo chown -R ghost:ghost /var/www/ghost/

これで、ghostユーザーとしてログインできます。

  1. su - ghost

次に、Ghostを起動する必要があります。

  1. cd /var/www/ghost
  2. npm start --production

ポート80でhttp://としてブログにアクセスできるはずです。 /またはhttp:// /。

ステップ5—foreverでGhostを実行し続ける

次のステップは、Ghostをバックグラウンドで実行し続けることです。 foreverは、Ghostをバックグラウンドで起動し、Ghostが稼働していることを確認するために使用できるノードモジュールです。 Ghostがクラッシュした場合、Ghostの別のインスタンスが永久に自動的に開始されます。

Ghostディレクトリ内から次のコマンドを使用してforeverをインストールします。 /var/www/ghost。 ただし、コマンドを実行する前に、ghostユーザーからログアウトし、root以外のユーザーにログインしてください。

  1. exit
  2. sudo npm install -g forever

ghostユーザーとしてGhostを起動します。 また、Ghostディレクトリから実行する必要があります。

  1. su - ghost
  2. cd /var/www/ghost
  3. forever start index.js

出力は次のようになります。

warn:    --minUptime not set. Defaulting to: 1000ms
warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info:    Forever processing file: index.js

デフォルトでは、開発環境にロードされます。 これは、次のコマンドを実行することで変更できます。

  1. NODE_ENV=production forever start index.js

foreverは、Ghostディレクトリからこれを実行することで停止できます。

  1. forever stop index.js

考えられるエラー

次のエラーメッセージの場合:

Error: SQLITE_READONLY: attempt to write a readonly database

foreverrootユーザーとして起動します(現在のユーザーをログアウトするには、exitと入力します)。

  1. sudo forever start index.js

最後のコマンドで「永久に」が見つからないと表示された場合は、コマンドへのフルパスを使用します。

  1. sudo /usr/local/bin/forever start index.js

次のエラーが表示された場合:

error:   Cannot start forever
error:   script /home/ghost/index.js does not exist.

/var/www/ghostディレクトリにいません。 このディレクトリに移動して、コマンドを再実行してください。

結論

おめでとう! Ghostをインストールし、Nginxでポートをプロキシする方法を学びました。 また、foreverノードパッケージを使用してタスクを実行し続ける方法も学習しました。

Ghostでできることはもっとたくさんあります。 たとえば、パスワードで保護されたブログは最新の機能の1つです。

Ghostに関する他のDigitalOceanチュートリアルを確認してください。

詳細については、以下もご覧ください。