序章

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

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

前提条件

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

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

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

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

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

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

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

The -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: {},
...

The url 値は、次のようなURLの形式である必要があります http://example.com また http://11.11.11.11. この値が正しくフォーマットされていない場合、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

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

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

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

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

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

  1. cd /etc/nginx/

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

  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;
    }
}

この基本構成は、このサーバーに対するすべてのリクエストをポートで実行されているGhostブログに送信します 2368、および適切なHTTPヘッダーを設定して、Ghostログを確認すると、訪問者の元のIPアドレスが表示されるようにします。 この構成の詳細については、 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/*;

次に、完全にコメントアウトします server の中に見つかったブロック http ブロック:

/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 方法を指定するユニットファイル systemd Ghostを管理する必要があります。 プレス CTRL+C Ghostを停止し、ログアウトするには ghost を押してユーザーアカウント CTRL+D.

の定義を保持する新しいファイルを作成します 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でできることは他にもたくさんあります。 新しいブログの使用方法の詳細については、次のチュートリアルをご覧ください。