OCIのVCNを構築

# やりたい事→サーバの移行
現在、私は有料のホスティングサーバを使っていくつかのWebアプリを動かしています。

●猫の管理
　投薬記録や病院の記録
●燃費管理
　車を購入してからの燃費
　GSで給油中にスマホで記録する用
●飛行機の予約管理
　予約の本数が多くてわからなくなるのでスマホで確認できるように
●某試験問題練習
　5～6年前に某試験を受けた時の勉強用にランダムに問題が出されて回答・採点ができるように。
　　→自分用に適当に作っていたらGoogleの検索に載っていていつの間にか結構なアクセス数に…

などなど、他にも古いアプリがいくつかあったかも知れません。

全てcgiで動かしています。
ホスティングは申し込み時にキャッシュバックキャンペーンをやっていて3年契約すると1か月あたり120円程度になったので使っていましたが、更新ではキャンペーンが無く、月々1000円弱になってしまうのでAlways Free環境の方がいいかな・・・と。
更に、今回移行を強く検討させられたのは先月、PERLのバージョンを勝手に上げられた結果、cgiが正常に動かなくなり、外出中に使いたい時に使えないという事態になり、修正にもそこそこ時間がかかりました。
OSから管理できればこのような事態は起こらないので移行したいと積極的に考えるようになりました。

DNSの付け替えとかも必要でそこそこ時間がかかりそうなのでまずは1つだけ試しに移行してみたいと思います。

# まずはネットワーク作成
クラウド・コンピューティングにおいて真っ先に作成しなくていはいけないのはネットワークです。
クラウドの場合、全てネットワーク経由での操作になるため、そのネットワークが無いと何もできないのです。

まず、VCN（バーチャル・クラウド・ネットワーク）ネットワークの大元を作成する必要があり、その中にサブネットを作成します。
基本的にサーバは全てサブネットの中に入れる事になります。
![vcn-subnet.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/3413da3d-b72c-61b6-5390-dc90686d95e9.jpeg)
VCNにインターネットとの“出入口”を作ってあげる事でサーバをインターネットと接続する事ができます。

では、順番に作って行きましょう。

## VCNの作成
OCIコンソールの左上の三本線を押下するとメニュが展開されます。
![m1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/a8a16b5b-368a-6ca5-8d1e-7811a2247554.jpeg)
この中の「ネットワーキング」を選択すると右側にネットワーキング関連の一覧が出ますのでその中から「仮想クラウドネットワーク」を選択します。
![m2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/515f30c1-c00f-08af-83e0-dec80ad7ff19.jpeg)
開いた仮想クラウドネットワークのページにはこのコンパートメント（※ここでは説明を省きますがアカウントのようなもの）に作成されているVCNの一覧が表示されます。
今は一つも無いので「VCNの作成」ボタンを押下します。
![m3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/c8cd60c8-c74a-c120-0c27-fc12738fcbf8.jpeg)
仮想クラウドネットワークの作成画面になりますので各項目に入力していきます。
| 項目 | 値 |
|:-----------|:------------|
| 名前       | VCNの名前。なんでも大丈夫なのでここではVCN01にしてあります。 |
| コンパートメント| 作成するコンパートメントを選べます。わからない場合はデフォルトのままでOKです。 |
| IPv4 CIDR Blocks| VCNで使うIPアドレスの範囲をCIDR形式で書きます。 |

OCIで利用できるIPアドレスはかなり幅が広く、下記リンクに書かれていますがオクテットが/16～/30と決まっています。

[許容されるVCNのサイズとアドレス範囲](https://docs.oracle.com/ja-jp/iaas/Content/Network/Concepts/overview.htm#Allowed)

従って/16というアドレスはOCIで作れる最大の大きさのネットワークになります。
上記リンクに記載されている通り「10.0/16、172.16/16および192.168/16」のどれかで作成するのを推奨しており、今回は一番最初の10.0.0.0/16にしました。
入力が終わりましたら「VCNの作成」ボタンを押下するとVCNの作成が実行されます。
![m4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/a56ad27b-6ce7-8d99-19be-3bed1f4d6ca2.jpeg)
VCNが作成されました。
![m5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/49d63edf-9678-eafc-a972-93ffc4358036.jpeg)
下図の赤の部分を作成した事になります。
![vcn-subnet2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/3ed6fc62-a9a1-c919-5947-2666652cf72c.jpeg)

## インターネット・ゲートウェイの作成
先ほど、**「インターネットとの“出入口”を作ってあげる事でサーバをインターネットと接続する事ができます」**と書きましたが、この出入口をインターネット・ゲートウェイと言います。
今作成したVCNに出入口であるインターネット・ゲートウェイを作成したいと思います。

左側のリソースメニューの中からインターネット・ゲートウェイを選択します。
![m6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/2773a10a-9fa6-9e10-dcaa-ed7837ecba63.jpeg)
インターネット・ゲートウェイのページが開くので「インターネット・ゲートウェイの作成」を選択します。
![m7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/94b0902e-ba41-db1f-0f5f-41bffef82486.jpeg)
各項目に値を入力し、「インターネット・ゲートウェイの作成」ボタンを押下します。
| 項目 | 値 |
|:-----------|:------------|
| 名前       | ゲートウェイの名前。なんでも大丈夫。 |
| コンパートメント| VCNを作成したコンパートメント（たぶんデフォルト） |

![m8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/1aa17506-7d17-48a7-5e73-29e38ba0ba1c.jpeg)

これでインターネットとの出入口が出来上がりました。

## ルート表の作成
実は出入口を作っただけでは使えないのです。
ゲートウェイは他にもダイナミック・ルーティング・ゲートウェイやサービス・ゲートウェイ等何種類かあり、VCN内から接続リクエストがあった時にどのゲートウェイに行ってもらうか指定する必要があります。
これが**ルート表**になります。
ルート表はVCN作成時にデフォルトで作成されていますが、中には何も定義されていないため、定義します。

VCNのリソースメニュー（左側のメニュー）からルート表を選択します。
![m9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/80743c28-0dc7-de69-4425-85b7645c8af0.jpeg)
**Default Route Table for vcn01**というのがあるので選択します。
![ma.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/63df03bb-9f3b-70dc-4a7a-4e25e4f94a93.jpeg)
「ルート・ルールの追加」ボタンを押下します。
![mb.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/1aec3ec7-041c-4dcb-5e99-a7bd1ad5cb49.jpeg)
各項目に値を入力し、最後に下の方にある「ルート・ルールの追加」ボタンを押下します。
| 項目 | 値 |
|:-----------|:------------|
| ターゲット・タイプ      | インターネット・ゲートウェイを選択 |
| 宛先CIDRブロック| 0.0.0.0/0 (すべてのリクエストが対象) |
|ターゲット・インターネット・ゲートウェイ| 先ほど作成したインターネット・ゲートウェイの名前 |

![mc.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/9c720959-bc0b-0120-ec5c-f964d5a85d2d.jpeg)
以上で、サーバからの接続要求は全てインターネット・ゲートウェイに飛ばされる設定になりました。

## サブネットの作成
基本的にサーバはサブネットに入りますが、サブネットには「パブリック」と「プライベート」の2種類あります。
プライベートにした場合、インターネット・ゲートウェイとつなげる事ができない為、インターネットからのアクセスが必要な場合は「パブリック」にする必要があります。

では作成してきましょう。
VCNのリソースメニューの中から「サブネット」を選択し、右側のサブネットのメニューから「サブネットの作成」を選択します。
![s1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/59a28ef0-7931-c591-1cc5-a3beded1f028.jpeg)
各項目に入力し、最後に一番下の「サブネットの作成」を押下します。
| 項目 | 値 |
|:-----------|:------------|
| 名前   | 何でも良い。デフォルトのままでもOK。 |
| コンパートメント| VCNを作成したコンパートメント（デフォルト） |
|IPv4 CIDR Block | 10.0/16配下で作成できるブロック。ここでは10.0.5.0/24としました。|
|ルート表 |先ほど設定してデフォルトのルート表 |
|サブネット・アクセス |パブリック |

![s2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/4a995504-491e-fead-52e5-9a342a1260df.jpeg)
これでサブネットが作成されました。
最初の図で表すと、赤い線の部分を作成した事になります。
![vcn-subnet3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2367692/c9db610d-6e45-808f-8c02-b1b9d3a48c74.jpeg)

これでサーバを作成するためのネットワーク周りの作成が完了しました。

次回は、実際にサーバ・インスタンスを作成していきます。