水曜恒例な新宿鮫でもくもく。
今回は第7回目 (http://shinjukuzame.doorkeeper.jp/events/4089)
AWS勉強会 #shinjukuzame 到着! 今日はCDP本の内容をもくもく予定。 (@ L15(新宿西口コワーキングスペース)) [pic]: http://t.co/qJjzKbw27S
— Eiji Shinohara @ アルゴリア 🗾 (@shinodogg) May 29, 2013
今回は先日、横浜のAWS勉強会でCDP本をいただいたので、その内容に沿ってやっていきます。
最初の方からパラパラめくっていって、”おっ”と思ったDirect Hostingパターンをやってみようと思います。
■ 今回やろうと思っていること
Direct Hostingパターンの例としてCDP本に書かれている
以下を試そうということで、EC2インスタンスとS3バケットを用意します。
・EC2インスタンスからS3バケットをマウント
・Ec2インスタンスにApacheと立ててMovable Typeを入れる
・MovableTypeで生成した静的ファイルは全てマウントしたS3へ
・S3はドメインを立ててエンドユーザーは参照系は全てS3のドメインに
・コメントや検索といった動的な仕掛けが必要なところはEC2上のApacheのドメインに
■ S3バケットの準備
CDP本の108ページから詳細に載っているのでソレに沿って。
S3のバケットを作って、アクセス権の設定をします。
JSON形式での設定はジェネレータがあるのでソレを使って。
静的ファイルをアップロードして画面が見れることを確認。
■ EC2インスタンスにApacheとMovableTypeをインストール
CDP本のAppendix Aに沿って。
t1.microで何かとデフォルトでグワっとインスタンス立てて、、
perlのバージョン確認。何か言ってるけど5.10.1が入ってる。
[ec2-user@ip-10-132-18-46 ~]$ perl -v perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LC_CTYPE = "UTF-8", LANG = "en_US.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi Copyright 1987-2009, Larry Wall
MySQLサーバーのインストール
ec2-user@ip-10-132-18-46 ~]$ sudo yum install -y mysql-server Failed to set locale, defaulting to C Loaded plugins: priorities, security, update-motd, upgrade-helper Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package mysql-server.noarch 0:5.5-1.3.amzn1 will be installed
Apacheのインストールは1章に書いてありますから〜って事なので、
42ページの内容に沿ってインストールからhttpdの立ち上げまで。
[ec2-user@ip-10-132-18-46 ~]$ sudo yum install httpd Failed to set locale, defaulting to C Loaded plugins: priorities, security, update-motd, upgrade-helper Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.2.24-2.31.amzn1 will be installed 〜略〜 [ec2-user@ip-10-132-18-46 ~]$ sudo service httpd start Starting httpd: [ OK ] [ec2-user@ip-10-132-18-46 ~]$ sudo chkconfig httpd on
MovableTypeのインストールは、ダウンロードしてから、解凍してから、、
[ec2-user@ip-10-132-18-46 ~]$ cd /tmp [ec2-user@ip-10-132-18-46 tmp]$ wget http://www.movabletype.org/downloads/stable/MTOS-5.2.3.zip --2013-05-29 11:13:24-- http://www.movabletype.org/downloads/stable/MTOS-5.2.3.zip Resolving www.movabletype.org (www.movabletype.org)... 175.41.253.248, 54.248.75.7 Connecting to www.movabletype.org (www.movabletype.org)|175.41.253.248|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 9712324 (9.3M) [application/zip] Saving to: 'MTOS-5.2.3.zip' 100%[===================================================================================>] 9,712,324 12.3MB/s in 0.8s 2013-05-29 11:13:25 (12.3 MB/s) - 'MTOS-5.2.3.zip' saved [9712324/9712324] [ec2-user@ip-10-132-18-46 tmp]$ unzip MTOS-5.2.3.zip Archive: MTOS-5.2.3.zip creating: MTOS-5.2.3/ creating: MTOS-5.2.3/tools/ inflating: MTOS-5.2.3/tools/rebuild-benchmark inflating: MTOS-5.2.3/tools/mt-tmpl-preview inflating: MTOS-5.2.3/tools/remove-object inflating: MTOS-5.2.3/tools/permission-viewer
所定の位置に配置。静的ファイル用のディレクトリと管理用ディレクトリ。
[ec2-user@ip-10-132-18-46 tmp]$ sudo mkdir /var/www/mt [ec2-user@ip-10-132-18-46 tmp]$ cd MTOS-5.2.3 [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo mv mt-static /var/www/mt/ [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo mkdir /var/www/mt/admin [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo mv * /var/www/mt/admin/
HTML配置用ディレクトリと権限設定。書き込み権限が必要なところもありますよ、と。
[ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo mkdir /var/www/mt/html [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo chmod 755 /var/www/mt/ [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo chmod 755 /var/www/mt/admin/* [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo chmod 777 /var/www/mt/admin [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo chmod 777 /var/www/mt/html/ [ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo chmod 777 /var/www/mt/mt-static/support/
で、Apacheのconfを追加して、
reloadして、、
[ec2-user@ip-10-132-18-46 MTOS-5.2.3]$ sudo service httpd reload Reloading httpd:
MTキターーーッ的な。
アレ、CGIダメじゃんw
コピペでマイナス付けたまんま的な…汗
Alias /mt "/var/www/mt/admin/" <Directory "/var/www/mt/admin"> Options FollowSymLinks -Indexes ExecCGI
んで、大丈夫そうな画面が出て来ましたが、
画像系の処理でGDかImageMagick入れとけや〜って事みたいなので、
GDライブラリを入れておきます。(今日そこまでイケるか甚だ疑問ですが…w)
[ec2-user@ip-10-132-18-46 conf.d]$ sudo yum install -y perl-GD Failed to set locale, defaulting to C Loaded plugins: priorities, security, update-motd, upgrade-helper amzn-main | 2.1 kB 00:00 amzn-updates | 2.3 kB 00:00 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package perl-GD.x86_64 0:2.44-3.2.amzn1 will be installed
続いてMySQLのサービス立ち上げて、、
[ec2-user@ip-10-132-18-46 conf.d]$ sudo service mysqld start Initializing MySQL database: Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system
rootのパスワードを変更する
[ec2-user@ip-10-132-18-46 conf.d]$ mysqladmin -u root password New password: Confirm new password:
mtっていうテーブルを作って
[ec2-user@ip-10-132-18-46 conf.d]$ mysqladmin create --default-character-set=utf8 -u root -p mt
権限つけます
mysql> grant all on mt.* to mtuser@localhost identified by 'mtpasswd'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
MovableTypeの諸々の設定をして、、
最後のS3をWebsiteにする設定を忘れてたので。。
■ S3バケットをEC2にマウントする
s3fsをインストールしようと思ったら、、イロイロとインストールしなきゃなのね、、
[ec2-user@ip-10-132-18-46 conf.d]$ history | grep “sudo yum install”
〜略〜
74 sudo yum install gcc
75 sudo yum install libstdc++-devel
76 sudo yum install gcc-c++
77 sudo yum install fuse
78 sudo yum install fuse-devel
79 sudo yum install curl-devel
80 sudo yum install libxml2-devel
81 sudo yum install openssl-devel
82 sudo yum install mailcap
84 sudo yum install make
—
第7回はココにてタイムアップ
他の日にキャッチアップしようと思ったものの、
カンファレンスや飲み会等大忙しで、第8回に持ち越し。
—
第8回(http://shinjukuzame.doorkeeper.jp/events/4354)
第8回 AWS勉強会 新宿鮫。CDP本片手にもくもくします〜 #shinjukuzame (@ L15(新宿西口コワーキングスペース)) [pic]: http://t.co/i0nekh3Sin
— Eiji Shinohara @ アルゴリア 🗾 (@shinodogg) June 12, 2013
■ s3fsのダウンロード&インストール
s3fsは先週のAWS Game Dayで@czkukが壊されたS3のデータを復旧する際にインストールするの
隣でみてたのでイイ感じに出来るはずw ↓はその植木さんのブログ記事。
s3fsを使ってEC2からS3をマウントしたときにうまくいかなくて調べた事まとめ
wgetで落としてきて、、
[ec2-user@ip-10-132-18-46 ~]$ sudo wget https://s3fs.googlecode.com/files/s3fs-1.70.tar.gz --2013-06-12 10:13:07-- https://s3fs.googlecode.com/files/s3fs-1.70.tar.gz Resolving s3fs.googlecode.com (s3fs.googlecode.com)... 74.125.31.82, 2404:6800:4008:c00::52 Connecting to s3fs.googlecode.com (s3fs.googlecode.com)|74.125.31.82|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 166791 (163K) [application/x-gzip] Saving to: 's3fs-1.70.tar.gz' 100%[======================================================================================================================================>] 166,791 292KB/s in 0.6s 2013-06-12 10:13:09 (292 KB/s) - 's3fs-1.70.tar.gz' saved [166791/166791]
解凍して
[ec2-user@ip-10-132-18-46 ~]$ tar xvf s3fs-1.70.tar.gz s3fs-1.70/ s3fs-1.70/README s3fs-1.70/doc/ s3fs-1.70/doc/man/ s3fs-1.70/doc/man/s3fs.1 s3fs-1.70/doc/Makefile.am s3fs-1.70/doc/Makefile.in 〜略〜
いつものアレ
[ec2-user@ip-10-132-18-46 s3fs-1.70]$ ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking target system type... x86_64-unknown-linux-gnu checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk 〜略〜 [ec2-user@ip-10-132-18-46 s3fs-1.70]$ echo $? 0 [ec2-user@ip-10-132-18-46 s3fs-1.70]$ make Making all in src make[1]: Entering directory `/home/ec2-user/s3fs-1.70/src' g++ -DPACKAGE_NAME="s3fs" -DPACKAGE_TARNAME="s3fs" -DPACKAGE_VERSION="1.70" -DPACKAGE_STRING="s3fs 1.70" -DPACKAGE_BUGREPORT="" -DPACKAGE="s3fs" -DVERSION="1.70" -I. -D_FILE_OFFSET_BITS=64 -I/usr/include/fuse -I/usr/include/libxml2 -g -O2 -Wall -D_FILE_OFFSET_BITS=64 -MT s3fs.o -MD -MP -MF .deps/s3fs.Tpo -c -o s3fs.o s3fs.cpp s3fs.cpp: In function 'int s3fs_check_service()': s3fs.cpp:3665:7: warning: variable 'result' set but not used [-Wunused-but-set-variable] s3fs.cpp: In function 'int main(int, char**)': 〜略〜 [ec2-user@ip-10-132-18-46 s3fs-1.70]$ echo $? 0 [ec2-user@ip-10-132-18-46 s3fs-1.70]$ sudo make install Making install in src make[1]: Entering directory `/home/ec2-user/s3fs-1.70/src' make[2]: Entering directory `/home/ec2-user/s3fs-1.70/src' test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin" /usr/bin/install -c s3fs '/usr/local/bin' 〜略〜 make[1]: Leaving directory `/home/ec2-user/s3fs-1.70' [ec2-user@ip-10-132-18-46 s3fs-1.70]$ echo $? 0
めでたしめでたし。
■ s3fsの権限周りの設定
s3fsはfuseというファイルシステムを使っていて、
デフォルトではrootしか使えないようになっています。
ということで↓のように user_allow_other してやります。
[ec2-user@ip-10-132-18-46 s3fs-1.70]$ sudo vim /etc/fuse.conf [ec2-user@ip-10-132-18-46 s3fs-1.70]$ cat /etc/fuse.conf # mount_max = 1000 user_allow_other
次にセキュリティクレデンシャルの設定。
なんかSecurity CredentialsのUI変わってる…。
Secret Access Keyが必要なのでLegacyの方で。。
ec2-user@ip-10-132-18-46 s3fs-1.70]$ sudo vim /etc/passwd-s3fs [ec2-user@ip-10-132-18-46 s3fs-1.70]$ sudo chmod 640 /etc/passwd-s3fs [ec2-user@ip-10-132-18-46 s3fs-1.70]$ ls -l /etc/passwd-s3fs -rw-r----- 1 root root 61 Jun 12 10:30 /etc/passwd-s3fs
S3バケットをマウントします。
[ec2-user@ip-10-132-18-46 s3fs-1.70]$ sudo mv /var/www/mt/html /var/www/mt/html-old [ec2-user@ip-10-132-18-46 s3fs-1.70]$ sudo mkdir /var/www/mt/html [ec2-user@ip-10-132-18-46 s3fs-1.70]$ sudo /usr/local/bin/s3fs shinjukuzame.shinodogg.com /var/www/mt/html -o allow_other
んで、ファイル読もうとすると、、、読めませんがな、、と。。。
[ec2-user@ip-10-132-18-46 mt]$ cd html [ec2-user@ip-10-132-18-46 html]$ ls -l ls: reading directory .: Operation not permitted total 0
で、上記、植木さんのブログチェックすると、、、
これを解決するにはv1.69(2013/5/16リリース)で追加されたuid/gidマウントオプションを使います。このオプションによりメタデータが設定されていないファイルについては、指定したuid/gidがオーナー(グループ)として扱われるので読み書きできるようになります。
さすが、神だぜ…
ってことでuidとgidは↓こんな感じなので
[ec2-user@ip-10-132-18-46 html]$ id ec2-user uid=222(ec2-user) gid=500(ec2-user) groups=500(ec2-user),10(wheel)
アレ、、、、
[ec2-user@ip-10-132-18-46 html]$ sudo /usr/local/bin/s3fs shinjukuzame.shinodogg.com /var/www/mt/html -o allow_other,uid=222,gid=500 mount: according to mtab, s3fs is already mounted on /var/www/mt/html
s3fsのプロセスkillしてやってもっかい試みるも、、
[ec2-user@ip-10-132-18-46 html]$ ps -ef | grep s3fs root 5464 1 0 10:39 ? 00:00:00 /usr/local/bin/s3fs shinjukuzame.shinodogg.com /var/www/mt/html -o allow_other ec2-user 5478 4733 0 10:44 pts/0 00:00:00 grep s3fs [ec2-user@ip-10-132-18-46 html]$ kill -9 5464 -bash: kill: (5464) - Operation not permitted [ec2-user@ip-10-132-18-46 html]$ sudo kill -9 5464 [ec2-user@ip-10-132-18-46 html]$ sudo /usr/local/bin/s3fs shinjukuzame.shinodogg.com /var/www/mt/html -o allow_other,uid=222,gid=500 s3fs: unable to access MOUNTPOINT /var/www/mt/html: Transport endpoint is not connected
htmlディレクトリ消そうとしたら、、どういう事ですの?w
[ec2-user@ip-10-132-18-46 mt]$ sudo rm -rf html rm: cannot remove `html': Is a directory [ec2-user@ip-10-132-18-46 mt]$ ls -l ls: cannot access html: Transport endpoint is not connected total 12 drwxrwxrwx 13 root root 4096 May 29 11:49 admin d????????? ? ? ? ? ? html drwxrwxrwx 2 root root 4096 May 29 11:18 html-old drwxr-xr-x 17 ec2-user ec2-user 4096 Jan 18 06:35 mt-static
一番下の怪しいなと。
[ec2-user@ip-10-132-18-46 mt]$ mount -l /dev/xvda1 on / type ext4 (rw,noatime) [/] proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) fusectl on /sys/fs/fuse/connections type fusectl (rw) s3fs on /var/www/mt/html type fuse.s3fs (rw,nosuid,nodev,allow_other)
アンマウントしました。
[ec2-user@ip-10-132-18-46 mt]$ sudo umount -l /var/www/mt/html [ec2-user@ip-10-132-18-46 mt]$ mount -l /dev/xvda1 on / type ext4 (rw,noatime) [/] proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) fusectl on /sys/fs/fuse/connections type fusectl (rw)
で、もっかい、、、マジすか…汗
[ec2-user@ip-10-132-18-46 mt]$ ls -l total 16 drwxrwxrwx 13 root root 4096 May 29 11:49 admin drwxr-xr-x 2 root root 4096 Jun 12 10:33 html drwxrwxrwx 2 root root 4096 May 29 11:18 html-old drwxr-xr-x 17 ec2-user ec2-user 4096 Jan 18 06:35 mt-static [ec2-user@ip-10-132-18-46 mt]$ sudo /usr/local/bin/s3fs shinjukuzame.shinodogg.com /var/www/mt/html -o allow_other,uid=222,gid=500 [ec2-user@ip-10-132-18-46 mt]$ cd html [ec2-user@ip-10-132-18-46 html]$ ls -l ls: reading directory .: Operation not permitted total 0
なんかイロイロやったけど何かダメでもっかい/etc/passwd-s3fsみたら最後のセキュリティIDの最後の一文字抜けてた…w
ってことで、、キターーー的な。
[ec2-user@ip-10-132-18-46 mt]$ sudo cat /etc/passwd-s3fs shinjukuzame.shinodogg.com:Access Key ID:Secret Access Key [ec2-user@ip-10-132-18-46 mt]$ sudo vim /etc/passwd-s3fs [ec2-user@ip-10-132-18-46 mt]$ sudo /usr/local/bin/s3fs shinjukuzame.shinodogg.com /var/www/mt/html -o allow_other,uid=222,gid=500 [ec2-user@ip-10-132-18-46 mt]$ ls admin html html-old mt-static [ec2-user@ip-10-132-18-46 mt]$ cd html [ec2-user@ip-10-132-18-46 html]$ ls -l total 1 ---------- 1 ec2-user ec2-user 47 May 29 10:48 index.html
で、MovableTypeしようと思ったら、、、、ログインパスワード忘れた…w
まぁ、イイや。。MT入れたし、S3マウント出来たし…orz
コメント