apacheでつくる503メンテページ
環境:AmazonLinux(CentOS6でも下記やり方できます)
すべてrootユーザーで作業
apacheインストール
sudo yum install httpd
メンテナンスページ作成
vi /var/www/html/maintenance.html ------------------- now maintenance -------------------
mod_rewriteと.htaccess許可
vi /etc/httpd/conf/httpd.conf ------------------------------------------------- <Directory "/var/www/html"> Options -Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> LoadModule rewrite_module modules/mod_rewrite.so -------------------------------------------------
.htaccess設定
vi /var/www/html/.htaccess ------------------------------------------------- ErrorDocument 503 /maintenance.html RewriteEngine On RewriteCond %{REQUEST_URI} !=/maintenance.html #RewriteCond %{REMOTE_ADDR} =IPアドレス RewriteRule ^.*$ - [R=503,L] ------------------------------------------------- sudo service httpd start sudo chkconfig httpd on
IPアドレスにアクセスして、メンテナンスページが表示されて、503が返されていればOK
CloudflontとS3で503を返すメンテナンスページ作成
S3だけでメンテページを作成しようとしたが、S3単体だと503を返すことができないので、
CloudfrontとS3でメンテナンスページを作成したときのメモ。
s3バケットを作成
・まずマネジメントコンソールに入り、S3のバケットを作成。
・作ったバケットの横の虫眼鏡を押して、プロパティを表示。
・「静的サイトホスティング」をクリックし、「ウェブサイトのホスティングを有効にする」を選択。
・「インデックスドキュメント」はなくては作れないので、適当に「index.html」としておく。
・「アクセス許可」を選択し、「バケットポリシーの編集」を選択。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::[バケット名]/*" } ] }
上記のようにポリシーを作成する(これでアップロードしたものすべてが自動で閲覧可になる)
s3にリソースアップロード
・s3マネジメントコンソールで対象のバケット名をクリックし、右上の「アクション」ボタンを押して、「アップロード」を選択。
・ドラッグアンドドロップでhtmlファイル等リソースをアップロード。
・ちゃんと表示されているかどうか先ほどのプロパティ画面の「静的サイトホスティング」のところにある「エンドポイント」にアクセス
(「バケット名.s3-website-ap-northeast-1.amazonaws.com」とかなっているやつ。そこから「/maintenance.html」みたいにリソース名でアクセスできる)
cloudflontを作成
・「create Distribution」を選択。「Web」のほうの「Get Started」を選択。
・「Origin Settings」の「Origin Domain Name」にバケット名を入れる(文字入力すればサジェストされる)
・「Restrict Bucket」をYESにする。
・「Origin Access Identity」をCreate a New Identityにする。
・「Grant Read Permissions on Bucket」をYes, Update Bucket Policyにする。
・下のほうにある「Distribution Settings」内にある「Alternate Domain Names (CNAMEs)」というところに、先ほどのs3のエンドポイントを入力
・あとはデフォルトのまま「Create Distribution」を押して作成する。
Error Pages設定
・cloudflontのサイドメニュー「Distributions」を選択したら、先ほど作ったDistribution一覧にあると思うので、IDをクリック。
・タブメニューの「Error Pages」を選択し、「Create Custom Error Response」を選択。
・「HTTP Error Code」は「403:Forbidden」、「Error Caching Minimum TTL」はデフォルト。
・「Customize Error Response」を「Yes」にする。
・「Response Page path」という設定項目がでてくるので、s3に設置したメンテページのhtmlのパスを設定。
(直下に「maintenance.html」というファイルを置いていたら「/maintenance.html」)
・「HTTP Response Code」は「503:Service Unavailable」を選択し、「Create」を選択。
疎通確認
・15分~30分くらいで表示されるようになるので、その後cloudflontのサイドメニュー「Distributions」の一覧のところにある要素「Domain Name」にアクセスする。
(ランダム文字列.cloudfront.netみたいなやつ)
・無事メンテページが表示されて、503がレスポンスで返ってくれば準備完了。
・実際メンテナンスに入る前に、DNSの設定を疎通確認したクラウドフロントの「Domain Name」にすればOK。
※Route53のAlias設定でcloudflontディストリビューションを設定する場合は、Route53の料金がかかりません!
追記
・作りたてのS3は、307 Temporary Redirectを上記設定で疎通を行うと返してくることがたまにある。
対策を調べたのですがこれというものは見つからず、事前にs3バケットのみ用意しておくのがよさそうです。(データ置いとくだけなら1GB月4円くらいなので)
Linuxサーバーなどで、自分の外向きIPアドレスが知りたいとき
curl ifconfig.co
phantomjsとcasperjsのインストール
phantomjsのインストール
バイナリをダウンロードするやり方。ビルドはすごい時間がかかる。
cd /usr/local/src wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 mv phantomjs-2.1.1-linux-x86_64 phantomjs cd phantomjs ln -sf `pwd`/bin/phantomjs /usr/local/bin/phantomjs phantomjs --version #エラーになる場合は、だいたい以下を入れれば直る sudo yum -y install fontconfig-devel
casperjsのインストール
cd /usr/local/src git clone https://github.com/casperjs/casperjs.git cd casperjs/ # シンボリックリンクを作成 ln -sf `pwd`/bin/casperjs /usr/local/bin/casperjs # 動作確認 casperjs --version 1.1.2
casperjsでjQueryを使う
cd /usr/local/src/casperjs mkdir lib cd lib wget https://code.jquery.com/jquery-1.9.1.min.js mv jquery-1.9.1.min.js jquery.min.js
※casperjsのソース内で使うときはcreate時に以下のように設定
var casper = require('casper').create({ clientScripts: [phantom.casperPath + "/lib/jquery.min.js"], });
おまけメモ
バッチ実行する場合のsyntaxError回避 ソースの一番上にこれ入れる
#!/usr/local/bin/phantomjs /usr/local/bin/casperjs
MongoDBを少ない容量で起動させる
MongoDBを普通に起動させると、ジャーナルファイルが3GBくらい一気に容量を確保してしまうので、 開発環境などでは不便。
以下のように設定すればジャーナルファイルのサイズが128MBになる。
sudo serivce mongod stop #失敗したら sudo killall mongod sudo rm /var/lib/mongodb/journal/* #設定によっては場所が違う場合もあるので注意 sudo vi /etc/mongod.conf #(または、mongodb.conf) #以下を追加 ---------- journal=true smallfiles=true ---------- sudo service mongod start
dfコマンドなどで容量がすくなくなっていればOK。
Vagrantで良く使うコマンドメモ。
Vagrantで良く使うコマンドのまとめ。
box系
boxの追加
以下のコマンド。1.5以降BOXの名前のみで良くなりました。
$vagrant box add chef/centos-7.1
※chefとしていますが、chef入りのというのではなく、chefが作ってるBOXです。
※chef/ 以下にosを指定すると色々なものに対応しています。(centos-6.5等)
box一覧
$vagrant box list
box削除
$vagrant box remove [box名]
vm操作系
vm初期化
$vagrant init
vm起動
$vagrant up
※initしたときに作られたvagrantfileに各種設定(指定するboxなど)を書き込んでおく
vmへログイン
$vagrant ssh
※windowsは使えない。以下の設定でteraterm等でログイン
host: 127.0.0.1
port: 2222
user: vagrant
password: vagrant
rootpass: vagrant
※公開鍵認証でもログイン可「[vagrant initしたフォルダ].vagrant\machines\default\virtualbox\」の「private_key」ファイルが秘密鍵
vmシャットダウン
$vagrant halt
vm削除
$vagrant destroy