1.インストール環境
RHEL 8.2 を使用しました。
nginx 自体は、感覚的になんなくうろ覚えで導入できますが、1年ぶりくらいにやると周辺コマンドや、firewall の部分など忘れがちになるのでメモ書きです。
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.2 (Ootpa)
#
2.hostname の設定
# ホスト名の設定
$ hostnamectl set-hostname myhost.example.com
# 設定の確認
$ hostnamectl status
3.nginx のインストール
$ yum install -y nginx
もしくは yum のフォーク版であり後継である dnf を使って
$ dnf install -y nginx
4.nginx の基本コマンド
systemctl で操作できます。
作業時のコピペ用に基本的なコマンドをリストしておきます。
# 起動
$ systemctl start nginx
# 停止
$ systemctl stop nginx
# 再起動
$ systemctl restart nginx
# 状況を確認
$ systemctl status nginx
# 自動起動を設定
$ systemctl enable nginx
# 自動起動を解除
$ systemctl disable nginx
# 自動起動設定確認
$ systemctl list-unit-files -t service | grep nginx
5.nginx の起動
yum でインストールしただけで、nginx はデフォルトページを使って起動できます。
# nginx の 起動
systemctl start nginx
これで後は、http://<ホスト名>/
にアクセスすれば稼働が確認出来ます。
# アクセスを確認
$ curl -s http://localhost | grep Welcome
Memo:
-s で、silent モードにして、HTTP response だけの出力にして転送情報等を出さないように
grep Welcome で、Welcome の HTMLソース部分だけを表示(動いている事を確認できればいいので)
ただし、デフォルトのRHELの設定では Firewallに阻まれて、サーバー外からはページを見る事はできないはずです。
6.Firewall のポート開け
RHELのデフォルトの設定では Firewalld が稼働していて nginx の使用する 80/443 も閉じているため Firewallのポートを空けてあげる必要があります。
6.1.現在の設定の確認
現在の設定を確認します。
RHEL8を入れたばかりの素の状態であれば、ここは読み飛ばして「http/httpsの穴を開ける」に飛んでも大丈夫です。
Firewallの設定は、NIC(Network Interface Card) 毎に「Zone」というグループを作って管理されています。
# NIC 毎に割り当てられている firewall の Zone を確認する。
$ firewall-cmd --get-active-zones
libvirt
interfaces: virbr0 # これはdefault で動いている仮想 NIC。今回は関係無い。
public
interfaces: ens192 # こちらが外に向かって生えている NIC. "public" という zone 名が割り当てられている事がわかる。
Memo:
NIC が2枚ある場合は、デフォルトでは両方とも public の zone に設定されていた。
とりあえず、設定が必要なのは「public」のゾーンであると記憶します。
次は「public」に設定されている「サービス」を確認します。
# public の firewall の service を確認する。
$ firewall-cmd --list-services --zone=public
cockpit dhcpv6-client ssh # 「cockpit」「dhcpv6-client」「ssh」3つのサービスが登録されている。
見た目から何となく HTTP/HTTPS が Firewalld のルールに登録されてない事が感じられます。
http と https というサービス(事前定義されている名前が存在しています)を追加します。
6.2.http / https の穴を開ける
Firewall に http と https の穴を開けます。
# http と https を Firewalld に追加する
$ firewall-cmd --add-service=http --zone=public
$ firewall-cmd --add-service=https --zone=public
Memo:
-zone を指定しない場合は、[firewall-cmd --get-default-zone]で返ってくる default の zone に設定される。
# 新しい設定を永続化させます。
$ firewall-cmd --runtime-to-permanent
success