CentOS8にNginxをインストールする方法
序章
Nginx は、世界で最も人気のあるWebサーバーの1つであり、インターネット上で最大かつ最も人気のあるサイトのいくつかをホストする責任があります。 ほとんどの場合、Apacheよりもリソースに優しく、Webサーバーまたはリバースプロキシとして使用できます。
このガイドでは、CentOS8サーバーにNginxをインストールする方法について説明します。
前提条件
このガイドに従うには、sudo権限を持つ非rootユーザーとしてCentOS 8サーバーにアクセスし、サーバーにアクティブなファイアウォールをインストールする必要があります。 これを設定するには、CentOS8の初期サーバー設定ガイドに従ってください。
ステップ1—NginxWebサーバーをインストールする
Nginxをインストールするには、CentOS8の新しいデフォルトのパッケージマネージャーであるdnf
パッケージマネージャーを使用します。
nginx
パッケージを次のコマンドでインストールします。
- sudo dnf install nginx
プロンプトが表示されたら、y
と入力して、nginx
をインストールすることを確認します。 その後、dnf
はNginxと必要な依存関係をサーバーにインストールします。
インストールが完了したら、次のコマンドを実行してサーバーを有効にして起動します。
- sudo systemctl enable nginx
- sudo systemctl start nginx
これにより、システムの起動時にNginxが起動します。
ステップ2—ファイアウォールルールの調整
CentOS 8の初期サーバーセットアップガイドの説明に従ってfirewalld
ファイアウォールを有効にしている場合は、NginxWebサーバーで外部接続を許可するためにファイアウォール設定を調整する必要があります。 、デフォルトでポート80
で実行されます。
次のコマンドを実行して、ポート80
でHTTP接続を永続的に有効にします。
- sudo firewall-cmd --permanent --add-service=http
http
ファイアウォールサービスが正しく追加されたことを確認するには、次のコマンドを実行します。
- sudo firewall-cmd --permanent --list-all
次のような出力が表示されます。
Outputpublic
target: default
icmp-block-inversion: no
interfaces:
sources:
services: cockpit dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
変更を適用するには、ファイアウォールサービスをリロードする必要があります。
- sudo firewall-cmd --reload
これで、Nginxサーバーが完全にインストールされ、外部の訪問者がアクセスできるようになりました。
ステップ3—Webサーバーを確認する
これで、WebブラウザからサーバーのパブリックIPアドレスまたはドメイン名にアクセスして、NginxWebサーバーが稼働しているかどうかをテストできます。
注:DNSホスティングプロバイダーとしてDigitalOceanを使用している場合は、製品ドキュメントで、新しいドメイン名を設定してサーバーにポイントする方法の詳細な手順を確認できます。 。
サーバーを指すドメイン名がなく、サーバーのパブリックIPアドレスがわからない場合は、次のコマンドを実行してドメイン名を見つけることができます。
- ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
これにより、いくつかのIPアドレスが出力されます。 Webブラウザでそれぞれを順番に試すことができます。
別の方法として、インターネット上の他の場所から見たときに、どのIPアドレスにアクセスできるかを確認できます。
- curl -4 icanhazip.com
Webブラウザーで受け取ったアドレスを入力すると、Nginxのデフォルトのランディングページに移動します。
このページが表示されている場合は、Webサーバーが正しくインストールされています。
ステップ4–Nginxプロセスの管理
Webサーバーが稼働しているので、systemctl
を介してNginxサービスを管理する方法を確認します。
Webサーバーを停止する必要があるときはいつでも、次を使用できます。
- sudo systemctl stop nginx
停止時にWebサーバーを起動するには、次のように入力します。
- sudo systemctl start nginx
サービスを停止してから再開するには、次を使用できます。
- sudo systemctl restart nginx
Nginxは、接続を切断せずに構成の変更を再読み込みすることもできます。 これを行うには、次のように入力します。
- sudo systemctl reload nginx
デフォルトでは、Nginxはサーバーの起動時に自動的に起動するように構成されています。 これが希望どおりでない場合は、次のように入力してこの動作を無効にできます。
- sudo systemctl disable nginx
サービスを再度有効にして、Nginxを起動時に再開させるには、次を使用できます。
- sudo systemctl enable nginx
ステップ5–重要なNginxファイルとディレクトリに精通する
Nginxサービスの管理方法がわかったので、数分でいくつかの重要なディレクトリとファイルに慣れることができます。
コンテンツ
/usr/share/nginx/html
:実際のWebコンテンツは、デフォルトでは前に見たデフォルトのNginxページのみで構成されており、/usr/share/nginx/html
ディレクトリから提供されます。 これは、Nginx構成ファイルを変更することで変更できます。
サーバー構成
/etc/nginx
:Nginx構成ディレクトリ。 すべてのNginx構成ファイルはここにあります。/etc/nginx/nginx.conf
:メインのNginx構成ファイル。 これを変更して、Nginxグローバル構成を変更できます。/etc/nginx/conf.d/
:このディレクトリには、Nginx内でホストされているWebサイトを定義できるサーバーブロック構成ファイルが含まれています。 一般的なアプローチは、your_domain.conf
など、Webサイトのドメイン名にちなんで名付けられた個別のファイルに各Webサイトを含めることです。
サーバーログ
/var/log/nginx/access.log
:Nginxが別の方法で構成されていない限り、Webサーバーへのすべてのリクエストはこのログファイルに記録されます。/var/log/nginx/error.log
:Nginxエラーはすべてこのログに記録されます。
手順6–サーバーブロックの設定(オプション)
同じNginxWebサーバー内で複数のWebサイトをホストする場合は、サーバーブロックを設定する必要があります。 NginxサーバーブロックはApache仮想ホストと同じように機能し、単一のサーバーが複数のドメイン名に応答し、それぞれに異なるコンテンツを提供できるようにします。 CentOS 8では、サーバーブロックは/etc/nginx/conf.d
にある.conf
ファイルで定義されます。
your_domainというドメインのサーバーブロックを設定します。 DigitalOceanを使用したドメイン名の設定の詳細については、 DigitalOceanDNSの概要を参照してください。
デフォルトでは、CentOS 8のNginxは、/usr/share/nginx/html
のディレクトリからドキュメントを提供するように構成されています。 これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は管理できなくなる可能性があります。 /usr/share/nginx/html
を変更する代わりに、 your_domain Webサイトの/var/www
内にディレクトリ構造を作成し、/usr/share/nginx/html
をデフォルトのディレクトリとして残します。クライアントリクエストが他のサイトと一致しない場合に提供されます。
your_domain のディレクトリを次のように作成し、-p
フラグを使用して必要な親ディレクトリを作成します。
- sudo mkdir -p /var/www/your_domain/html
次に、$USER
環境変数を使用してディレクトリの所有権を割り当てます。これにより、現在のシステムユーザーが参照されます。
- sudo chown -R $USER:$USER /var/www/your_domain/html
次に、サンプルのindex.html
ページを作成して、サーバーブロックの構成をテストします。 CentOS8に付属するデフォルトのテキストエディタはvi
です。 vi
は非常に強力なテキストエディタですが、経験が不足しているユーザーにとってはやや鈍感になる可能性があります。 CentOS 8サーバーでの構成ファイルの編集を容易にするために、nano
などのよりユーザーフレンドリーなエディターをインストールすることをお勧めします。
- sudo dnf install nano
これで、nano
を使用してサンプルindex.html
ファイルを作成できます。
- nano /var/www/your_domain/html/index.html
そのファイル内に、次のHTMLコードを追加します。
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
終了したら、ファイルを保存して閉じます。 nano
を使用した場合は、CTRL + X
、Y
、ENTER
の順に押すと使用できます。
Nginxがこのコンテンツを提供するには、カスタムWebルートを指す正しいディレクティブを使用してサーバーブロックを作成する必要があります。 /etc/nginx/conf.d/your_domain.conf
に新しいサーバーブロックを作成します。
- sudo nano /etc/nginx/conf.d/your_domain.conf
次の構成ブロックに貼り付けます。
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}
コンテンツの編集が完了したら、ファイルを保存して閉じます。
どのNginxファイルにも構文エラーがないことを確認するには、次のコマンドを実行します。
- 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
ブラウザから変更をテストする前に、サーバーの SELinux セキュリティコンテキストを更新して、Nginxが/var/www/your_domain
ディレクトリからコンテンツを提供できるようにする必要があります。
次のコマンドを使用すると、カスタムドキュメントルートをHTTPコンテンツとして提供できます。
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
これで、http://your_domain
に移動して、カスタムドメインの設定をテストできます。ここで、次のように表示されます。
このページでは、サーバーブロック用に作成されたカスタムドキュメントルートで定義したHTMLコードをレンダリングしています。 このページが表示されている場合は、Nginxサーバーがドメインにサービスを提供するように正しく構成されていることを意味します。
結論
このガイドでは、高性能WebサーバーおよびリバースプロキシであるNginxをインストールおよびセットアップする方法について説明しました。 サーバーで実行されているNginxサービスを管理する方法と、構成ファイル、コンテンツ、ログを保存するためにNginxが使用するメインディレクトリを確認しました。
ここから、Webサーバー内でホストされているWebサイトで使用する可能性のあるコンテンツの種類とテクノロジに関する多くのオプションがあります。