CentOS8にNginxをインストールする方法

提供:Dev Guides
移動先:案内検索

序章

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コードを追加します。

/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 + XYENTERの順に押すと使用できます。

Nginxがこのコンテンツを提供するには、カスタムWebルートを指す正しいディレクティブを使用してサーバーブロックを作成する必要があります。 /etc/nginx/conf.d/your_domain.confに新しいサーバーブロックを作成します。

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;
        }
}

コンテンツの編集が完了したら、ファイルを保存して閉じます。

どの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サイトで使用する可能性のあるコンテンツの種類とテクノロジに関する多くのオプションがあります。