序章

Ghost は、使いやすい軽量のオープンソースブログプラットフォームです。 Ghostは完全にカスタマイズ可能で、多くのテーマを利用できます。

このチュートリアルでは、CentOS7でGhostをセットアップします。 また、リクエストをGhostにプロキシするようにNginxを構成し、Ghostをシステムサービスとしてバックグラウンドで実行し続けます。

前提条件

このチュートリアルを完了するには、次のものが必要です。

ステップ1—Ghostをインストールする

まず、Ghostをインストールする必要があります。 Ghostを/var/www/ghostディレクトリに配置します。これは推奨されるインストール場所です。

wgetを使用して、GhostのGitHubリポジトリから最新バージョンのGhostをダウンロードします。

  1. wget https://ghost.org/zip/ghost-latest.zip

アーカイブを解凍するには、まずパッケージマネージャーを使用してunzipプログラムをインストールします。 新しいプログラムをインストールする前に、システムが最新であることを確認することを常にお勧めします。そのため、パッケージを更新し、次のコマンドを使用してunzipをインストールします。

  1. sudo yum update -y
  2. sudo yum install unzip -y

上記のコマンドの-yフラグは、ユーザーに確認を求めずにパッケージを自動的に更新およびインストールします。

unzipがインストールされたら、ダウンロードしたパッケージを/var/www/ghostディレクトリに解凍します。 まず、/var/wwwフォルダーを作成してから、ファイルを解凍します。

  1. sudo mkdir /var/www
  2. sudo unzip -d /var/www/ghost ghost-latest.zip

/var/www/ghost/ディレクトリに切り替えます。

  1. cd /var/www/ghost/

次に、Ghostの依存関係をインストールしますが、本番環境に必要な依存関係のみをインストールします。 これにより、Ghostを開発する人だけが必要とする依存関係がスキップされます。

  1. sudo npm install --production

このプロセスが完了するとGhostがインストールされますが、開始する前にGhostをセットアップする必要があります。

ステップ2—Ghostを構成する

Ghostは、/var/www/ghost/config.jsにある構成ファイルを使用します。 このファイルはそのままでは存在しませんが、Ghostのインストールにはファイルconfig.example.jsが含まれており、これを開始点として使用します。

サンプル設定ファイルを/var/www/ghost/config.jsにコピーします。 変更を元に戻す必要がある場合に備えて、元の構成ファイルのコピーを取得できるように、ファイルを移動する代わりにコピーします。

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

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

  1. sudo vi config.js

Ghostが使用するURLを変更する必要があります。 そうしないと、ブログのリンクからmy-ghost-blog.comにアクセスできます。 urlフィールドの値をドメイン名に変更するか、現在ドメインを使用しない場合はサーバーのIPアドレスに変更します。

/var/www/ghost/config.js

...

config = {
    // ### Production
    // When running Ghost in the wild, use the production environment
    // Configure your URL and mail settings here
    production: {
        url: 'http://your_domain_or_ip_address',
        mail: {},
...

urlの値は、http://example.comhttp://11.11.11.11のようにURLの形式である必要があります。 この値が正しくフォーマットされていない場合、Ghostは起動しません。

Ghostはメール設定なしで機能できます。 Ghostユーザーのパスワード回復をサポートする必要がある場合にのみ必要です。 このチュートリアルでは、この設定の構成をスキップします。

公式サイトの構成の詳細に従って、Ghostをさらにカスタマイズできます。

ファイルを保存して、エディターを終了します。

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

  1. sudo npm start --production

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

Output
> [email protected] start /var/www/ghost > node index WARNING: Ghost is attempting to use a direct method to send email. It is recommended that you explicitly configure an email service. Help and documentation can be found at http://support.ghost.org/mail. Migrations: Creating tables... ... Ghost is running in production... Your blog is now available on http://your_domain_or_ip_address Ctrl+C to shut down

Ghostはポート2368でリッスンしており、パブリックネットワークインターフェイスでリッスンしていないため、直接アクセスすることはできません。 Ghostの前にNginxをセットアップしましょう。

ステップ3—リクエストをGhostにプロキシするようにNginxを構成する

次のステップは、Ghostブログを提供するようにNginxを設定することです。 これにより、ポート80での接続が、Ghostが実行されているポートに接続できるようになるため、アドレスの末尾に:2368を追加しなくても、Ghostブログにアクセスできます。 また、間接参照のレイヤーを追加し、ブログが大きくなった場合にブログをスケールアウトできるように設定します。

ターミナルでGhostがまだ実行されている場合は、続行する前にCTRL+Cを押してGhostインスタンスをシャットダウンします。

それでは、Nginxを構成しましょう。 最初に/etc/nginxディレクトリに移動します。

  1. cd /etc/nginx/

前提条件のチュートリアルに示されているようにCentOSEPELリポジトリからNginxをインストールした場合、Webサイト構成の管理に使用されるsites-availableおよびsites-enabledディレクトリはありません。 それらを作成しましょう:

  1. sudo mkdir sites-available
  2. sudo mkdir sites-enabled

次に、/etc/nginx/sites-available/ghostという名前の新しいファイルを作成します。

  1. sudo vi /etc/nginx/sites-available/ghost

次の構成をファイルに配置し、your_domain_or_ip_addressをドメイン名に変更します。ドメインがない場合は、サーバーのIPアドレスに変更します。

/ etc / nginx / sites-available / ghost
server {
    listen 80;
    server_name your_domain_or_ip_address;
    location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass         http://127.0.0.1:2368;
    }
}

この基本構成は、このサーバーに対するすべてのリクエストをポート2368で実行されているGhostブログに送信し、Ghostログを見ると、元のIPアドレスが表示されるように適切なHTTPヘッダーを設定します。訪問者。 この構成の詳細については、 Nginx HTTPプロキシ、負荷分散、バッファリング、およびキャッシングについてを参照してください。

ファイルを保存し、エディターを終了し、/etc/nginx/sites-enabledディレクトリーにこのファイルのシンボリックリンクを作成して、この構成を有効にします。

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

Nginxは、デフォルトのNginx構成ファイルを変更し、sites-enabledフォルダーに構成ファイルを含めるように指示するまで、この新しい構成を使用しません。 さらに、デフォルトサイトを無効にする必要があります。 エディタでnginx.confファイルを開きます。

  1. sudo vi nginx.conf

httpブロック内に次の行を含めて、sites-enabledフォルダーに構成ファイルを含めます。

/etc/nginx/nginx.conf

http {
...
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

次に、httpブロック内にあるserverブロックを完全にコメントアウトします。

/etc/nginx/nginx.conf
...

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;


#    server {
#       listen       80 default_server;
#       listen       [::]:80 default_server;
#       server_name  _;
#       root         /usr/share/nginx/html;
#
#       # Load configuration files for the default server block.
#       include /etc/nginx/default.d/*.conf;
#
#       location / {
#       }
#
#       error_page 404 /404.html;
#           location = /40x.html {
#       }
#
#       error_page 500 502 503 504 /50x.html;
#           location = /50x.html {
#       }
...
...

ファイルを保存して、エディターを終了します。 構成をテストして、問題がないことを確認します。

  1. sudo nginx -t

すべてが正しければ、次の出力が表示されます。

Output
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

エラーが表示された場合は、エラーを修正して構成を再テストしてください。

設定ファイルが機能している状態で、Nginxを再起動して変更を適用します。

  1. sudo systemctl restart nginx

Ghostを再開する前に、Ghostを実行するための新しいユーザーアカウントを作成しましょう。

ステップ4–別のユーザーとしてGhostを実行する

セキュリティを向上させるために、Ghostを別のユーザーアカウントで実行します。 このユーザーは、/var/www/ghostディレクトリとそのホームフォルダにのみアクセスできます。 このようにして、Ghostが危険にさらされた場合に、システムへの潜在的な損傷を最小限に抑えます。

次のコマンドを使用して、新しいghostユーザーを作成します。

  1. sudo adduser --shell /bin/bash ghost

次に、この新しいユーザーを/var/www/ghostディレクトリの所有者にします。

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

次に、このユーザーがGhostを実行できることを確認しましょう。 ghostユーザーとしてログインします。

  1. sudo su - ghost

次に、このユーザーの下でGhostを起動し、実行されることを確認します。

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

http://your_domain_or_ip_addressでブログにアクセスできるはずです。 NginxはGhostインスタンスにリクエストを送信します。

物事はうまく機能していますが、Ghostが将来にわたってうまく機能し続けることを確認しましょう。

ステップ5—システムサービスとしてGhostを実行する

現在、Ghostはターミナルで実行されています。 ログオフすると、ブログはシャットダウンします。 Ghostをバックグラウンドで実行し、システムの再起動時にGhostが再起動することを確認しましょう。 これを行うには、systemdがGhostを管理する方法を指定するsystemdユニットファイルを作成します。 CTRL+Cを押してGhostを停止し、CTRL+Dを押してghostユーザーアカウントからログアウトします。

systemdユニットファイルの定義を保持する新しいファイルを作成します。

  1. sudo vi /etc/systemd/system/ghost.service

次の構成をファイルに追加します。これは、サービスの名前、サービスのグループとユーザー、およびサービスの開始方法に関する情報を定義します。

/etc/systemd/system/ghost.service
[Unit]
Description=Ghost
After=network.target

[Service]
Type=simple

WorkingDirectory=/var/www/ghost
User=ghost
Group=ghost

ExecStart=/usr/bin/npm start --production
ExecStop=/usr/bin/npm stop --production
Restart=always
SyslogIdentifier=Ghost

[Install]
WantedBy=multi-user.target

systemdユニットファイルに慣れていない場合は、チュートリアルSystemdユニットとユニットファイルについてを参照してください。

ファイルを保存して、エディターを終了します。 次に、サービスを有効にして開始します。

  1. sudo systemctl enable ghost.service
  2. sudo sytemctl start ghost.service

もう一度、http://your_domain_or_ip_addressにアクセスすると、ブログが表示されます。

結論

このチュートリアルでは、Ghostをインストールし、リクエストをGhostにプロキシするようにNginxを構成し、Ghostがシステムサービスとして実行されるようにしました。 ただし、Ghostでできることは他にもたくさんあります。 新しいブログの使用方法の詳細については、次のチュートリアルをご覧ください。