GNU/Linux >> Linux の 問題 >  >> AlmaLinux

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

NGINX はオープンソースの無料のHTTPサーバーソフトウェアです。 NGINXは、HTTPサーバー機能に加えて、電子メール(IMAP、POP3、およびSMTP)のプロキシサーバー、およびHTTP、TCP、およびUDPサーバーのリバースプロキシおよびロードバランサーとしても機能します。 NGINXの背後にある目標は、最速のWebサーバーを作成することであり、その卓越性を維持することは、依然としてNginxプロジェクトの中心的な目標です。 NGINXは、Webサーバーのパフォーマンスを測定するベンチマークでApacheやその他のサーバーを常に上回っており、W3Techによると現在最も人気のある使用済みWebサーバーです。

チュートリアルでは、 Let’sEncryptの無料のTLS/SSL証明書を使用してAlmaLinux8にNginxをインストールする方法を学習します。

前提条件
  • 推奨OS: AlmaLinux8。
  • ユーザーアカウント: sudo特権を持つユーザーアカウント またはrootアクセス(suコマンド)

オペレーティングシステムの更新

AlmaLinuxを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:

sudo dnf upgrade --refresh

チュートリアルでは、sudoコマンドを使用します およびsudoステータスがあると仮定

アカウントのsudoステータスを確認するには:

sudo whoami

sudoステータスを示す出力例:

[joshua@localhost ~]$ sudo whoami
root

既存または新規のsudoアカウントを設定するには、AlmaLinuxでSudoersにユーザーを追加する方法のチュートリアルにアクセスしてください。 。

rootアカウントを使用するには 、rootパスワードを指定して次のコマンドを使用してログインします。

su

Nginxをインストール

方法1.AlmaLinuxAppStreamからNginxをインストールします

最初の方法は、AlmaLinuxアプリストリームからNginxをインストールすることです。このバージョンは古いですが、安定していて安全です。プライマリWebサーバーまたはリバースプロキシを実行する必要がある場合は、AppStreamリポジトリをインストールすることをお勧めします。

Nginxをインストールするには、次のコマンドを実行します。

sudo dnf install nginx

出力例:

「Y」と入力します 、次に「ENTERキー」を押します インストールを続行します。

次に、バージョンビルドを確認し、インストールが成功したかどうかを確認します。

sudo nginx -v

出力例:

nginx version: nginx/1.14.1

有効にするモジュールによって、出力が異なることに注意してください。

続行する前に、Nginxサービスを開始する必要があります。

sudo systemctl start nginx

次に、ステータスを確認して、エラーがないことを確認します。

systemctl status nginx

すべてが正しく機能している場合の出力例:

方法2.EPELからNginxをインストールします

2番目のオプションは、EPELリポジトリからNginxをインストールすることです。これにより、Nginx自体から廃止された最新バージョンをインストールするよりも、安定していると見なされるNginxのはるかに最新のバージョンが提供されます。プロセスは比較的簡単です。

まず、EPELリポジトリをインストールします:

sudo dnf install epel-release

出力例:

「Y」と入力します 次に、「ENTERキー」を押します。 インストールを続行します。

さて、 EPEL インストールされている場合は、Nginxモジュールをリセットする必要があります。

sudo dnf module reset nginx

次に、既知のすべてのリポジトリからdnfで使用可能なモジュールを一覧表示します。

sudo dnf module list nginx

出力例:

上記のように、安定版またはメインラインの上位バージョンに切り替えることができます。安定バージョンは常にビルド番号にあり、メインラインは当然メインラインであることに注意してください。

EPELの新しいモジュールの1つを有効にするには、端末で次を使用します。

最新の安定版を有効にする:

sudo dnf module enable nginx:1.20

安定したNginxEPELに関する注意: これは将来変更される可能性があります。コピーして貼り付けるだけでなく、必ずモジュールを一覧表示してください。

最新のメインラインを有効にする:

sudo dnf module enable nginx:mainline

次に、Nginxをインストールします:

sudo dnf install nginx

出力例:

「Y」と入力します 次に、「ENTERキー」を押します。 インストールを続行します。

次に、バージョンビルドを確認し、インストールが成功したかどうかを確認します。

sudo nginx -v

出力例(メインライン):

nginx version: nginx/1.19.10

有効にするモジュールによって、出力が異なることに注意してください。

続行する前に、Nginxサービスを開始する必要があります。

sudo systemctl enable nginx --now

次に、ステータスを確認して、エラーがないことを確認します。

systemctl status nginx

すべてが正しく機能している場合の出力例:

ファイアウォールルールの構成

Nginxのインストール時に、ファイアウォールルールが標準ポート80または443ポートに自動的に追加されることはありません。続行する前に、次のルールを設定する必要があります。これは、使用するポートによって異なりますが、すべてのオプションが一覧表示されています。

ポート80またはHTTPを開く:

sudo firewall-cmd --permanent --zone=public --add-service=http

ポート443またはHTTPSを開く:

sudo firewall-cmd --permanent --zone=public --add-service=https

ファイアウォールをリロードして変更を有効にします

sudo firewall-cmd --reload

Nginxサーバーの構成

サーバーのIPアドレスを設定する準備ができている必要があります。これを行う最も簡単な方法は、次の方法です。

サーバーのIPアドレスを見つける

サーバーのIPアドレスを設定する準備をしておく必要があります。これを行う最も簡単な方法は、次の方法です。

curl -4 icanhazip.com

出力例:

XXX.XXX.XXX.XXX IP address

コマンドが機能しない場合は、curlパッケージがインストールされていない可能性があります。次のコマンドを実行します:

sudo dnf install curl -y

サーバーのIPアドレスを取得したら、お気に入りのインターネットブラウザを開き、デフォルトのランディングページが機能していることを確認します。

http://your_server_ip

インターネットブラウザに次のページが表示されます。このページが表示されず、代わりにNginxエラーページが表示される場合は、EPELリリースが異なる可能性があるため問題ありません。 Nginxサーバーに到達できることを確認するためにテストしています。

サイトソースディレクトリの設定

チュートリアルでは、 example.comというドメインを設定します 、ただし、これをドメイン名に置き換える必要があります 。チュートリアルでは、Webディレクトリを作成し、親ディレクトリにサイトファイルを構成します / var / www /

まず、 example.comのディレクトリを作成します 、次のように、「-p」を使用します 必要な親ディレクトリを作成するためのフラグ:

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

次に、ディレクトリの所有者を割り当てる必要があります。

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

3番目に、ディレクトリのアクセス許可を割り当てます。これにより、所有者はファイルの読み取り、書き込み、および実行を行い、グループなどには読み取りと実行のアクセス許可のみを付与します。次のコマンドを入力できます:

sudo chmod -R 755 /var/www/your_domain

または、 / usr / share / nginx / htmlを使用することもできます 代わりにディレクトリですが、 / var / www 新規ユーザーにはディレクトリ方式をお勧めします。

テストHTMLページを設定する

第4に、Nginxサーバーが動作していることを確認するために使用するテストページを作成します。

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

nanoエディターと作成した新しいファイルの内部。次のように入力します。

<html>
 <head>
  <title>Welcome to your_domain!</title>
 </head>
 <body>
   <h1>Success!  The your_domain server block is working!</h1>
 </body>
</html>

ファイルを保存します(CTRL + O)、 次に、(CTRL + X)を終了します 。

Nginxサーバーブロックの作成

デフォルトでは、Apache仮想ホストと同様にNginxサーバーブロックは /etc/nginx/conf.dで処理されます。 ディレクトリ。ただし、Nginxのインストールは、 conf.dのいずれかを利用するバージョンやディストリビューションによって異なります。 またはsites-available/ sites-enabled デフォルトでは。チュートリアルでは、サイトのディレクトリを使用して標準を維持します。

まず、サイト-利用可能に必要なディレクトリを作成します およびサイト対応 。 Nginxユーザーもこの設定に精通しているでしょう。

sudo mkdir /etc/nginx/sites-available
sudo mkdir /etc/nginx/sites-enabled

次に、nginx.confファイルを開き、「include/etc/nginx/default.d/*.conf;」を削除またはコメントします。 そのすぐ下にinclude“ /etc/nginx/sites-enabled/*.conf;”を追加します 。

例のみ:

# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 4096;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

###EDIT HERE###
#  include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

上記のように、「#」 include conf.dにコメントが追加されました 行、およびサイト対応を含める 追加されました。

ファイルを保存します(CTRL + O) (CTRL + X)を終了します 。

次に、サーバーブロック構成ファイルを作成します。チュートリアルではyour_domain.confという名前が使用されますが、これには任意の名前を付けることができます。

sudo nano /etc/nginx/sites-available/your_domain.conf

次のサンプルコードをブロックに貼り付けることができます。これは単なるHTTPのみの例です 基本的なテスト用。

server {
 listen 80;
 listen [::]:80;

 root /var/www/your_domain/html;

  index index.html index.htm;
  server_name your_domain www.your_domain;

 location / {
  try_files $uri $uri/ =404;
 }
}

この例は、サーバーが2つのサーバー名「your_domain」をリッスンしていることを示しています。 ポート80で。

ルートディレクトリを、作成したルートディレクトリの名前/場所に変更する必要があります。

有効なNginxサーバーブロック

Nginxサーバーブロックを有効にするには、Nginxディレクトリで有効になっているサイト(利用可能なサイトからサイトに利用可能)の構成ファイルをリンクする必要があります。これは、次のようにln-sコマンドを使用して実行できます。

sudo ln -s /etc/nginx/sites-available/your_domain.conf /etc/nginx/sites-enabled/

最終構成とテスト実行

最終段階では、デフォルトの nginx.confを開く必要があります ファイル。

sudo nano /etc/nginx/nginx.conf

そして、次の行のコメントを外します。

server_names_hash_bucket_size 64;

サーバーを追加すると問題が発生することがあるため、サーバー名のハッシュバケットサイズが変更されます。

次に、Nginxをテストして、正しく再起動する前に機能していることを確認します。

sudo nginx -t

構文にエラーがない場合、出力は次のようになります。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

次のok出力がある場合は、変更を行うためにNginxサーバーを再起動します。

sudo systemctl restart nginx

次に、インターネットブラウザを開き、サーバーのドメイン名を入力します。サーバーブロックが稼働していることを確認する必要があります。

Let'sEncryptのSSL無料証明書でNginxを保護する

理想的には、SSL証明書を使用したHTTPSでNginxを実行することをお勧めします。 。これを行う最良の方法は、 Let’s Encryptを使用することです。 非営利のインターネットセキュリティ研究グループ(ISRG)が運営する無料の自動化されたオープンな認証局 。

まず、 EPELをインストールします リポジトリとmod_ssl より良く更新されたパッケージとセキュリティのためのパッケージ。

sudo dnf install epel-release mod_ssl -y

次に、certbotパッケージをインストールします 次のように:

sudo dnf install python3-certbot-nginx -y

インストールしたら、次のコマンドを実行して証明書の作成を開始します。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

これは、強制HTTPS 301リダイレクト、Strict-Transport-Securityヘッダー、およびOCSPステープリングを含む理想的なセットアップです。電子メールとドメイン名を要件に合わせて調整してください。

これで、URLは HTTPS://www.example.comになります HTTP://www.example.comの代わりに 。

古いHTTPURLを使用する場合は注意してください 、自動的に HTTPSにリダイレクトされます 。

オプションで、証明書を自動的に更新するようにcronジョブを設定できます。 Certbotはこれを自動的に行うスクリプトを提供しており、最初にドライランを実行してすべてが機能していることを確認するためのテストを行うことができます。

sudo certbot renew --dry-run

すべてが機能している場合は、次のターミナルコマンドを使用してcrontabウィンドウを開きます。

sudo crontab -e

次に、自動更新する時刻を指定します。これは少なくとも毎日チェックする必要があり、証明書を更新する必要がある場合、スクリプトは証明書を更新しません。設定するのに適した時間を見つけるのに助けが必要な場合は、crontab.guru無料ツールを使用してください。

00 00 */1 * * /usr/sbin/certbot-auto renew

保存(CTRL + O) 次に、(CTRL + X)、を終了します cronジョブが自動的に有効になります。

Nginxサービスの管理

サーバー上でNginxが正常に実行されたので、いくつかの管理基調講演は次のとおりです。

Nginxウェブサーバーを停止するには:

sudo systemctl stop nginx

Nginxウェブサーバーを起動するには:

sudo systemctl start nginx

Nginxウェブサーバーを再起動するには:

sudo systemctl restart nginx

Nginxウェブサーバーをリロードするには(再起動を必要としないマイナーな変更の場合)

sudo systemctl reload nginx

サーバーの起動時にNginxを無効にするには:

sudo systemctl disable nginx

サーバーの起動時にNginxを起動するには(インストール時に自動的に有効になります)

sudo systemctl enable nginx

Nginxサーバーログにアクセスする方法

Nginxログディレクトリ

デフォルトでは、すべてのNGINXアクセス/エラーログは、変更していない限り、次のコマンドで表示できるログディレクトリにあります。

まず、ログディレクトリに移動してファイルを一覧表示します。

cd /var/log/nginx && ls -l

次のアクセスファイルとエラーファイルがあります。

アクセスログ:

/var/log/nginx/access.log

エラーログ:

/var/log/nginx/error.log

sudo tail -f / location / of / log pathコマンドを使用して、ターミナルでログをリアルタイムで表示するには。

例:

sudo tail -f /var/log/nginx/access.log

もう1つのオプションは、最後のX行を印刷することです。たとえば、Xを30に置き換えて、-n30フラグを追加して30行を印刷します。 。

sudo tail -f /var/log/nginx/access.log -n 30

これらはログの読み取りのほんの一例であり、grepも役立つ場合があります。

Nginxログローテーションを構成する方法

Nginxはログローテーションを自動的にインストールし、毎日ローテーションするデフォルトに設定します。以下に示すようにファイルにアクセスすることで、これらの設定を変更できます。

sudo nano /etc/nginx/logrotate.d/nginx

次に、類似していない場合でも同じファイル構造が表示されます。ここで内容を変更できます。ほとんどの場合、保持するログの数を変更したり、毎日から毎週に変更したりできます。 fail2banモニタリングなどのソフトウェアに特定のログ要件が必要な場合を除いて、これはデフォルトのままにしておく必要があります。

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

おそらく変更したい主な設定は次のとおりです。

  • 毎日– これは、毎週、毎月に変更できます。これは毎日保管する必要があります。そうしないと、ログファイルを確認するのが困難になります。
  • 回転14– これは、保持および削除するログの数です。したがって、最大で14個のログしかありません。7日分のログのみを保持する場合は、これを7に変更します。

何をしているのかわからない限り、他の設定には触れないことをお勧めします。

Nginxを更新する方法

Nginxは、新しいバージョンがリポジトリにヒットしたときにデフォルトで更新されます。アップグレードする前に、Nginxディレクトリ、または少なくとも nginx.confをバックアップすることを常にお勧めします。 ファイル。次のコマンドでどちらも実行できます。

nginx.confをバックアップする(強くお勧めします):

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

必要に応じて、Nginxフォルダー全体をバックアップします。

sudo cp /etc/nginx/ /etc/nginx-bkup

次に、標準の更新コマンドを実行します。

sudo dnf upgrade --refresh

アップグレードが利用可能な場合は、アップグレードを実行します。

アップグレードまたはインストール中にこれを求めるプロンプトが表示される場合がありますが、事前に手動でこれを行うことは非常に重要です。複数のサイトの大規模なNginx構成の場合、GithubやGitlabなどにバックアップすることはさらに有益です。

Nginxを削除(アンインストール)する方法

Nginxを使用しなくなった場合に削除するには、次のコマンドを使用してこれを実行できます。

sudo dnf autoremove nginx

このコマンドは、インストールに付属していた未使用の依存関係も削除します。

EPELを使用してNginxをインストールし、それをリセットして元のバージョンを再インストールする場合は、前述のように次のコマンドを使用することを忘れないでください。

sudo dnf modules reset nginx

AlmaLinux
  1. Ubuntu16.04にNginxをインストールする方法

  2. CentOS7にNginxをインストールする方法

  3. Debian9にNginxをインストールする方法

  1. AlmaLinux8にMongoDBをインストールする方法

  2. Debian11にNginxをインストールする方法

  3. Fedora35にNginxをインストールする方法

  1. AlmaLinux8にlighttpdをインストールする方法

  2. Almalinux8にPrestaShopをインストールする方法

  3. AlmaLinux8にPython3.10をインストールする方法