導入
Nginxは世界で最も人気のあるウェブサーバーの一つであり、インターネット上で最も大きなトラフィックを持つサイトのホスティングを担当しています。軽量な選択肢であり、ウェブサーバーまたはリバースプロキシとして使用することができます。
このガイドでは、Rocky Linux 9サーバーにNginxをインストールし、ファイアウォールを調整し、Nginxプロセスを管理し、1つのサーバーから複数のドメインをホストするためのサーバーブロックを設定する方法について説明します。
前提条件
このガイドを開始する前に、サーバーにsudo特権を持つ通常の非ルートユーザーアカウントを設定している必要があります。Rocky Linux 9の通常のユーザーアカウントの設定方法については、当社のRocky Linux 9の初期サーバーセットアップガイドを参照してください。
また、このチュートリアルの最後の手順を完了する前に、ドメイン名を登録しておくことが望ましいです。DigitalOceanでドメイン名を設定する方法については、当社のDigitalOcean DNS入門を参照してください。
アカウントが利用可能な場合は、非ルートユーザーとしてログインして開始してください。
ステップ1 – Nginxのインストール
RockyのデフォルトリポジトリでNginxが利用可能なため、dnf
パッケージマネージャを使用して単一のコマンドでインストールできます。
dnf install
を使用してnginx
パッケージをインストールします:
- sudo dnf install nginx
プロンプトが表示されたら、y
を入力してnginx
をインストールすることを確認します。その後、dnf
はNginxと必要な依存関係をサーバにインストールします。
インストールが完了したら、次のコマンドを実行してWebサーバを有効にし、起動します:
- sudo systemctl enable nginx
- sudo systemctl start nginx
これにより、サーバが再起動するたびにNginxが自動的に再起動します。新しいWebサーバは今、稼働しているはずですが、テストする前におそらくファイアウォールの設定を変更する必要があるでしょう。
ステップ2 – ファイアウォールの調整
firewalld
ファイアウォールをRocky Linux 9の初期サーバセットアップガイドの一部として有効にした場合、Nginxウェブサーバでデフォルトでポート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
あなたのWebサーバーは今、外部の訪問者からアクセス可能になっています。
ステップ3 – Webサーバーの確認
この時点で、あなたのWebサーバーは起動しています。
サービスが実行されていることを確認するには、systemctl status
コマンドを使用できます:
- systemctl status nginx
Output● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2022-09-14 21:03:46 UTC; 7min ago
Process: 18384 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 18385 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 18386 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 18387 (nginx)
Tasks: 3 (limit: 10938)
Memory: 2.8M
CPU: 43ms
CGroup: /system.slice/nginx.service
├─18387 "nginx: master process /usr/sbin/nginx"
├─18388 "nginx: worker process"
└─18389 "nginx: worker process"
この出力で確認されたように、サービスは正常に開始されました。しかし、これをテストする最良の方法は、実際にNginxからページを要求することです。
サーバーのIPアドレスに移動して、ソフトウェアが正しく実行されていることを確認するために、デフォルトのNginxランディングページにアクセスできます。サーバーのIPアドレスがわからない場合は、インターネット上の別の場所から受信したパブリックIPアドレスを提供するicanhazip.comツールを使用して見つけることができます:
- curl -4 icanhazip.com
サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力してください:
http://your_server_ip
デフォルトのNginxランディングページを受信するはずです:
このページにいる場合、サーバーは正しく実行され、管理される準備ができています。
ステップ4 – Nginxプロセスの管理
ウェブサーバーが稼働しているので、サービス管理コマンドをいくつか見てみましょう。
ウェブサーバーを停止するには、systemctl stop
を使用します:
- sudo systemctl stop nginx
停止したウェブサーバーを再起動するには、systemctl start
を使用します:
- sudo systemctl start nginx
サービスを停止してから再起動するには、systemctl restart
を使用します:
- sudo systemctl restart nginx
構成変更のみを行う場合、Nginxは接続を切断せずにリロードできることがよくあります。これを行うには、systemctl reload
を使用します:
- sudo systemctl reload nginx
このチュートリアルの前半で、サーバー起動時にNginxを自動起動するように構成しました。この動作を無効にするには、systemctl disable
を使用します:
- sudo systemctl disable nginx
サービスを再度起動してブート時に起動するようにするには、次のように入力します:
- sudo systemctl enable nginx
ステップ5 – 重要なNginxファイルとディレクトリに慣れる
ここまででNginxサービスの管理方法を知ったので、いくつかの重要なディレクトリとファイルに慣れてみましょう。
コンテンツ
/usr/share/nginx/html
: 実際のウェブコンテンツは、デフォルトでは前に見たデフォルトの Nginx ページのみから構成され、/usr/share/nginx/html
ディレクトリから提供されます。これは、Nginx の設定ファイルを変更することで変更できます。
サーバーの設定
/etc/nginx
: Nginx の設定ディレクトリです。すべての Nginx の設定ファイルはここにあります。/etc/nginx/nginx.conf
: 主要な Nginx の設定ファイルです。Nginx のグローバル設定を変更するために変更できます。/etc/nginx/conf.d/
: このディレクトリには、サーバーブロックの設定ファイルが含まれており、Nginx 内でホストされているウェブサイトを定義できます。典型的なアプローチは、ウェブサイトごとに名前が付けられた別々のファイルを使用することで、そのファイルの名前はウェブサイトのドメイン名に基づいています。your_domain.conf
のように。
サーバーログ
/var/log/nginx/access.log
: Web サーバーへのすべてのリクエストは、このログファイルに記録されます (Nginx が他に設定されていない限り)。/var/log/nginx/error.log
: すべてのNginxエラーはこのログに記録されます。
これで、サイトを1つまたは複数のドメインでホストする準備が整いました。
ステップ6 – サーバーブロックの設定(オプション)
Nginxウェブサーバーを使用する場合、サーバーブロック(Apacheのバーチャルホストに類似)を使用して構成の詳細を整理し、1つのサーバーから複数のドメインをホストできます。Rocky Linux 9では、サーバーブロックは/etc/nginx/conf.d
にある.conf
ファイルで定義されています。your_domain
と呼ばれるドメインを設定しますが、これは独自のドメイン名に置き換えてください。
Rocky Linux 9のデフォルトでは、Nginxは/usr/share/nginx/html
のディレクトリからドキュメントを提供するように構成されています。これは単一のサイトには適していますが、複数のサイトをホストする場合は管理が難しくなります。 /usr/share/nginx/html
を変更せずに、/var/www
内にyour_domainのウェブサイトのディレクトリ構造を作成します。クライアントのリクエストが他のサイトに一致しない場合は、/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
ページを作成します。Rocky Linux 9に付属しているデフォルトのテキストエディタはvi
です。vi
は非常に強力なテキストエディタですが、それに慣れていないユーザーにとってはややわかりにくい場合があります。Rocky Linux 9サーバーで構成ファイルを編集するためによりユーザーフレンドリーなエディタ(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;
}
}
root
構成を新しいディレクトリに、server_name
をドメイン名に更新したことに注意してください。ファイルを保存して閉じます。
2つのサーバーブロックが有効になり、listen
とserver_name
ディレクティブに基づいてリクエストに応答するように設定されています(これらのディレクティブがNginxでどのように処理されるかについてはこちらで詳しく読むことができます):
your_domain
:your_domain
とwww.your_domain
のリクエストに応答します。default
:他の2つのブロックに一致しないポート80のすべてのリクエストに応答します。
次に、nginx -t
を使用して、Nginxファイルに構文エラーがないかどうかをテストしてください:
- sudo nginx -t
問題がなければ、変更を有効にするためにNginxを再起動してください:
- sudo systemctl restart nginx
ブラウザから変更内容をテストする前に、サーバーのSELinuxセキュリティコンテキストを更新して、Nginxが/var/www/your_domain
ディレクトリからコンテンツを提供できるようにします。
このchcon
コンテキストの更新により、カスタムドキュメントルートがHTTPコンテンツとして提供されるようになります:
- chcon -vR system_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/
Nginxは今、あなたのドメイン名を提供しているはずです。これをテストするには、http://your_domain
に移動してください。そこで、次のようなものが表示されるはずです:
結論
今、Webサーバーがインストールされているので、提供するコンテンツの種類や、より豊かな体験を作成するために使用したい技術の多くのオプションがあります。
無料のSSL証明書を使用してドメイン名のHTTPSを設定するには、Let’s Encryptを使用し、Rocky Linux 9でLet’s Encryptを使用したNginxのセキュリティを確保する方法に移動する必要があります。
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-rocky-linux-9