EC2でCentOSを使う

記事タイトルとURLをコピーする
 みんな大好きCentOSをEC2で使ってみます。
 Amazon Linuxでおおよそのことは足りるのですが、たまにお客様のご指定やらでCentOSを使う機会があります。
 少し前までは親切などこかの誰かが作ってくれたAMIやAMIの自作を試みるしかなかったのですが、今はオフィシャルなAMIが用意されていますので、これを使ってみることにしました。
 EC2インスタンスを立てたことがある人でしたら、すぐできます。
 罠っぽい箇所がいくつかありますので、後から続く人のために罠ポイントを記しておきます。参考になれば幸いです。     5分程度で読める文量です。「続きを読む」リンクをクリックしてぜひ読んでみてください。   

とりあえずEC2インスタンスを作る

 

※セキュリティグループやキーペアなど、なければあらかじめ作っておくことをおすすめします。

 

AWS Management ConsoleでEC2インスタンスを作るいつもの手順で、
AWS Marketplaceで「CentOS」を検索します。
EC2 CentOS 01

 

CentOS6.3 x86_64のAMIを検索し、選択します。
EC2 CentOS 02

 

CentOSの利用料そのものは無料に感謝しつつ、続けます。
EC2 CentOS 03

 

インスタンスタイプ(グレード)やセキュリティグループ、キーペアなど
EC2インスタンスを作るのに必要な項目を選択してインスタンスを作ります。
(ここでセキュリティグループやキーペアなどが必要になります)
EC2 CentOS 04

 

がんばってインスタンスを作ってくれます。
EC2 CentOS 05

 

インスタンスができました。AWS Management Consoleを見るとちゃんとできてます。
EC2 CentOS 06

 

CentOSを俺色に染める

 

 このまま使っても良いのですが、必要都度ごとにAWS Marketplaceから作るのも面倒なので、俺色に染めたCentOSを作ります。
 インスタンスを停止してAMIを作ります。停止しなくてもAMIは作れますが、停止するほうが確実なAMIを作ることができます。(AMIを作ったら不要になるインスタンスなので止めてしまいます)
 AMIを作ったら、このAMIからインスタンスを作ります。

 

お好みのAZもしくはVPCに、 お好みのグレードで作ります。(ここではm1.small)
EC2 CentOS 07

 

rootボリュームのディスクサイズもお好みで。
EC2 CentOS 08

 

swap領域にするためのエフェメラルストレージを割り当てておきます。
EC2 CentOS 09

m1.smallの場合、エフェメラルストレージは1つ(0番)で150GBを割り当てできます。
インスタンスタイプで割り当てられる数や容量が異なります。詳しくはお調べください。

 

インスタンスができたら、sshでログインします。
Amazon Linuxでは「ec2-user」ですが、CentOSでは「root」です。罠っぽいポイント
$ ssh -i ./(鍵ファイル) root@(インスタンス名)

 

増やしたボリュームを使えるようにします。
[root@ip-10-132-133-227 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde             7.9G  621M  6.9G   9% /
tmpfs                 828M     0  828M   0% /dev/shm

[root@ip-10-132-133-227 ~]# resize2fs /dev/xvde
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/xvde is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/xvde to 5242880 (4k) blocks.
The filesystem on /dev/xvde is now 5242880 blocks long.

[root@ip-10-132-133-227 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde              20G  625M   19G   4% /
tmpfs                 828M     0  828M   0% /dev/shm

 

エフェメラルストレージをswap領域にします。
[root@ip-10-132-133-227 ~]# free
             total       used       free     shared    buffers     cached
Mem:       1695376     139208    1556168          0       9872      40972
-/+ buffers/cache:      88364    1607012
Swap:            0          0          0

[root@ip-10-132-133-227 ~]# mkswap -c /dev/xvdf
mkswap: /dev/xvdf: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 156352508 KiB
no label, UUID=646f6ff5-d08d-4330-9eb3-72b9381dfe17

[root@ip-10-132-133-227 ~]# mkswap -f /dev/xvdf
Setting up swapspace version 1, size = 156352508 KiB
no label, UUID=d5ee486a-34e4-46eb-aa94-1ead1de3d907

[root@ip-10-132-133-227 ~]# swapon /dev/xvdf

[root@ip-10-132-133-227 ~]# free
             total       used       free     shared    buffers     cached
Mem:       1695376     219524    1475852          0       4260      12424
-/+ buffers/cache:     202840    1492536
Swap:    156352504          0  156352504

[root@ip-10-132-133-227 ~]# vi /etc/fstab
/dev/xvde       /        ext4      defaults         0 0
devpts     /dev/pts  devpts  gid=5,mode=620   0 0
tmpfs      /dev/shm  tmpfs   defaults         0 0
proc       /proc     proc    defaults         0 0
sysfs      /sys      sysfs   defaults         0 0
/dev/xvdf  swap      swap    defaults         0 0  ←追加

 

タイムゾーンを日本にします。(お好みで)
[root@ip-10-132-133-227 ~]# date
2013年  2月 20日 水曜日 13:54:01 UTC

[root@ip-10-132-133-227 ~]# cp -p /usr/share/zoneinfo/Japan /etc/localtime
cp: overwrite `/etc/localtime'? y

[root@ip-10-132-133-227 ~]# date
2013年  2月 20日 水曜日 22:56:04 JST

 

SELinuxが有効になっているので、謝りながら無効にします。ごめんなさい。(お好みで)罠っぽいポイント
[root@ip-10-132-133-227 ~]# getenforce
Enforcing

[root@ip-10-132-133-227 ~]# setenforce 0

[root@ip-10-132-133-227 ~]# getenforce
Permissive

[root@ip-10-132-133-227 ~]# vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled  ←「disabled」に変更
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

 

iptablesが動いています。
セキュリティグループでフィルタリングを行うなら二重設定になってしまい、忘れた頃に思わぬ罠になるので止めてしまいます。(お好みで)罠っぽいポイント
[root@ip-10-132-133-227 ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination [root@ip-10-132-133-227 ~]# /etc/rc.d/init.d/iptables stop iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] [root@ip-10-132-133-227 ~]# chkconfig iptables off [root@ip-10-132-133-227 ~]# chkconfig --list iptables iptables 0:off 1:off 2:off 3:off 4:off 5:off 6:off

 

ひととおり調整したとなりましたら、AMIを作っておきましょう。俺色に染めたCentOSができました。
gccなど開発ツールが導入されていないので「yum groupinstall "Development Tools"」を実行し導入しておくのもよいでしょう。

 

まとめ

 

  • インスタンスを立てるだけならAmazon Linuxとさして違いはありませんでした。
  • オフィシャルがAMIを提供しているというのはやはり強みです。お客様は産地にこだわりをお持ちです。
  • どうやるのかをとりあえずググったところ、こちらのブログ CentOS公式AMIの起動とServerProtectのインストール を見つけて、とても参考になりました。と、いう『青い鳥』みたいなまさかの展開に。
  • インスタンスを立てた後、バージョン指定で各パッケージをインストールする作業があり、RPMの依存性にだいぶ苦しめられるのですが、それはまた別のお話。