Open2

Linuxにnginxをインストールする

aym613aym613

CentOS Stream 9 で構築した仮想環境上にWebサーバ(nginx)を構築する
dnf コマンドは、CentOS などの Linux 系 OS のためのパッケージ管理コマンド

$ sudo dnf install -y nginx

インストール完了後にバージョンを確認する

$ nginx -v
nginx version: nginx/1.20.1

バージョンが出力されたらインストール完了!

nginx を起動する

$ sudo systemctl start nginx

ステータス確認

$ sudo systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
     Active: active (running) since Thu 2022-06-16 13:00:42 UTC; 8s ago
    Process: 30008 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
    Process: 30009 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
    Process: 30010 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
   Main PID: 30011 (nginx)
      Tasks: 3 (limit: 11091)
     Memory: 2.8M
        CPU: 19ms
     CGroup: /system.slice/nginx.service
             ├─30011 "nginx: master process /usr/sbin/nginx"
             ├─30012 "nginx: worker process"
             └─30013 "nginx: worker process"

Active: active (running)

ブラウザから接続し、nginxのウェルカムページを表示する
http://192.168.56.12

仮想マシン起動時に自動的に nginx が起動するように設定

$ sudo systemctl enable nginx
aym613aym613

ブラウザからウェルカムページに接続できない・・・

問題を切り分けていく

nginxは起動してるか?

さっき確認したばかりだけどプロセスを確認
→起動してる

$ ps ax | grep nginx
  30011 ?        Ss     0:00 nginx: master process /usr/sbin/nginx
  30012 ?        S      0:00 nginx: worker process
  30013 ?        S      0:00 nginx: worker process

設定にもよりますが、masater process と worker process があれば OK
worker process の数は環境によって異なるものの、複数存在していても問題なし

nginxが利用するポートは?

ポート番号「80」が使える状態か確認する
→ある

$ netstat -nat | grep LISTEN | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp6       0      0 :::80                   :::*                    LISTEN

Webサーバ上から接続できるか?

curlで確認する
→いける

$ curl -I http://192.168.56.12
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Thu, 16 Jun 2022 13:21:08 GMT
Content-Type: text/html
Content-Length: 456389
Last-Modified: Sat, 03 Jul 2021 13:48:21 GMT
Connection: keep-alive
ETag: "60e06aa5-6f6c5"
Accept-Ranges: bytes

てことはサーバ側のファイアーウォール?

ファイアーウォールの状態を確認する
→起動してる、、許可してないので確かに無理ですね

$ systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-06-16 12:36:05 UTC; 46min ago
       Docs: man:firewalld(1)
   Main PID: 739 (firewalld)
      Tasks: 2 (limit: 11091)
     Memory: 39.0M
        CPU: 514ms
     CGroup: /system.slice/firewalld.service
             └─739 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

→原因特定!ブラウザから接続できた

ファイアーウォールの細かな設定については今後の課題

小さな発見

ブラウザからではなくローカルPC(Windows)のコマンドプロンプトからの接続確認したいなと
コマンド探したらWindowsでも curl コマンド使えることが分かって発見だった