LoginSignup
2
2

More than 3 years have passed since last update.

Nginxをもっと理解してみよう 起動編

Posted at

はじめに

先日からNginxについて理解できていなかった部分を整理してます。
次のリンクにインストールまでの手順をUbuntuそれぞれで記載してますので、そちらも読んでいただけると嬉しいです。
今回は次の記事の続編ですね

Nginxをもっと理解してみよう インストール編

注意事項

本記事ではDockerコンテナ上にNginxをインストールした後の設定をみていきますので、実際に手を動かして確認される方は上のリンクを参考にNginxのインストールまでを行ってからにしてください。

初期ページを表示してみよう

設定ファイルの記述はOSに依存しないので、今回はUbuntuのイメージ内での作業のみを記載します。
時間があれば、他のOSイメージ上でも確認してみますね。

Nginxの起動(失敗)
Terminal
# systemctlをインストール
# DockerコンテナでなければUbuntuにsystemdもsystemctlもインストールする必要ないんだけどなぁ。
$ apt install -y systemd
$ apt install -y systemctl

# Nginxの起動状態を確認
$ systemctl status nginx
nginx.service - A ...
    Loaded: loaded ....
    Active: inactive (dead)

# 上で(dead)と表示されているので、起動していませんね。
# Nginxを起動
$ systemctl start nginx

# もう一度起動状態を確認
$ systemctl status nginx
nginx.service - A ...
    Loaded: loaded ....
    Active: inactive (dead)

はい、早速起動しませんね。
では、エラーメッセージを確認してみましょう。

エラーメッセージの確認

Terminal
# エラーメッセージの表示
$ cat /var/log/nginx/error.log
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to [::]:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to [::]:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to [::]:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to [::]:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to 0.0.0.0:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: bind() to [::]:80 failed (98: Address already in use)
2021/02/02 15:45:40 [emerg] 4682#4682: still could not bind()

アドレスが既に使われていると言われていますが、これはポート番号が既に使われているってことなんですよね

エラーの対応

Terminal
# ポートを確認するためにlsofをインストール
$ apt install -y lsof

# lsofコマンドで80番ポートを開いているプロセスを確認
$ lsof -i:80
COMMAND  PID     USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
nginx   4411     root    6u  IPv4 1700893      0t0  TCP *:80 (LISTEN)
nginx   4411     root    7u  IPv6 1700894      0t0  TCP *:80 (LISTEN)
nginx   4412 www-data    6u  IPv4 1700893      0t0  TCP *:80 (LISTEN)
nginx   4412 www-data    7u  IPv6 1700894      0t0  TCP *:80 (LISTEN)
nginx   4413 www-data    6u  IPv4 1700893      0t0  TCP *:80 (LISTEN)
nginx   4413 www-data    7u  IPv6 1700894      0t0  TCP *:80 (LISTEN)
nginx   4414 www-data    6u  IPv4 1700893      0t0  TCP *:80 (LISTEN)
nginx   4414 www-data    7u  IPv6 1700894      0t0  TCP *:80 (LISTEN)
nginx   4415 www-data    6u  IPv4 1700893      0t0  TCP *:80 (LISTEN)
nginx   4415 www-data    7u  IPv6 1700894      0t0  TCP *:80 (LISTEN)

# どういうわけか、nginxが起動しているように見えます。
# 一旦、すべてのプロセスを落とします。
$ kill 4411

# nginxを起動
$ systemctl start nginx

# nginxの状態を確認
$ systemctl status nginx
nginx.service - A high performance web server and a reverse proxy server
    Loaded: loaded (/usr/lib/systemd/system/nginx.service, enabled)
    Active: active (running)

これでnginxの起動までは確認することができました。
ブラウザからページにアクセスしてみます。

スクリーンショット 2021-02-02 16.37.41.png

これで起動までは確認することができました。

次回から設定編を行っていきます。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2