CentOS8にNginxをインストールする方法
序章
Nginx は、世界で最も人気のあるWebサーバーの1つであり、インターネット上で最大かつ最も人気のあるサイトのいくつかをホストする責任があります。 ほとんどの場合、Apacheよりもリソースに優しく、Webサーバーまたはリバースプロキシとして使用できます。
このガイドでは、CentOS8サーバーにNginxをインストールする方法について説明します。
前提条件
このガイドに従うには、sudo権限を持つ非rootユーザーとしてCentOS 8サーバーにアクセスし、サーバーにアクティブなファイアウォールをインストールする必要があります。 これを設定するには、CentOS8の初期サーバー設定ガイドに従ってください。
ステップ1—NginxWebサーバーをインストールする
Nginxをインストールするには、 dnf
パッケージマネージャー。CentOS8の新しいデフォルトのパッケージマネージャーです。
をインストールします nginx
パッケージ:
- sudo dnf install nginx
プロンプトが表示されたら、次のように入力します y
インストールすることを確認します nginx
. その後、 dnf
Nginxと必要な依存関係をサーバーにインストールします。
インストールが完了したら、次のコマンドを実行してサーバーを有効にして起動します。
- sudo systemctl enable nginx
- sudo systemctl start nginx
これにより、システムの起動時にNginxが起動します。
ステップ2—ファイアウォールルールの調整
有効にした場合 firewalld
CentOS 8 の初期サーバーセットアップガイドで説明されているファイアウォールの場合、ポートで実行されるNginx Webサーバーで外部接続を許可するには、ファイアウォール設定を調整する必要があります。 80
デフォルトでは。
次のコマンドを実行して、ポートでHTTP接続を永続的に有効にします 80
:
- 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サーバーが稼働しているので、Nginxサービスを管理する方法を確認します。 systemctl
.
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サイトを定義できるサーバーブロック構成ファイルが含まれています。 一般的なアプローチは、各Webサイトを、Webサイトのドメイン名にちなんで名付けられた個別のファイルに入れることです。your_domain.conf
.
サーバーログ
/var/log/nginx/access.log
:Nginxが別の方法で構成されていない限り、Webサーバーへのすべてのリクエストはこのログファイルに記録されます。/var/log/nginx/error.log
:Nginxエラーはすべてこのログに記録されます。
手順6–サーバーブロックの設定(オプション)
同じNginxWebサーバー内で複数のWebサイトをホストする場合は、サーバーブロックを設定する必要があります。 NginxサーバーブロックはApache仮想ホストと同じように機能し、単一のサーバーが複数のドメイン名に応答し、それぞれに異なるコンテンツを提供できるようにします。 CentOS 8では、サーバーブロックは次のように定義されます。 .conf
にあるファイル /etc/nginx/conf.d
.
your_domainというドメインのサーバーブロックを設定します。 DigitalOceanを使用したドメイン名の設定の詳細については、 DigitalOceanDNSの概要を参照してください。
デフォルトでは、CentOS 8のNginxは、次のディレクトリからドキュメントを提供するように構成されています。 /usr/share/nginx/html
. これは単一のサイトではうまく機能しますが、複数のサイトをホストしている場合は管理できなくなる可能性があります。 変更する代わりに /usr/share/nginx/html
、内にディレクトリ構造を作成します /var/www
your_domain Webサイトの場合、 /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
は非常に強力なテキストエディタですが、経験が不足しているユーザーにとってはやや鈍感になる可能性があります。 次のようなよりユーザーフレンドリーなエディタをインストールすることをお勧めします nano
CentOS8サーバー上の構成ファイルの編集を容易にするために:
- 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サイトで使用する可能性のあるコンテンツの種類とテクノロジに関する多くのオプションがあります。