CentOS7にGhostをインストールして設定する方法
序章
Ghost は、使いやすい軽量のオープンソースブログプラットフォームです。 Ghostは完全にカスタマイズ可能で、多くのテーマを利用できます。
このチュートリアルでは、CentOS7でGhostをセットアップします。 また、リクエストをGhostにプロキシするようにNginxを構成し、Ghostをシステムサービスとしてバックグラウンドで実行し続けます。
前提条件
このチュートリアルを完了するには、次のものが必要です。
- CentOS7の初期サーバーセットアップガイドに従ってセットアップされた1GBのCentOS7サーバー(sudo非rootユーザーを含む)。
- チュートリアルで説明されているEPELリポジトリメソッドを使用してインストールされたNode.js:CentOS7サーバーにNode.jsをインストールする方法。
- CentOS7に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を変更する必要があります。 そうしないと、ブログのリンクからmy-ghost-blog.comにアクセスできます。 url
フィールドの値をドメイン名に変更するか、現在ドメインを使用しない場合はサーバーのIPアドレスに変更します。
...
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.com
やhttp://11.11.11.11
のようにURLの形式である必要があります。 この値が正しくフォーマットされていない場合、Ghostは起動しません。
Ghostはメール設定なしで機能できます。 Ghostユーザーのパスワード回復をサポートする必要がある場合にのみ必要です。 このチュートリアルでは、この設定の構成をスキップします。
公式サイトの構成の詳細に従って、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://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
ディレクトリに移動します。
- cd /etc/nginx/
前提条件のチュートリアルに示されているようにCentOSEPELリポジトリからNginxをインストールした場合、Webサイト構成の管理に使用されるsites-available
およびsites-enabled
ディレクトリはありません。 それらを作成しましょう:
- sudo mkdir sites-available
- sudo mkdir sites-enabled
次に、/etc/nginx/sites-available/
にghost
という名前の新しいファイルを作成します。
- sudo vi /etc/nginx/sites-available/ghost
次の構成をファイルに配置し、your_domain_or_ip_address
をドメイン名に変更します。ドメインがない場合は、サーバーのIPアドレスに変更します。
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
ディレクトリーにこのファイルのシンボリックリンクを作成して、この構成を有効にします。
- sudo ln -s /etc/nginx/sites-available/ghost /etc/nginx/sites-enabled/ghost
Nginxは、デフォルトのNginx構成ファイルを変更し、sites-enabled
フォルダーに構成ファイルを含めるように指示するまで、この新しい構成を使用しません。 さらに、デフォルトサイトを無効にする必要があります。 エディタでnginx.conf
ファイルを開きます。
- sudo vi nginx.conf
http
ブロック内に次の行を含めて、sites-enabled
フォルダーに構成ファイルを含めます。
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
ブロックを完全にコメントアウトします。
...
# 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 {
# }
...
...
ファイルを保存して、エディターを終了します。 構成をテストして、問題がないことを確認します。
- 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 ghost
次に、この新しいユーザーを/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://your_domain_or_ip_address
でブログにアクセスできるはずです。 NginxはGhostインスタンスにリクエストを送信します。
物事はうまく機能していますが、Ghostが将来にわたってうまく機能し続けることを確認しましょう。
ステップ5—システムサービスとしてGhostを実行する
現在、Ghostはターミナルで実行されています。 ログオフすると、ブログはシャットダウンします。 Ghostをバックグラウンドで実行し、システムの再起動時にGhostが再起動することを確認しましょう。 これを行うには、systemd
がGhostを管理する方法を指定するsystemd
ユニットファイルを作成します。 CTRL+C
を押してGhostを停止し、CTRL+D
を押してghost
ユーザーアカウントからログアウトします。
systemd
ユニットファイルの定義を保持する新しいファイルを作成します。
- sudo vi /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ユニットとユニットファイルについてを参照してください。
ファイルを保存して、エディターを終了します。 次に、サービスを有効にして開始します。
- sudo systemctl enable ghost.service
- sudo sytemctl start ghost.service
もう一度、http://your_domain_or_ip_address
にアクセスすると、ブログが表示されます。
結論
このチュートリアルでは、Ghostをインストールし、リクエストをGhostにプロキシするようにNginxを構成し、Ghostがシステムサービスとして実行されるようにしました。 ただし、Ghostでできることは他にもたくさんあります。 新しいブログの使用方法の詳細については、次のチュートリアルをご覧ください。
- コマンドラインからGhostを構成および保守する方法。
- Ghostでテーマを変更して設定を調整する方法。