OCI Always Free Compute (Oracle Linux・CentOS 7) に nginx をインストールする
OCI の Always Free Compute に nginx をインストールして、外部から Public IP を指定してアクセスできるようにしてみる。
使用する Compute の OS は Oracle Linux 7 だが、Oracle Linux は RedHat Enterprise Linux ベースなので、CentOS 7 でも同様の設定で同じことが実現できるはずだ。
目次
- 環境確認と OCI コンソールでの作業
- nginx をインストールする
- nginx を起動する
firewall-cmd
で外部からのアクセスを許可する- nginx の設定はどこで行う?
- ついでに OCI Always Free Load Balancer も試してみた
環境確認と OCI コンソールでの作業
対象の VM の OS 情報は以下のとおり。
$ cat /etc/os-release
NAME="Oracle Linux Server"
VERSION="7.7"
ID="ol"
ID_LIKE="fedora"
VARIANT="Server"
VARIANT_ID="server"
VERSION_ID="7.7"
PRETTY_NAME="Oracle Linux Server 7.7"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:oracle:linux:7:7:server"
HOME_URL="https://linux.oracle.com/"
BUG_REPORT_URL="https://bugzilla.oracle.com/"
ORACLE_BUGZILLA_PRODUCT="Oracle Linux 7"
ORACLE_BUGZILLA_PRODUCT_VERSION=7.7
ORACLE_SUPPORT_PRODUCT="Oracle Linux"
ORACLE_SUPPORT_PRODUCT_VERSION=7.7
OCI コンソールにて、次の前提を満たすよう設定しておく。
- 対象の VM には Public IP が割り当ててある前提とする
- 対象の VM に適用する Security List にて、インターネット (
0.0.0.0/0
) から80番ポートへのアクセスを許可する Ingress Rule を設定しておく
nginx をインストールする
続いて nginx をインストールする。
# 事前に入れておく
$ yum install -y yum-utils
# Yum リポジトリファイルを作る
$ vi /etc/yum.repos.d/nginx.repo
内容は次のようにする。CentOS 用のリポジトリを使っている。
/etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# パッケージが参照できるようになったか確認する
$ yum info nginx
# インストールする
$ yum install -y nginx
$ nginx -v
nginx version: nginx/1.16.1
デフォルトでは Stable (安定版) がインストールされる。
nginx を起動する
# 起動する
$ systemctl start nginx
# 状態を確認する
$ systemctl status nginx
# 動作確認する
$ curl http://localhost:80/
「Welcome to nginx!」といった HTML が返ってくれば OK。
# OS 起動時に起動するようにする
$ systemctl enable nginx
# OS 起動時に起動するよう設定できたか確認する (enabled と返れば OK)
$ systemctl is-enabled nginx
firewall-cmd
で外部からのアクセスを許可する
ココまでの状態だと、firewalld によるファイアウォールが有効になっていて、外部から80番ポートへのアクセスはできないはずだ。そこで、次のコマンドを実行する。
# 次のコマンドで http (80ポート) へのアクセスを許可する
$ firewall-cmd --add-service=http --permanent
コレを実行すると、/etc/firewalld/zones/public.xml
というファイルに <service name="http"/>
という設定が追加されるはずだ。
# 設定を反映する
$ firewall-cmd --reload
コレで、Public IP を指定してインターネットからこのサーバへアクセスできるようになったはずだ。
# 以下の IP は例
$ curl http://141.255.255.255/
グローバル IP でアクセスして「Welcome to nginx!」のメッセージが確認できれば OK だ。
nginx の設定はどこで行う?
nginx の設定は次のディレクトリ配下のファイル群で行っている。
/etc/nginx/
配下の nginx.conf
や、conf.d/
配下のファイルたちが主な設定ファイルだ。
/etc/nginx/conf.d/default.conf
を見ると、80番ポートでサーバを用意し、index.html
を返すための設定が確認できる。
$ cat default.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# 以下略…
}
ログファイルの所在もこの辺の設定ファイルを見れば分かる。
- アクセスログ :
/var/log/nginx/access.log
- エラーログ :
/var/log/nginx/error.log
「Welcome to nginx!」と書かれた index.html
はどこにあるかというと、以下のディレクトリにある。
/usr/share/nginx/html/
ココが、Apache のデフォルトでいう /var/www/html/
ディレクトリに相当する。
ついでに OCI Always Free Load Balancer も試してみた
このように、nginx をインストールして80番ポートを開けた OCI Always Free Compute を2つ用意した。それぞれの Public IP でアクセスすると、別々のコンテンツが参照できる状態だ。
ココに OCI Always Free Load Balancer を作成し、この2つの Compute を Backend に設定してみると、無事ロードバランサが使えた。
今のところ用途が思い付かないが、何かロードバランシングしたくなったら使ってみる。