Rocky Linux 9にNginxをインストールする方法は次の通りです。
はじめに
Nginxは世界で最も人気のあるWebサーバーの一つであり、インターネット上で最も大きくて高トラフィックなサイトのホスティングを担当しています。ウェブサーバーまたはリバースプロキシとして使用できる、軽量なオプションです。
このガイドでは、Rocky Linux 9 サーバーに Nginx をインストールする方法、ファイアウォールの調整、Nginx プロセスの管理、および単一のサーバーから複数のドメインをホストするためのサーバーブロックの設定方法を確認します。
前提条件
このガイドを始める前に、サーバー上でsudo権限が設定された通常の非ルートユーザーを持っている必要があります。Rocky Linux 9の初期サーバーセットアップガイドに従って、通常のユーザーアカウントの設定方法を学ぶことができます。
このチュートリアルの最後の手順を完了する前に、ドメイン名の登録もオプションで行うことをおすすめします。Silicon Cloudでドメイン名の設定について詳しく学ぶには、Silicon Cloud DNSの導入についてご参照ください。
利用可能なアカウントがある場合は、ノンルートユーザーとしてログインして開始してください。
ステップ1:Nginxのインストール
ロッキーのデフォルトのリポジトリにはNginxが利用可能なので、dnfパッケージマネージャを使用して単一のコマンドでインストールすることができます。
dnf installコマンドを使用して、nginxパッケージをインストールしてください。
- sudo dnf install nginx
指示に従って、nginxをインストールすることを確認するためにyを入力してください。その後、dnfはNginxおよび必要な依存関係をサーバーにインストールします。
インストールが完了したら、以下のコマンドを実行してウェブサーバーを有効化・起動させてください。
- sudo systemctl enable nginx
- sudo systemctl start nginx
サーバーが再起動する度に、Nginxが自動的に再起動されるようになります。新しいウェブサーバーは起動して稼働するはずですが、テストする前におそらくファイアウォールの設定を変更する必要があるでしょう。
ステップ2 – ファイアウォールの調整
Rocky Linux 9の初期サーバーセットアップガイドの一環として、firewalldファイアウォールを有効にした場合、Nginxウェブサーバーはデフォルトでポート80で実行されるため、外部接続を許可するためにファイアウォールの設定を調整する必要があります。
ポート80でHTTP接続を永久に有効化するために、以下のコマンドを実行してください。
- sudo firewall-cmd –permanent –add-service=http
正しくhttpファイアウォールサービスが追加されたか確認するために、次のコマンドを実行できます。
- sudo firewall-cmd –permanent –list-all
このような出力が表示されます。 (Kono yōna shutsuryoku ga hyōji sa remasu.)
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:
変更を適用するためには、ファイアウォールサービスを再起動する必要があります。
- sudo firewall-cmd –reload
あなたのウェブサーバーは、外部の訪問者がアクセス可能になっているはずです。
ステップ3 – ウェブサーバーの確認
この時点で、あなたのウェブサーバーは起動して運用されているはずです。
サービスが実行されているかを確認するために、systemctl statusコマンドを使用することができます。
- systemctl status nginx
● 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アドレスがわからない場合は、icanhazip.comツールを使用して見つけることができます。このツールはインターネット上の別の場所から受信した公開IPアドレスを提供します。
- 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: The actual web content, which by default only consists of the default Nginx page you saw earlier, is served out of the /usr/share/nginx/html directory. This can be changed by altering the Nginx configuration files.
サーバーの設定
- /etc/nginx: The Nginx configuration directory. All of the Nginx configuration files reside here.
- /etc/nginx/nginx.conf: The main Nginx configuration file. This can be modified to make changes to the Nginx global configuration.
- /etc/nginx/conf.d/: This directory contains server block configuration files, where you can define the websites that are hosted within Nginx. A typical approach is to have each website in a separate file that is named after the website’s domain name, such as your_domain.conf.
サーバーログ
- /var/log/nginx/access.log: Every request to your web server is recorded in this log file unless Nginx is configured to do otherwise.
- /var/log/nginx/error.log: Any Nginx errors will be recorded in this log.
今、1つ以上のドメインをホストするためにサイトを設定する準備が整っているはずです。
ステップ6-サーバーブロックの設定(オプション)
Nginxウェブサーバーを使用する際には、server blocks(Apacheの仮想ホストに似たもの)を使用して、設定の詳細を整理し、1つのサーバーから複数のドメインをホストすることができます。Rocky Linux 9では、server blocksは/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が提供されるようになります。
以下のように、-pフラグを使用して必要な親ディレクトリを作成して、your_domainのディレクトリを作成してください。
- 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がこのコンテンツを提供するためには、カスタムのウェブルートを指すディレクティブを含むサーバーブロックを作成する必要があります。/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;
}
}
新しいディレクトリにルートの設定を更新し、サーバー名をドメイン名に変更したことに気付いてください。ファイルを保存して閉じてください。
現在、2つのサーバーブロックが有効になり、そのlistenディレクティブとserver_nameディレクティブに基づいてリクエストに応答するように設定されています(Nginxがこれらのディレクティブを処理する方法については、こちらで詳細を読むことができます)。
- your_domain: Will respond to requests for your_domain and www.your_domain.
- default: Will respond to any requests on port 80 that do not match the other two blocks.
次に、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にアクセスして、以下のような表示がされるはずです。
結論
ウェブサーバーをインストールした以上、提供するコンテンツの種類やより豊かな体験を作り出すために使用する技術には、多くの選択肢があります。
ロッキーリナックス9でLet’s Encryptを使用して無料のSSL証明書でドメイン名のHTTPSを設定するには、「Let’s Encryptを使用してNginxを安全にする方法」に進んでください。