序章


Ghostは、ブログを立ち上げて実行するプロセスを簡素化する、優れた新しいブログプラットフォームです。 すっきりとしたインターフェースと使いやすいインターフェースが自慢です。

この記事では、1つのVPSを使用して複数のブログをホストする方法について説明します。 同じシステムでホストされているGhostの異なるインスタンスに解決される2つのドメイン名を構成します。

前提条件


このガイドは、ワンクリックのゴーストイメージで構成された新しいドロップレットから開始することを前提としています。 DigitalOcean でGhostブログを起動する方法については、ここをクリックしてください。

これは、ブログごとに使用する2つの別個のドメイン名があることも前提としています。 どちらも、Ghostブログ用に作成したVPSインスタンスを指す必要があります。 ドメイン名を正しく構成する方法については、ここをクリックしてください。

最後に、ルートとしてGhostドロップレットにログインしていることを前提としています。

サービスの実行を停止します


始める前に、今後の問題を回避するためにGhostサービスを停止する必要があります。

service ghost stop

これにより、Ghostプロセスによって開かれたファイルを移動しないようになります。

安全のために、nginxでも同じことをしたいと思います。

service nginx stop

Nginx構成を変更する


最初に行う必要があるのは、nginx構成を調整することです。 現在、nginx(当社のWebサーバー)は、すべてのリクエストを単一の場所に渡すように構成されています。 訪問者が到達しようとしているサイトに応じて、異なるパスを作成する必要があります。

Ghostが設定されているnginxディレクトリに移動することから始めます。 Ghost構成ファイルの名前を変更して最初のドメインを記述し、それを2番目のドメインを表すファイルにコピーします。 これらの名前は参照用であるため、必要に応じて変更できます。

cd /etc/nginx/sites-enabled
mv ghost firstsite.conf
cp firstsite.conf secondsite.conf

選択したエディターで最初のサイトの構成を開きます。

nano firstsite.conf

server_nameパラメーターを、最初のサイトのドメイン名と一致するように変更します。 この部分を正しく理解することが重要です。これは、nginxが制御を渡すGhostインスタンスを知る唯一の方法だからです。

server_name firstsite.com

ファイルを保存して閉じます。

次に、2番目のサイト構成で同様の操作を実行する必要があります。 テキストエディタで開きます。

nano secondsite.conf

2番目のサイトのドメイン名と一致するように、server_nameパラメーターを再度変更する必要があります。 繰り返しますが、これが正確であることを確認してください。

server_name secondsite.com

また、2番目のサイトに使用するポートを変更する必要があります。 現在、この構成では、2つのサイト間でトラフィックを分割するのではなく、すべてのトラフィックを同じnode.jsインスタンスに送信します。

proxy_passパラメーターを変更します。 最後のポート番号を別の番号に変更する必要があります。 別のプロセスで使用されていない任意のポート番号にすることができます。

proxy_pass http://localhost:2777

ファイルを保存して閉じます。

次のように入力してnginxを再起動します。

service nginx restart

ゴースト構成を変更する


次に、Ghost構成ファイルの変更をミラーリングする必要があります。 Webルートディレクトリに移動します。

cd /var/www

Ghostサイトごとにディレクトリを作成する必要があります。

mkdir firstsite.com
mkdir secondsite.com

次に、Ghostディレクトリを新しい各フォルダに移動する必要があります。

cp -r ghost firstsite.com
mv ghost secondsite.com

これで、最初のサイトのGhost構成を開くことができます。

nano /var/www/firstsite.com/ghost/config.js

文字列production: {を検索して、プロダクションセクションを見つけます。 urlパラメーターを変更して、最初のサイトの名前と一致させます。

. . .
production: {
    url: 'http://firstsite.com'
. . .

ファイルを保存して閉じます。

次に、2番目のサイトの一致するファイルを開きます。

nano /var/www/secondsite.com/ghost/config.js

ここでも、production: {セクションを見つけます。 urlパラメーターを変更して、2番目のサイトのドメインと一致させます。

. . .
production: {
    url: 'http://secondsite.com'
. . .

次に、プロダクションブロックのserver: {セクションまで少し下にスクロールします。 portパラメーターを変更して、2番目のサイトのnginx構成でプロキシポートに選択した番号と一致させます。

port: '2777'

ファイルを保存して閉じます。

アップスタートスクリプトを作成する


個別のGhostインストールを管理する最も簡単な方法は、Upstartスクリプトを使用することです。 これにより、各サイトの開始、停止、再起動、およびステータスの確認を個別に行うことができます。

現在、/etc/init.d/ghostにSystemVinitスクリプトがあります。 このガイドに従っている場合は、古いSystemVスクリプトを削除してください。 これは混乱を避けるのに役立ち、サービスが間違った設定で開始するのを防ぐことができます。

rm /etc/init.d/ghost

サイトごとに新しい構成を作成します。 構文が単純なため、Upstartと呼ばれるSystemVの代替を使用します。

Upstartがスクリプトを保持しているディレクトリに移動します。

cd /etc/init

最初のサイトのファイルを作成します。

nano ghost-firstsite.conf

内部に次のコードを配置します。 最初のサイトの構成に一致するように、赤の値を変更します。

# ghost-firstsite

start on startup

script
    cd /var/www/firstsite.com/ghost
    npm start --production
end script

ファイルを保存して閉じます。

作成したファイルをコピーして、2番目のサイトの構成ファイルを作成します。

cp ghost-firstsite.conf ghost-secondsite.conf

新しいファイルを開き、2番目のサイトに一致するように赤の値を調整します。

# ghost-secondsite

start on startup

script
    cd /var/www/secondsite.com/ghost
    npm start --production
end script

ファイルを保存して閉じます。

これで、次のように入力して、各サイトをオンラインにすることができます。

service ghost-firstsite start
service ghost-secondsite start

各ドメインにアクセスすると、Ghostブログのランディングページが表示されます。

Ghost landing page

ユーザーアカウントを作成し、次のサイトにアクセスしてログインします。

firstsite.com/ghost/signup

各サイトに異なるコンテンツを追加して、それらが本当に分離していることを確認します。

Ghost first site

Ghost second site

結論


これで、1つのドロップレットから2つの別々のブログが提供されるはずです。 リソースが許す限り、この手法を拡張して追加のサイトにサービスを提供できます。

他の記事をチェックして、テーマと設定を変更する方法メールを構成して構成変更をテストする方法コンテンツを管理する方法を確認してください。