0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

300円/月でEC2のサーバを立てる

Posted at

#はじめに
 趣味でEC2のサーバを低コストで立てる場合、無料枠を使うのが一般的だと思います。しかしながら、12か月の期間縛りがあります。実際に、立ててしばらく使っているうちに興味が失せて、放置したまま1年たってしまい、AWSから請求があって、今更使っていないしもったいないからインスタンス削除 ということを2回繰り返してしまいました。
 3回目にも同じことしてはならないと思っていたところ、t4gインスタンスが発表され、なんと価格は、ムンバイで0.0028 USD(t4g.nano)ではありませんか。これなら、ストレージの金額合わせても月に300円程度なので、まったく使わくなっても許せると思い、さっそく立ててみました。
 立て方は、通常のインスタンスと変わりませんが、t4gはarmのコアなのでソフトのインストールは少し注意が必要です。

#EC2インスタンスを立てる
EC2インスタンスを立てる方法は、いろいろなところで紹介されているので、ここでは詳細は割愛します。
https://dev.classmethod.jp/articles/creation_vpc_ec2_for_beginner_2/
などが参考になると思います。
インスタンス作成のポイントは以下となります。
‐ アジアパシフィック (ムンバイ) リージョン を選択する

  • マシンイメージでArmのものを選択する
  • クレジットの消費タイプをStandard Mode(スタンダードモード)にする
    ###アジアパシフィック (ムンバイ) リージョン を選択する
    コスト下げるのが目的なので、作業始める前に、ムンバイリージョンを選択してください(東京リージョンだと倍くらいの価格になります)。これ忘れると作業最初からやり直しになります。
    ###マシンイメージでArmのものを選択する
    マシンイメージで、Armのものを選択する必要があります。Amazon Linuxなら右のほうにラジオボタンがあるので、そちらを選びます。
    マシンイメージの選択.PNG
    これでインスタンスタイプとして、t4g.nano が選択できるようになります。

###クレジットの消費タイプをStandard Mode(スタンダードモード)にする
 t4g.nanoはクレジットタイプがデフォルトで無制限になっています。このままだとCPU使いすぎると課金が増えてしまいます(趣味で使っていて超えることは普通ないと思いますが、事故もありうるので)。以下のように、ステップ3:インスタンスの詳細の設定で、クレジット仕様の無制限チェックボックスを未選択にします。無制限でなくす.PNG

あとは普通に起動すれば、ムンバイにt4g.nanoインスタンスが起動します。
1か月使った料金はこんな感じです。内訳はEC2 が$2でEBSが$1くらいです。
6月の金額.PNG

以下は、nginxとPostgreSQLを(ほぼ空で)起動した状態のtopコマンドになります。メモリが0.5Gしかないですが、これくらいの用途ならまだまだ余裕ですね。
top.PNG

#ソフトのインストール
 Armのインスタンスで考慮しなければならないのが、ソフトのインストールです。公式サイトには、バイナリがないことも多いです。その場合、以下の方法があります。

  • amazon-linux-extras コマンドを使う
  • ソースからビルドを行う
    amazon-linux-extrasの方が楽なので、こちらでインストールできるものはこちらで行い、そうでないものはソースからビルドすることになると思います。

###amazon-linux-extras コマンドを使う
 2021年7月4日現在、amazon-linux-extrasでは以下が利用できるようです。

[ec2-user@***]$ amazon-linux-extras
  0  ansible2                 available    [ =2.4.6  =2.8  =stable ]
  1  httpd_modules            available    [ =1.0  =stable ]
  2  memcached1.5             available    \
        [ =1.5.1  =1.5.16  =1.5.17 ]
  4  postgresql9.6            available    [ =9.6.8  =stable ]
  5  postgresql10             available    [ =10  =stable ]
  7  R3.4                     available    [ =3.4.3  =stable ]
  8  rust1                    available    [ =stable ]
 11  php7.2                   available    \
        [ =7.2.13  =7.2.14  =7.2.16  =7.2.17  =7.2.19  =7.2.21
          =7.2.22  =7.2.23  =7.2.24  =7.2.26  =stable ]
 13  lamp-mariadb10.2-php7.2  available    \
        [ =10.2.10_7.2.11  =10.2.10_7.2.14  =10.2.10_7.2.16
          =10.2.10_7.2.17  =10.2.10_7.2.19  =10.2.10_7.2.22
          =10.2.10_7.2.23  =10.2.10_7.2.24  =stable ]
 14  libreoffice              available    [ =5.3.6.1  =stable ]
 16  docker=latest            enabled      \
        [ =18.06.1  =18.09.9  =stable ]
 17  mate-desktop1.x          available    [ =stable ]
 18  GraphicsMagick1.3        available    \
        [ =1.3.29  =1.3.32  =1.3.34  =stable ]
 19  tomcat8.5                available    \
        [ =8.5.32  =8.5.38  =8.5.40  =8.5.42  =8.5.50  =stable ]
 20  epel                     available    [ =7.11  =stable ]
 21  testing                  available    [ =1.0  =stable ]
 22  ecs                      available    [ =stable ]
 23  corretto8                available    \
        [ =1.8.0_202  =1.8.0_212  =1.8.0_222  =1.8.0_232  =1.8.0_242
          =stable ]
 24  golang1.11               available    \
        [ =1.11.3  =1.11.11  =1.11.13  =stable ]
 25  squid4                   available    [ =4  =stable ]
 26  php7.3                   available    \
        [ =7.3.2  =7.3.3  =7.3.4  =7.3.6  =7.3.8  =7.3.9  =7.3.10
          =7.3.11  =7.3.13  =stable ]
 27  java-openjdk11           available    [ =11  =stable ]
 28  lynis                    available    [ =stable ]
 29  kernel-ng                available    [ =stable ]
 30  BCC                      available    [ =0.x  =stable ]
 31  nginx1=latest            enabled      [ =stable ]
 32  ruby2.6                  available    [ =2.6  =stable ]
 33  mock                     available    [ =stable ]
 34  postgresql11             available    [ =11  =stable ]
 35  php7.4                   available    [ =stable ]
 36  python3.8                available    [ =stable ]
 37  lustre2.10               available    [ =stable ]
 38  haproxy2                 available    [ =stable ]
 39  collectd                 available    [ =stable ]
 40  R4                       available    [ =stable ]
 41  kernel-5.4               available    [ =stable ]
 42  selinux-ng               available    [ =stable ]
 43  php8.0                   available    [ =stable ]
 44  tomcat9                  available    [ =stable ]
 45  unbound1.13              available    [ =stable ]
 46  mariadb10.5              available    [ =stable ]
 47  kernel-5.10              available    [ =stable ]
 48  redis6                   available    [ =stable ]
 49  ruby3.0                  available    [ =stable ]
 50  postgresql12             available    [ =stable ]
 51  postgresql13             available    [ =stable ]
 52  mock2                    available    [ =stable ]

nginxは31にあるので、

$sudo amazon-linux-extras enable nginx1
$yum clean metadata
$yum install nginx

でインストールできます。また、PostgreSQLも同様にインストールしました。
PostgreSQLインストールは、下記を参考にしました。
https://www.pedroalonso.net/blog/hosting-postgresql-on-a-t4g-graviton2-arm-instance-on-aws-ec2

###ソースからビルドを行う
公式にもamazon-linux-extrasにもない場合、ソースからインストールすることになります。試しに、nginxを、以下を参考にインストールしてみたところ、比較的簡単にインストールできました。
https://blog.k-san.info/nginx-on-centos-on-raspberrypi

raspberry piへのインストール手順が参考になることが多いと思います

#最後に
このインスタンスを使って、Angularで作ったサービスを2か月ほど運用していますが、目立った問題は出ていません。メモリ0.5GBというと今ではすごく貧弱なサーバに思えてしまいますが、20年前なら、これくらいでも結構大規模なWebアプリケーションを運用していたスペックだと思います。個人でなら十分遊べるスペックと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?