Ubuntu14.04でGhostとNginxを使用してブログを作成する方法
序章
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
パッケージをインストールする必要があります。 これらは、このチュートリアルの後半で使用します。
- sudo apt-get update
- 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をインストールしたら、次を実行してインストールされているバージョンを確認します。
- node -v
出力は次のようになります。
v0.10.38
npm
がインストールされているかどうかを確認します。
- npm -v
インストールされている場合は、インストールされているバージョンのnpmが出力されます。
1.4.28
npmがインストールされていないというエラーが出力された場合は、次のコマンドでインストールしてください。
- sudo apt-get install npm
次のコマンドを実行して、npm
をバージョン2.5.0に更新します。
- sudo npm install [email protected] -g
インストールされているnpm
のバージョンを確認してください。
- npm -v
出力は次のようになります。
2.5.0
ステップ2—Ghostをインストールします
次に、Ghostをインストールする必要があります。 Ghost.orgはGhostをvar/www/ghost
にインストールすることを推奨しているので、そこにインストールします。
まず、ディレクトリ/var/www/
を作成してから、GhostのGitHubリポジトリから最新バージョンのGhostをダウンロードします。
- sudo mkdir -p /var/www/
- cd /var/www/
- sudo wget https://ghost.org/zip/ghost-latest.zip
Ghostの最新バージョンを入手したので、それを解凍する必要があります。 また、ディレクトリを/var/www/ghost/
に変更します。
- sudo unzip -d ghost ghost-latest.zip
- cd ghost/
これで、Ghostの依存関係とノードモジュールをインストールできます(本番の依存関係のみ)。
- sudo npm install --production
これが完了すると、Ghostがインストールされます。 Ghostを起動する前に、Ghostを設定する必要があります。
ステップ3—Ghostを設定する
Ghostの設定ファイルは/var/www/ghost/config.js
にあります。 ただし、そのようなファイルはGhostとともにインストールされません。 代わりに、インストールにはconfig.example.js
が含まれます。
サンプル構成ファイルを適切な場所にコピーします。 変更を元に戻す必要がある場合に備えて、元の構成ファイルのコピーを入手できるように、移動するのではなく、必ずコピーしてください。
- sudo cp config.example.js config.js
production
セクションにあるURLとメール設定は、変更が必要な情報の重要な領域です。 URLが必要です。 それ以外の場合、リンクをクリックするとデフォルトのhttp://my-ghost-blog.com
ページに移動します。 Ghostはメール設定がなくても機能しますが、これを追加することをお勧めします。 この記事の執筆時点では、Ghostは、ユーザーがアカウントのパスワードを忘れた場合にのみメールが機能することを要求しているため、メールを設定しなくてもそれほど害はありません。
編集用にファイルを開きます。
- sudo nano config.js
url
の値をドメインに変更する必要があります(または、現在ドメインを使用したくない場合は、サーバーのIPアドレスを使用できます)。 この値はURLの形式である必要があります。 たとえば、http://example.com/またはhttp://45.55.76.126/です。 この値が正しくフォーマットされていない場合、Ghostは起動しません。
また、server
セクションのhost
の値を0.0.0.0
に変更します。
以下に、変更する必要のある値を赤で示します。
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+X
、Y
、最後にENTER
の順に押して、nanoテキストエディターを終了します。
/var/www/ghost
ディレクトリにいる間に、次のコマンドでGhostを起動します。
- 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ブログにアクセスできます。
次のコマンドでインストールします。
- sudo apt-get install nginx
次に、ディレクトリを/etc/nginx
に変更し、/etc/nginx/sites-enabled
のデフォルトファイルを削除して、Nginxを構成する必要があります。
- cd /etc/nginx/
- sudo rm sites-enabled/default
/etc/nginx/sites-available/
にghost
という名前の新しいファイルを作成し、nano
で開いて編集します。
- sudo touch /etc/nginx/sites-available/ghost
- 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
で構成をシンボリックリンクします。
- sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
Nginxを再起動します:
- sudo service nginx restart
次に、新しいユーザーを作成します。 このユーザーには、ディレクトリ/var/www/ghost
で作業を行うための権限のみが付与されます。 これはセキュリティ対策です。 Ghostが危険にさらされた場合、システムは安全になります。 これは、次のコマンドを実行することで実行できます。
- sudo adduser --shell /bin/bash --gecos 'Ghost application' ghost
特権を付与します:
- sudo chown -R ghost:ghost /var/www/ghost/
これで、ghost
ユーザーとしてログインできます。
- su - ghost
次に、Ghostを起動する必要があります。
- cd /var/www/ghost
- npm start --production
ポート80でhttp://としてブログにアクセスできるはずです。
ステップ5—forever
でGhostを実行し続ける
次のステップは、Ghostをバックグラウンドで実行し続けることです。 forever
は、Ghostをバックグラウンドで起動し、Ghostが稼働していることを確認するために使用できるノードモジュールです。 Ghostがクラッシュした場合、Ghostの別のインスタンスが永久に自動的に開始されます。
Ghostディレクトリ内から次のコマンドを使用してforever
をインストールします。 /var/www/ghost
。 ただし、コマンドを実行する前に、ghost
ユーザーからログアウトし、root以外のユーザーにログインしてください。
- exit
- sudo npm install -g forever
ghost
ユーザーとしてGhostを起動します。 また、Ghostディレクトリから実行する必要があります。
- su - ghost
- cd /var/www/ghost
- 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
デフォルトでは、開発環境にロードされます。 これは、次のコマンドを実行することで変更できます。
- NODE_ENV=production forever start index.js
forever
は、Ghostディレクトリからこれを実行することで停止できます。
- forever stop index.js
考えられるエラー
次のエラーメッセージの場合:
Error: SQLITE_READONLY: attempt to write a readonly database
forever
をroot
ユーザーとして起動します(現在のユーザーをログアウトするには、exit
と入力します)。
- sudo forever start index.js
最後のコマンドで「永久に」が見つからないと表示された場合は、コマンドへのフルパスを使用します。
- 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チュートリアルを確認してください。
詳細については、以下もご覧ください。
- Ghost.org-ゴーストのウェブサイト
- ゴーストドキュメント—公式ゴーストドキュメント
- GhostSlackページ—Ghostコミュニティの実際の人々から助けを得るためのGhostのSlackページ