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

25開発者と管理者のためのNginxコマンドを知っている必要があります

Nginxは、その豊富な機能セットと優れた柔軟性により、LinuxおよびBSDユーザーの間で最も人気のあるWebサーバーの1つです。 Web開発者の場合、NginxまたはApacheサーバーのいずれかを使用している可能性があります。したがって、コマンドラインからNginxがどのように機能するかを深く理解することが不可欠です。幸い、いくつかのNginxコマンドをマスターすることで、DevOpsスキルを向上させることができます。私たちの編集者は、これらの頻繁に使用されるコマンドを選択し、Linux管理者を開始するための包括的なディスカッションを提供しました。これらのコマンドの詳細については、読み続けてください。

Linux管理者向けの便利なNginxコマンド

多くのWebサーバーとは異なり、Nginxは構成ファイルのみを使用してサーバー構成を処理します。したがって、使用できるコマンドラインパラメータはごくわずかです。管理者は探しているコマンドをすばやく見つけることができるため、これは便利です。以下は、今日使用できる広く使用されているNginxコマンドです。

LinuxへのNginxWebサーバーのインストール

Nginxは、さまざまな種類のLinux用のいくつかのインストールパッケージを提供しています。ここでそれらを見つけることができます。以下に示すように、パッケージマネージャーを使用してNginxを直接インストールすることもできます。

$ sudo apt install nginx                                # Ubuntu
$ sudo dnf install nginx                                # Fedora
$ sudo yum install epel-release && yum install nginx    # RHEL and CentOS

ソースからNginxをコンパイルすることも可能です。詳細については、このガイドをご覧ください。

1。 Nginxサーバーを起動します

以下に示すように、NginxWebサーバーを起動するのは非常に簡単です。以下のコマンドのいずれかを使用して、標準のWebサーバーを呼び出します。

$ sudo service nginx start
---

このコマンドを発行すると、NginxはSystemVinitスクリプトによって開始されます。 Ubuntu Linux 16.04LTS以降のようなsystemdベースのシステムからNginxを実行している場合は、以下のコマンドを使用する必要があります。

$ sudo systemctl start nginx

サーバーが正常に起動したかどうかを示す応答が表示されます。もう1つの簡単ですが効果的な方法は、以下に示すように、バイナリパスを使用してNginxを直接呼び出すことです。

$ sudo /usr/bin/nginx

2。 Nginxサーバーを停止します

上記と同様の方法を使用して、実行中のNginxサーバーを停止することもできます。ただし、実行中のNginxサーバーを停止すると、それに関連するすべてのシステムプロセスが強制終了されることに注意してください。アクティブな接続がある場合でも終了します。

$ sudo service nginx stop

このコマンドは、SystemVinitスクリプトを使用するシステムでNginxプロセスを停止します。 systemdベースのマシンの場合、次のコマンドを使用できます。

$ sudo systemctl stop nginx

ただし、これらのコマンドは、ビジー状態のサーバーでは依然としてかなりの時間がかかる可能性があります。次のコマンドは、Nginxサービスをより高速に停止する方法を示しています。

$ sudo killall -9 nginx

3。 Nginxサーバーを終了します

Nginxサーバーを終了することは、サーバーを停止することに似ていますが、明確な違いが1つあります。 Nginxデーモンは、アクティブな接続を中断しないという意味で、適切なアプローチで終了します。そのため、シャットダウンする前に、クライアントのリクエストは期待どおりに処理されます。

$ sudo service nginx quit

このコマンドを使用して、LinuxシェルからNginxサーバーを終了します。 systemdベースのマシンを実行しているユーザーは、次のコマンドを使用してこのジョブを実行できます。

$ sudo systemctl quit nginx

次のNginxコマンドのいずれかを使用して、実行中のサーバーを終了することもできます。

$ sudo nginx -s quit
$ sudo kill -QUIT $( cat /usr/local/nginx/logs/nginx.pid )

4。 Nginxサーバーを再起動します

サーバーを再起動すると、Nginxプロセスは単に停止してから再開します。以下のコマンドのいずれかを使用して、コマンドラインからNginxデーモンを再起動できます。

$ sudo service nginx restart

このコマンドは、SystemVinitスクリプトを使用してNginxサーバーを再起動します。 systemctlを使用できます 新しいUbuntuリリースのようなsystemdベースのシステムでこれを行うため。

$ sudo systemctl restart nginx

次の例に示すように、これを別の方法で行うこともできます。

$ sudo /etc/init.d/nginx restart

ソースからNginxをコンパイルした場合は、次のコマンドを使用できます。

$ sudo /usr/local/nginx/sbin/nginx -s restart

5。 Nginxサーバーをリロードする

Nginxサーバーのリロードは、サーバーの再起動とは少し異なります。サーバーをリロードすると、Nginxは正常にシャットダウンします。これは、Nginxデーモンが最初に終了し、次に構成ファイルを解析して変更の試行を確認し、操作を中断せずに新しいワーカープロセスを開始することを意味します。

$ sudo service nginx reload
$ sudo systemctl status nginx

最初のコマンドはSystemVinitスクリプトを使用しますが、最後のコマンドはsystemdベースのLinuxディストリビューション用です。次のスクリプトを呼び出して、このジョブを実行することもできます。

$ sudo /etc/init.d/nginx reload

ソースコードからNginxをコンパイルした場合は、次のコマンドを使用する必要があります。

$ sudo /usr/local/nginx/sbin/nginx -s reload

次のコマンドは、Nginxサーバーを正常に再起動するもう1つの便利な方法です。

$ sudo nginx -s reload

6。 Nginxステータスを確認する

Nginxサーバーで操作を実行する前に、Nginxサーバーの現在のステータスを確認したい場合があります。これは、以下のコマンドのいずれかを使用して非常に迅速に実行できます。 sudoを忘れないでください コマンドを実行するか、rootユーザーに切り替えます。

$ sudo service nginx status

以前のいくつかのコマンドに示されているように、このコマンドはSystemVinitスクリプトを初期化することによって機能します。 systemdを使用するシステムには次のコマンドを使用できます 代わりに。

$ systemctl status nginx

これを行う別の方法は、次のコマンドで示すように、Nginxinit.dスクリプトを直接使用することです。

$ sudo /etc/init.d/nginx status

Nginxがソースコードからコンパイルされている場合は、次のコマンドを実行します。

$ sudo /usr/local/nginx/sbin/nginx -s status

7。 Nginx構成を確認する

Nginxのカスタマイズ機能にはさまざまな機能があるため、ネットワーク管理者は多くの場合、構成ファイルを微調整して新機能を追加/ロック解除する必要があります。ただし、潜在的なエラーがないか常に構成ファイルをテストする必要があります。そうしないと、悪意のあるユーザーがサーバー構成の障害を利用する可能性があります。

$ sudo nginx -t

これはあなたのためにこの仕事をする簡単なコマンドです。これを実行すると、基本的にNginxに構文エラーがないか構成ファイルをチェックし、サーバーの実行を控えるように指示します。次のコマンドを使用して、構成テストの結果をターミナルコンソールにダンプできます。

$ sudo nginx -T

次のNginxコマンドのいずれかを使用して、Nginxサーバーの構成をテストすることもできます。

$ sudo service nginx configtest   # System V Init
$ sudo systemctl config nginx     # systemd-based

8。 Nginxにシグナルを送信する

管理者は、さまざまな有用なシグナルをNginxデーモンに送信できます。 -sを使用する必要があります Nginxに信号を送信し、その後に実際の信号を送信するフラグ。 Nginxサーバーを終了してリロードするためにシグナルを使用したとき、すでにシグナルが動作しているのを確認しました。ここでは、順番に指定しています。

$ sudo nginx -s stop     # stops a running Nginx server
$ sudo nginx -s quit     # quits Nginx server
$ sudo nginx -s reload   # gracefully restarts Nginx
$ sudo nginx -s reopen   # reopens server log file

ただし、Nginxのバージョンは少なくとも0.7.53以上である必要があります。そうしないと、Nginxプロセスにシグナルを送信できません。

9。 Nginxのバージョン情報を表示する

Nginxの一部の新しい機能は、最近のバージョンでのみ使用できます。そのため、管理者はレガシーサーバーで互換性の問題に直面する可能性があります。 Nginxのバージョンを簡単に判断して、問題がサーバーのバージョンに関係しているかどうかを確認できます。

$ sudo service nginx -v       # uses System V Init
$ sudo systemctl -v nginx     # for systemd-based distributions

次のコマンドを使用して、構成変数やコンパイラのバージョンなど、Nginxのインストールに関する追加情報を表示できます。

$ sudo service nginx -V
$ sudo systemctl -V nginx

さらに、UbuntuまたはDebianベースのLinuxサーバーを実行している場合は、次のコマンドを使用してNginxのバージョンを確認できます。

$ sudo apt-cache policy nginx

10。ヘルプページを表示する

Nginxヘルプページは、初心者と熟練したLinux管理者の両方にとって優れたリファレンスポイントです。次のNginxコマンドのいずれかを使用して、Linuxターミナルエミュレータからこのリファレンスを表示できます。

$ sudo service nginx -h     # uses System V Init
$ sudo systemctl -h nginx   # for systemd-based distributions

次のコマンドを使用してこのジョブを実行することもできます。

$ sudo service nginx -?     # uses System V Init
$ sudo systemctl -? nginx   # for systemd-based distributions

ヘルプページを参照することは、ユーザーが利用できるオプションを簡単に垣間見ることができるため、常に優れた選択肢です。

11。代替構成を使用する

NginxWebサーバーによって提供されるカスタマイズ機能の無限のリストがあります。管理者は、サーバーに機能を追加するためにNginx構成ファイルを簡単に調整できます。ほとんどのシステムのデフォルトのNginx構成ファイルは/etc/nginx/nginx.confです。ただし、多くの場合、最初に代替構成ファイルにカスタマイズを実装することをお勧めします。

$ sudo nginx -c ~/test.conf

新しい構成ファイルの名前はtest.confであると想定していることに注意してください。この部分を構成ファイルの実際の名前に置き換えてください。これで、以下のコマンドを使用して新しい構成をテストできます。

$ sudo nginx -t -c ~/test.conf

ソースからコンパイルするときに、別のディレクトリでデフォルト構成を探すようにNginxに指示することもできます。インストールを構成するときに、このディレクトリを渡すだけです。

# ./configure --conf-path=/etc/some/other/nginx.conf

12。エラー以外のメッセージを抑制する

新しい構成をテストしているときにエラーメッセージを受け取るのは正常です。ただし、カスタマイズを確認すると、無関係な情報も多く取得されます。幸い、Nginxデーモンは、以下に示すように、これらの非エラーメッセージを抑制する簡単なオプションを提供します。

$ sudo nginx -q -t -c ~/test.conf

このコマンドは、test.confというカスタム構成ファイルをテストし、出力から不要な情報を省略します。リモートサーバーの管理タスクに非常に役立ちます。

13。グローバルディレクティブの変更

グローバルディレクティブには、Nginxサーバーで使用できるすべての構成パラメーターが含まれています。これは、Webサーバーの最も機密性の高いセクションの1つであり、真剣な注意が必要です。 -g オプションを使用すると、管理者はWebサーバー用にパーソナライズされたNginxディレクティブを定義できます。

$ sudo nginx -g "pid /var/run/test.pid; worker_processes 2;"

このコマンドは、PIDのグローバルNginxディレクティブを指定し、ワーカープロセスの数(この場合は2)を定義します。これで、以前に使用した代替構成ファイルを使用してこれをテストできます。

$ sudo nginx -t -c ~/test.conf -g "pid /var/run/test.pid; worker_processes 2;"

14。 Nginxプレフィックスパスを変更する

プレフィックスパスには、NginxWebサーバーで使用されるすべてのファイルが含まれています。また、相対パス(ライブラリソースを除く)を設定するために構成するときに使用されるディレクトリと同じです。デフォルトでは、Nginxはプレフィックスとして/ usr / local/nginxディレクトリを使用します。以下のコマンドは、コマンドラインからこれをオーバーライドする方法を示しています。

$ sudo nginx -p /path/to/new/prefix

-p フラグを使用すると、新しいプレフィックスの場所を渡すことができます。これは、新しいサーバーをテストするときに役立つことがよくあります。ただし、このオプションは、バージョン0.7.53より古いNginxサーバーでは使用できません。

15。 steb_statusモジュールを確認してください

stub_status モジュールは、Nginxに関するいくつかの非常に重要なメトリックを公開します。管理者は、Linuxメールサーバーまたはプロキシサーバーを監視するためにこれを使用することがよくあります。ビルド済みのすべてのNginxバイナリにはこのモジュールが付属していますが、ソースからNginxをコンパイルした場合、Nginxサーバーにこれがない可能性があります。次のコマンドを使用して、持っているかどうかをテストできます。

$ sudo nginx -V 2>&1 | grep --color -- --with-http_stub_status_module

このモジュールが不足していることがわかった場合は、いつでもソースからNginxを再構築できます。 –with-http_stub_status_moduleを含めるだけです。 以下に示すように、Nginxを構成するときのパラメーター。

$ ./configure --with-http_stub_status_module

16。 Nginxパスを確認してください

Nginxインストールのパスを確認するためのNginxコマンドがいくつかあります。日常のLinuxターミナルコマンドと同様に、いつでもwhich/whereisコマンドを使用してNginxパスを確認できます。

$ which nginx
$ whereis nginx

上記のコマンドは、Nginxセットアップに関連するファイルを含むすべてのシステムの場所を表示します。これは、psコマンドを使用し、必要な情報をgreppingすることで、別の方法で実行できます。

$ ps aux | grep nginx

これで、Nginxデーモンの場所が明確に表示されるはずです。これは、サーバーマシンに対する低レベルの権限を持たない開発者にとって非常に便利です。

17。 NginxPIDを見つけます

PIDまたはプロセスIDは、LinuxおよびUnixライクなシステム上のプロセスを区別するために使用される一意の番号です。適切なPIDを使用して、さまざまなシグナルをNginxサーバーに送信できます。このPIDは、次のいずれかのコマンドを使用して見つけることができます。

$ ps aux | grep [n]ginx
$ pgrep nginx
$ cat /run/nginx.pid

したがって、pgrepまたはvanillagrepコマンドをpsと組み合わせて使用​​できます。 「grep」がどのように機能するかを理解していなくても心配しないでください。 Linuxgrepコマンドに関するリソースを大量に消費するガイドをすでに公開しています。

18。ログファイルを検索

ログファイルには、システム管理者と開発者の両方にとって貴重な情報がたくさん含まれています。 Nginxには、 access.logで構成される2つのデフォルトのログファイルがあります およびerror.log ドキュメント。これらは/var/ logにあり、次のコマンドを使用して表示できます。

$ ls /var/log/nginx/*.log

これで、上記のログファイルが表示されます。その名前が示すように、 access.log サイト訪問者とerror.logに関する情報が含まれています 設定ミスに関する警告/詳細を収容します。ただし、使用する前に、Nginx構成ファイルからこれら2つのログを有効にする必要があります。

19。仮想ホストを設定する

仮想ホストを使用すると、サーバー管理者は1台のサーバーマシンで複数のWebサイトを実行できます。これは、コンピューティングプロセスを共有して、複数のサイトを同時に実行できるため、多くの場合便利です。ただし、仮想ホストという用語は通常、Apacheサーバーに関連付けられています。それらは「サーバーブロック」として知られています 」Nginxの世界で。

$ sudo ln -s /etc/nginx/sites-available/YOURSITE.com /etc/nginx/sites-enabled/YOURSITE.com

この単純なシンボリックリンクを使用して、Nginxサーバーで仮想ホストを簡単に有効にできます。仮想ホストを無効にする場合は、シンボリックリンクを削除するだけです。

20。コンパイルされたNginxモジュールを表示する

以前のいくつかのNginxコマンドで見たように、デーモンをインストールすると、いくつかの重要なモジュールもインストールされます。以下のコマンドを使用すると、これらのNginxモジュールを簡単に表示できます。

$ sudo 2>&1 nginx -V | tr -- - '\n' | grep _module

このコマンドは、いくつかのLinuxコマンドラインツールを活用し、無関係な情報を除外してモジュールのみを表示します。 Nginxには多数のモジュールがあるため、このコマンドは、サーバー用にコンパイルされているモジュールを確認するのに役立ちます。

21。 Nginxサービスを有効/無効にする

Nginxサービスを有効にすると、サーバーは起動時に自動起動できます。専用サーバーでは、ユーザーの要求が中断される可能性があるため、これは不可欠です。以下のコマンドを使用して、Nginxを非常に簡単に自動起動できるようにすることができます。

$ sudo service nginx enable     # System V Init
$ sudo systemctl enable nginx   # systemd-based systems

これらのシンプルで効果的なコマンドにより、サーバーのダウンタイムを可能な限り削減できます。必要に応じて、自動起動を無効にすることもできます。次のいずれかのコマンドを使用するだけです。

$ sudo update-rc.d -f nginx disable
$ sudo systemctl disable nginx

22。 Nginxをオンザフライでアップグレードする

Nginxを使用すると、管理者はバイナリファイルや構成ファイルをその場でアップグレードできます。これは、サーバーのアップグレードによってクライアント要求が中断されないことを意味します。これを行うには、まず、マスターNginxプロセスのPIDを見つける必要があります。すでに示した簡単なコマンドを使用してそれを行うことができます。

$ cat /run/nginx.pid

これで、新しいNginxバイナリの準備が整います。以下のコマンドを使用して、新しいバイナリを使用するNginxマスター/ワーカープロセスの新しいセットを生成します。

$ sudo kill -s USR2 `cat /run/nginx.pid`

次のコマンドを使用して、最初のマスタープロセスで使用されているワーカープロセスを強制終了します。

$ sudo kill -s WINCH `cat /run/nginx.pid.oldbin`

古いマスタープロセスを強制終了してフォローします。

$ sudo kill -s QUIT `cat /run/nginx.pid.oldbin`

23。 ChrootJailでNginxをセットアップする

Nginxサーバーのchrootjailは、侵入の可能性がある場合に備えて、セキュリティの追加レイヤーを提供します。管理者は、この手法を使用して、Linuxファイルシステムの小さなセクションでサーバーが分離され、安全であることを確認することがよくあります。次のコマンドを使用して、chrootjail内にNginxサーバーをセットアップします。

# D=/nginx
# mkdir -p $D
# mkdir -p $D/etc
# mkdir -p $D/dev
# mkdir -p $D/var
# mkdir -p $D/usr
# mkdir -p $D/usr/local/nginx
# mkdir -p $D/tmp
# chmod 1777 $D/tmp
# mkdir -p $D/var/tmp
# chmod 1777 $D/var/tmp
# mkdir -p $D/lib64
# ls -l /dev/{null,random,urandom}
# /bin/cp -farv /usr/local/nginx/* $D/usr/local/nginx

これらをrootとして実行する必要があります。次に、以下のコマンドを使用して共有ライブラリを見つけます。

# ldd /usr/local/nginx/sbin/nginx

以下に示すように、すべてのライブラリを1つずつコピーします。

# cp /lib64/libpcre.so.0 $D/lib64

/etcと他のいくつかのディレクトリもコピーする必要があります。

# cp -fv /etc/{group,prelink.cache,services,adjtime,shells,gshadow,shadow,hosts.deny,localtime,nsswitch.conf,nscd.conf,prelink.conf,protocols,hosts,passwd,ld.so.cache,ld.so.conf,resolv.conf,host.conf} $D/etc

# cp -avr /etc/{ld.so.conf.d,prelink.conf.d} $D/etc

これで、chrootjailでNginxの準備が整いました。古いサービスを強制終了し、次のコマンドを使用して新しいサービスを開始するだけです。

# /usr/sbin/chroot /nginx /usr/local/nginx/sbin/nginx -t

24。 Docker内でNginxを実行する

Dockerコンテナーは、その柔軟性と堅牢なパフォーマンスにより、非常に人気があります。 Dockerコンテナ内からNginxWebサーバーを簡単に作成して実行できます。次のコマンドは、公式のNginxイメージをプルし、デフォルトの構成を使用してサーバーインスタンスを作成します。

$ docker run --name nginx-server -P -d nginx

次の簡単なコマンドを使用して、永続ストレージを維持できます。

$ sudo docker run --name nginx-server -v /var/www:/usr/share/nginx/html:ro \

-v /var/nginx/conf:/etc/nginx:ro -P -d nginx

この投稿で、より便利なDockerコマンドを見つけることができます。 Docker固有の情報を探している場合は、一目見てください。

25。 LXD内でNginxを実行する

LXDは次世代のLinuxコンテナーとして高く評価されており、驚異的な機能セットを提供します。 LXDコンテナを介してNginxを使用することもできます。 LXD用の次のNginxコマンドを見てください。

$ sudo lxc launch ubuntu:18.04 nginx-server
$ sudo lxc exec nginx-server -- sudo --user ubuntu --login
$ sudo apt update
$ sudo apt install -y nginx
$ sudo systemctl reload nginx

まず、nginx-serverというコンテナーを作成し、そのコンテナーでシェルを開始しました。次に、パッケージリストを更新し、そのコンテナー内にNginxWebサーバーをインストールしました。最後のコマンドは、サーバーをリロードするだけです。

終わりの考え

Nginxが提供する驚くべき機能はたくさんあり、新しいユーザーはその純粋な機能に圧倒されることがよくあります。幸いなことに、いくつかの基本的なNginxコマンドしか知らなければ、大きな自信を得ることができます。だからこそ、私たちはこれらの素晴らしいコマンドをあなたに提示する自由を取りました。基本的なコマンドだけでなく、いくつかの高度で強力なコマンドラインのトリックについても説明しました。うまくいけば、これらのコマンドに慣れれば、Nginxスキルに対するより多くの権限を感じるようになります。以下のコメントセクションでご意見をお聞かせください。Linuxサーバーに関するその他のガイドについては、引き続きアクセスしてください。


Linux
  1. NGINXを使用してHTTP(S)、SSH、およびMySQL/MariaDBのリバースプロキシを実行するためのガイド

  2. ナビゲーションと編集のための25の重要なVimコマンド

  3. WindowsServer2016および2019でWindowsUpdateを確認する

  1. セキュリティとパフォーマンスのためのDNSのベストプラクティス

  2. Ubuntu14.04および16.04へのNginxのインストール

  3. 20OpenSSLコマンド知っておくべき例

  1. 知っておくべきNginxコマンド

  2. NginxWebサーバーを保護するためのヒントとコツ

  3. SemiCode OS:プログラマーとWeb開発者向けのLinuxディストリビューション