1. 概要

Nginx は、オープンソースで無料の軽量で信頼性の高いWebサーバーです。 ロードバランサー、プロキシサーバー、さらにはメールプロキシとして使用するようにNginxを構成できます。

任意のサーバーで作業している間、いくつかの一般的な操作が実行されます。 これには、サーバーの起動、停止、および再起動が含まれます。

このチュートリアルでは、Nginxサーバー用のLinuxでこれらの操作を管理する手順について説明します。

先に進む前に、まずLinuxにNginxをインストールするさまざまな方法を見つけましょう。

2. Linuxのシステムマネージャを理解する

システムマネージャーは、Linuxの構成要素の1つです。 PID 1を使用して実行され、Linuxシステム全体を起動します。 systemd init、 upstart は、Linuxで最も広く使用されている3つのシステムマネージャーです。 システムマネージャは、サービスを作成することによって実行可能ファイルを実行および管理する機能を提供します。 ここでは、実行可能ファイルを、Linuxで実行できる一連の命令を含むファイルまたはバイナリとして定義します。

一般に、Linuxで実行可能ファイルを実行するには3つの方法があります。

まず、 systemd サービスマネージャーを使用して、 / lib /systemdディレクトリ内に存在するすべてのサービスを管理できます。 CentOS、Debian、Fedora、OpenSUSE、Redhat、およびUbuntuの最新バージョンでは、デフォルトでsystemdが有効になっています。

古いバージョンのUbuntu、CentOS、およびその他のLinuxディストリビューションでは、systemdが見つからない可能性があります。 別の方法として、従来のinitシステムがすべてのサービスを管理します。 init サービススクリプトは、/etc/init.dディレクトリ内にあります。

最後に、systemdまたはinitのいずれもマシンで使用できない場合、または存在しているがユーザーがアクセスできない場合があります。 プロセスとして起動することで、このようなデバイスでバイナリを実行できます。 このプロセスを自分で管理する必要があるため、これは単純なアプローチです。 システムの再起動時に、このプロセスを再起動する必要があります。

2.1. Linux上のSystemManagerを決定する

Linuxマシンに存在するシステムマネージャーを検出するには、次のコマンドを使用できます。

$ sudo ls -l /proc/1/exe
lrwxrwxrwx. 1 root root 0 Apr  8 11:10 /proc/1/exe -> /usr/lib/systemd/systemd

ここでは、Linuxマシン上の最初の実行可能ファイルのシンボリックリンクを確認します。 この場合、 systemdにリンクされています。initシステムの場合、次のような出力が得られます。

$ sudo ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Apr  8 11:17 /proc/1/exe -> /sbin/init

これまで、Linuxで実行可能ファイルを実行する方法を学びました。 次に、各環境でNginxサーバーを具体的に管理する方法を学びましょう。

3. systemdサービスとして実行されているNginx

まず、systemctlによって管理されているNginxサービスがあるかどうかを調べましょう。

$ sudo ls -lah /lib/systemd/system/nginx.service
-rw-r--r--. 1 root root 616 Oct  7  2019 /lib/systemd/system/nginx.service

ここでは、 ls コマンドを使用して、 / lib / systemd /systemディレクトリ内のnginx.serviceファイルを探しました。 Nginxサービスが利用できない場合は、次のような出力が得られます。

$ sudo ls /lib/systemd/system/nginx.service
ls: cannot access '/lib/systemd/system/nginx.service': No such file or directory

次のコマンドを使用してNginxサービスを開始できます。

$ sudo systemctl start nginx

systemctl コマンドを使用して、Nginxサーバーのステータスを取得しましょう。

$ sudo systemctl status nginx

サーバーが実行中の場合、出力に「アクティブ(実行中)」のステータスが表示されます。 何らかの理由でサーバーを起動できなかった場合、出力にはエラーが含まれます。 また、にアクセスすることができます サーバーが稼働していることを確認します。

Nginxサーバーの停止は、起動するのと同じくらい簡単です。

$ sudo systemctl stop nginx

ここでステータスを確認すると、「非アクティブ(デッド)」とマークされます。

構成が変更された場合は、サーバーを再起動することもできます。

$ sudo systemctl restart nginx

Systemctl は、 reload isolate kill などの他のコマンドをサポートして、サービスをより詳細に制御します。 systemctl –help コマンドを実行すると、完全なリストを取得できます。

4. SysVinitサービスとして実行されているNginx

これまで、systemctlを使用してNginxサービスを管理する方法を学びました。 initサービスを使用して同じ操作を実行してみましょう。 その前に、Nginxサービスがマシンに存在するかどうかを確認しましょう。

$ sudo ls -lah /etc/init.d/nginx
-rwxr-xr-x. 1 root root 4.2K Apr 13  2021 /etc/init.d/nginx

出力は、Nginxのサービスファイルが存在することを明確に示しています。 このサービスファイルは、bashスクリプトに他なりません。 init サービスを使用してNginxサーバーを起動するには、次のようにstartオプションを使用します。

$ sudo /etc/init.d/nginx start

Nginxサーバーのステータスを確認しましょう。

$ /etc/init.d/nginx status
[ ok ] nginx is running.

restart オプションを渡すことで、Nginxサーバーを再起動することもできます。 古いNginxプロセスをすべて削除し、構成ファイルをリロードして、新しいNginxプロセスを起動します。

$ sudo /etc/init.d/nginx restart

Nginxサービスを管理するための他のオプションがたくさんあります。 -hオプションを使用して使用法を取得できます。

$ sudo /etc/init.d/nginx -h
Usage: /etc/init.d/nginx {start|stop|status|restart|reload|force-reload|upgrade|configtest|check-reload}

5. プロセスとして実行されているNginx

systemdinitはどちらもLinuxのサービスマネージャーです。 したがって、実行中のプロセスを管理するためのプロセスが容易になります。 ただし、サービスマネージャーを使用せずに、プロセスとしてNginxサーバーを直接実行することもできます。 サービスマネージャーのいずれかを使用してNginxを実行すると、サービススクリプトを使用してNginxプロセスが暗黙的に実行されることに注意してください。

Nginxをプロセスとして実行するには、最初にNginxのインストールパスを見つける必要があります。

$ sudo which nginx
/usr/sbin/nginx

which は、実行可能ファイルのフルパスを返すLinuxユーティリティであり、引数として渡します。 ここで、Nginx実行可能ファイルは / usr / sbin /nginxにあります。

この実行可能ファイルを実行すると、Nginxサーバーが起動します。

$ sudo /usr/sbin/nginx

systemdまたはinitサービスファイルを表示すると、同じ実行可能ファイル/ usr / sbin/nginxが両方のサービスからトリガーされていることがわかります。サービスマネージャーは追加の抽象化レイヤーを提供しますプロセスを処理します。

ここで、Nginxプロセスを停止するために、killallコマンドを使用します。

$ sudo killall nginx

killall は、プロセスを名前で強制終了するLinuxコマンドです。 上記のコマンドは、マシンからすべてのNginxプロセスを削除します。

最後に、プロセスを再起動することは、既存のすべてのプロセスを強制終了して再実行することに他なりません。

6. 結論

このチュートリアルでは、LinuxでNginxサーバーを起動、停止、再起動する方法を学びました。

Linuxで実行可能ファイルを実行するには、 systemd init、を使用する方法と、プロセスとして実行する方法の3つがあります。