Rocky Linux 9にNginxをインストールする方法

導入

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パッケージをインストールします:

  1. sudo dnf install nginx

プロンプトが表示されたら、yを入力してnginxをインストールすることを確認します。その後、dnfはNginxと必要な依存関係をサーバにインストールします。

インストールが完了したら、次のコマンドを実行してWebサーバを有効にし、起動します:

  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx

これにより、サーバが再起動するたびにNginxが自動的に再起動します。新しいWebサーバは今、稼働しているはずですが、テストする前におそらくファイアウォールの設定を変更する必要があるでしょう。

ステップ2 – ファイアウォールの調整

firewalldファイアウォールをRocky Linux 9の初期サーバセットアップガイドの一部として有効にした場合、Nginxウェブサーバでデフォルトでポート80で実行されている外部接続を許可するためにファイアウォール設定を調整する必要があります。

以下のコマンドを実行して、ポート80でHTTP接続を永続的に有効にします:

  1. sudo firewall-cmd --permanent --add-service=http

追加されたhttpファイアウォールサービスが正しく追加されたかどうかを確認するには、次のコマンドを実行できます:

  1. sudo firewall-cmd --permanent --list-all

次のような出力が表示されます:

Output
public 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:

変更を適用するには、ファイアウォールサービスをリロードする必要があります:

  1. sudo firewall-cmd --reload

あなたのWebサーバーは今、外部の訪問者からアクセス可能になっています。

ステップ3 – Webサーバーの確認

この時点で、あなたのWebサーバーは起動しています。

サービスが実行されていることを確認するには、systemctl statusコマンドを使用できます:

  1. 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ツールを使用して見つけることができます:

  1. curl -4 icanhazip.com

サーバーのIPアドレスを取得したら、それをブラウザのアドレスバーに入力してください:

http://your_server_ip

デフォルトのNginxランディングページを受信するはずです:

このページにいる場合、サーバーは正しく実行され、管理される準備ができています。

ステップ4 – Nginxプロセスの管理

ウェブサーバーが稼働しているので、サービス管理コマンドをいくつか見てみましょう。

ウェブサーバーを停止するには、systemctl stopを使用します:

  1. sudo systemctl stop nginx

停止したウェブサーバーを再起動するには、systemctl startを使用します:

  1. sudo systemctl start nginx

サービスを停止してから再起動するには、systemctl restartを使用します:

  1. sudo systemctl restart nginx

構成変更のみを行う場合、Nginxは接続を切断せずにリロードできることがよくあります。これを行うには、systemctl reloadを使用します:

  1. sudo systemctl reload nginx

このチュートリアルの前半で、サーバー起動時にNginxを自動起動するように構成しました。この動作を無効にするには、systemctl disableを使用します:

  1. sudo systemctl disable nginx

サービスを再度起動してブート時に起動するようにするには、次のように入力します:

  1. 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フラグを使用して必要な親ディレクトリを作成します:

  1. sudo mkdir -p /var/www/your_domain/html

次に、ディレクトリの所有権を$USER環境変数に割り当てます。これは現在のシステムユーザーを参照する必要があります:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

次に、サーバーブロックの設定をテストするためにサンプルのindex.htmlページを作成します。Rocky Linux 9に付属しているデフォルトのテキストエディタはviです。viは非常に強力なテキストエディタですが、それに慣れていないユーザーにとってはややわかりにくい場合があります。Rocky Linux 9サーバーで構成ファイルを編集するためによりユーザーフレンドリーなエディタ(nanoなど)をインストールすることを検討するかもしれません:

  1. sudo dnf install nano

次に、nanoまたはお気に入りのエディタを使用してサンプルのindex.htmlページを作成します:

  1. nano /var/www/your_domain/html/index.html

内部に、次のサンプルHTMLを追加します:

/var/www/your_domain/html/index.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に新しいサーバーブロックを作成します:

  1. sudo nano /etc/nginx/conf.d/your_domain.conf

次に、次の構成ブロックを貼り付けます:

/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つのサーバーブロックが有効になり、listenserver_nameディレクティブに基づいてリクエストに応答するように設定されています(これらのディレクティブがNginxでどのように処理されるかについてはこちらで詳しく読むことができます):

  • your_domainyour_domainwww.your_domainのリクエストに応答します。
  • default:他の2つのブロックに一致しないポート80のすべてのリクエストに応答します。

次に、nginx -tを使用して、Nginxファイルに構文エラーがないかどうかをテストしてください:

  1. sudo nginx -t

問題がなければ、変更を有効にするためにNginxを再起動してください:

  1. sudo systemctl restart nginx

ブラウザから変更内容をテストする前に、サーバーのSELinuxセキュリティコンテキストを更新して、Nginxが/var/www/your_domainディレクトリからコンテンツを提供できるようにします。

このchconコンテキストの更新により、カスタムドキュメントルートがHTTPコンテンツとして提供されるようになります:

  1. 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