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 コンソールでの作業

対象の 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 コンソールにて、次の前提を満たすよう設定しておく。

nginx をインストールする

続いて nginx をインストールする。

# 事前に入れておく
$ yum install -y yum-utils

# Yum リポジトリファイルを作る
$ vi /etc/yum.repos.d/nginx.repo

内容は次のようにする。CentOS 用のリポジトリを使っている。

[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 の設定は次のディレクトリ配下のファイル群で行っている。

配下の 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;
    }
    
    # 以下略…
}

ログファイルの所在もこの辺の設定ファイルを見れば分かる。

「Welcome to nginx!」と書かれた index.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 に設定してみると、無事ロードバランサが使えた。

今のところ用途が思い付かないが、何かロードバランシングしたくなったら使ってみる。