Nginxサーバーブロックを使用して1つのVPSで複数のGhostブログを提供する方法
序章
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ブログのランディングページが表示されます。
ユーザーアカウントを作成し、次のサイトにアクセスしてログインします。
firstsite.com/ghost/signup
各サイトに異なるコンテンツを追加して、それらが本当に分離していることを確認します。
結論
これで、1つのドロップレットから2つの別々のブログが提供されるはずです。 リソースが許す限り、この手法を拡張して追加のサイトにサービスを提供できます。
他の記事をチェックして、テーマと設定を変更する方法、メールを構成して構成変更をテストする方法、コンテンツを管理する方法を確認してください。