前書き

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

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

前提条件

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

  • sudo non- rootユーザー。

  • チュートリアルで説明されているEPELリポジトリメソッドを使用してインストールされたNode.js:https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-a-centos-7-server[How To Node.jsをCentOS 7サーバーにインストールします]。

  • CentOS 7にNginxをインストールする方法に示すように、サーバーにインストールされたNginx。

手順1-Ghostのインストール

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

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

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

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

sudo yum update -y
sudo yum install unzip -y

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

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

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

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

cd /var/www/ghost/

次に、Ghost依存関係をインストールしますが、実稼働に必要な依存関係のみをインストールします。 これは、Ghostを開発する人々だけが必要とする依存関係をスキップします。

sudo npm install --production

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

ステップ2-Ghostの構成

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

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

sudo cp config.example.js config.js

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

sudo vi config.js

Ghostが使用するURLを変更する必要があります。 そうしないと、ブログのリンクからhttp://my-ghost-blog.com [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://',
       mail: {},
...

`+ url `の値は、 ` http:// `や ` http:// +`のようなURL形式でなければなりません。 この値が正しくフォーマットされていないと、Ghostは起動しません。

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

http://ghost.org [the official site]の設定の詳細に従って、Ghostをさらにカスタマイズできます。

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

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

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://
Ctrl+C to shut down

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

手順3-リクエストをGhostにプロキシするためのNginxの設定

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

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

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

cd /etc/nginx/

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

sudo mkdir sites-available
sudo mkdir sites-enabled

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

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

ファイルに次の設定を配置して、ドメイン名がない場合はドメイン名、またはサーバーのIPアドレスに「++」を変更します。

/ etc / nginx / sites-available / ghost

server {
   listen 80;
   server_name ;
   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         ;
   }
}

この基本設定は、ポート `+ 2368 +`で実行されているGhostブログにこのサーバーのすべてのリクエストを送信し、Ghostログを見ると訪問者の元のIPアドレスが表示されるように適切なHTTPヘッダーを設定します。 この構成の詳細については、https://www.digitalocean.com/community/tutorials/understanding-nginx-http-proxying-load-balancing-buffering-and-caching [Nginx HTTPプロキシ、負荷分散、バッファリングについて、およびキャッシュ]。

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

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

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

sudo vi nginx.conf

+ https`ブロック内に次の行を含めて、設定ファイルを + 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;

次に、 `+ 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;



   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 {
      }
...
...

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

sudo nginx -t

すべてが正しい場合、次の出力が表示されます。

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

エラーが表示された場合は、それらを修正して構成を再テストします。

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

sudo systemctl restart nginx

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

手順4 –別のユーザーとしてGhostを実行する

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

次のコマンドで新しい「+ ghost +」ユーザーを作成します。

sudo adduser --shell /bin/bash

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

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

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

sudo su - ghost

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

cd /var/www/ghost
npm start --production

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

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

手順5-Ghostをシステムサービスとして実行する

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

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

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

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

/etc/systemd/system/ghost.service

[Unit]
Description=
After=network.target

[Service]
Type=simple

WorkingDirectory=
User=
Group=

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

[Install]
WantedBy=multi-user.target

`+ systemd +`ユニットファイルに慣れていない場合は、チュートリアルhttps://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files[Understanding Systemd Units andユニットファイル]を使用すると、すぐに速度を上げることができます。

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

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

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

結論

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