Apache httpd で http でアクセスされた https にリダイレクトする
Apache 入門ブログみたいになってるけど。
設定内容
# /etc/httpd/conf.d/rewrite.conf <IfModule mod_rewrite.c> RewriteEngine On RewriteCond "%{SERVER_PORT}" "^80$" RewriteRule "^(.*)$" "https://%{SERVER_NAME}$1" [R,L] </IfModule>
Apache の configtest をしてからリロードするのを忘れずに
# apachectl configtest # service httpd restart
まとめ
https 最高!
Apache httpd でメンテナンスモード
設定した内容を忘れないようにメモ。
実現したいこと
ドキュメントルートに maintenance.html というファイルが存在すれば、メンテナンスモードとし、すべてのアクセスに対して maintenance.html を返す。
ただし、特定の IP アドレスからのアクセスに関しては、通常通りのレスポンスを返す。
準備
1. DOCUMENT_ROOT/maintenance.htmlを配置。画像等は使わず、1つの HTML ファイルで完結するようにする(と設定が楽)
2. /etc/httpd/conf.d/rewrite_maintenance.conf を配置。
# rewrite_maintenance.conf ErrorDocument 503 /maintenance.html <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f RewriteCond %{REQUEST_URI} !=/maintenance.html RewriteCond %{REMOTE_ADDR} !=127.0.0.1 RewriteCond %{REMOTE_ADDR} !=xxx.xxx.xxx.xxx RewriteRule ^.*$ - [R=503,L] </IfModule>
xxx.xxx.xxx.xxx にはメンテナンスモードから除外したい IP アドレスを指定する。
3. SSL でアクセスする場合は、/etc/httpd/conf.d/ssl.conf も編集しておく。
# ssl.conf <VirtualHost _default_:443> ## snip ## Include conf.d/rewrite_maintenance.conf ## snip ## </VirtualHost>
4. maintenance.html を maintenance.html.rename_me 等にリネームしておく。
$ mv /var/www/html/maintenance.html /var/www/html/maintenance.html.rename_me
$ service httpd reload
メンテナンス時
maintenance.html のファイル名を切り替えるだけ。Apache httpd のリロードは不要。
メンテナンスモード ON
$ mv /var/www/html/maintenance.html.rename_me /var/www/html/maintenance.html
メンテナンスモード OFF
$ mv /var/www/html/maintenance.html /var/www/html/maintenance.html.rename_me
まとめ
ファイルのリネームだけでメンテナンスモードに入れるので、自動化も簡単ですね。
Kibana を Heroku で動かす
Kibana というログビジュアライゼーションツールが話題です。
便利なアプリがあればそれを Heroku で動作させたいと思うのが人間の性です。
ということで Kibana を Heroku で動かしてみました。
ポイントは以下の4つです。
- heroku-buildpack-static ビルドパックを使う
- Searchbox アドオンを使う
- Searchbox は Alternative URL を使う
- Searchbox の kibana-int というインデックスを手で作る
それでは実際の手順です。
$ wget https://download.elasticsearch.org/kibana/kibana/kibana-3.0.1.zip $ unzip kibana-3.0.1.zip $ cd kibana-3.0.1 $ git init $ git add . $ git commit -am "first commit" $ heroku create --stack cedar --buildpack https://github.com/pearkes/heroku-buildpack-static $ heroku addons:add searchbox $ git push heroku master
ここまでやったら Heroku にログインし、Searchbox アドオンのページを開きます。
Alternative Url が今回利用する URL です。
config.js に上で確認した URL を記載します(https に変更しておきます)。
diff --git a/config.js b/config.js index 31274ef..450bdfc 100644 --- a/config.js +++ b/config.js @@ -29,7 +29,7 @@ function (Settings) { * +elasticsearch: {server: "http://localhost:9200", withCredentials: true * */ - elasticsearch: "http://"+window.location.hostname+":9200", + elasticsearch: "https://dwalin-us-east-1.searchly.com/api-key/5f15ba8ba337a90xxxxxxxxxxxxxxxxx", /** @scratch /configuration/config.js/5 *
$ git commit -am "changed url" $ git push origin master
ここまでで heroku open すれば Kibana が見られるようになっています。
ただし、Kibana のダッシュボードの保存ができません。
それでは困るので以下の手順で kibana-int というインデックスを作ります。
Heroku の Searchbox アドオンのページから New Index をクリックします。
kibana-int と入力し、Create をクリックします。
以降はダッシュボードの保存も問題なく動作します。
Elasticsearch アドオンについて
2014/05/02 現在、無料で使える Elasticsearch アドオンは2つあります。
- Bonsai Elasticsearch
- analyzer に kuromoji が使える(!)
- /_nodes/ にアクセスできないため、Kibana が使えない
- 無料プランでは 5,000 ドキュメントまで
- Searchbox Elasticsearch
- Alternative URL により、Kibana が使える
- 無料プランではインデックスサイズが 5MB まで
まとめ
- Kibana は Heroku の無料プランで動く
ただし kuromoji は使えないのが残念
2014/05/18 追記
Searchbox も 1.x から kuromoji がデフォルトで使えます。素晴らしい!
中の人(?)からからコメントでご指摘いただきました。ありがとうございます。
IRKit と Heroku Scheduler でフロアライトを光目覚ましにしてみた
ハイテク学習リモコンの IRKit を購入して遊んでいる。
既存の家電にエクステンションポイントを生やすことができるのが画期的だと思っている。
最近「光目覚ましが最高に起きれる!」という記事をよく見るので、IRKit とフロアライトを組み合わせて、光目覚ましにしてみた。Mac がスリープになっていて、寝坊するのは嫌なので、Heroku Scheduler を使って、インターネット側からフロアライトをつけるようにしてみた。
Gemfile
source ‘https://rubygems.org' gem ‘faraday’
light_on.rb
require 'faraday' require 'json' conn = Faraday.new(url: 'http://api.getirkit.com') do |builder| builder.request :url_encoded builder.response :logger builder.adapter :net_http end conn.post '/1/messages', { clientkey: ‘YOUR_CLIENT_KEY', deviceid: ‘YOUR_DEVICE_ID', message: {format: "raw", freq: 38, data: [17421,8755,1190,1073,1190,3341,1190,1073,1190,1073,1190,1073,1190,1073,1190,1073,1190,3458,1190,3458,1190,1073,1190,3341,1190,3341,1190,1073,1190,3341,1190,3341,1190,1037,1190,3341,1190,3341,1190,3341,1190,3341,1190,3341,1190,1073,1190,1073,1190,1073,1190,1073,1190,1073,1190,1073,1190,1073,1190,1073,1190,3341,1190,3341,1190,3341,1190,65535,0,13693,17421,4400,1190,65535,0,65535,0,60108,17421,4400,1190] }.to_json }
message の部分は我が家のフロアライトの ON のデータなので自分が使っているフロアライトの赤外線データを使ってください。赤外製データや API キーの取得には 橋本商会 » 赤外線学習リモコンIRKitのrubygemを作った が便利。
あとはこれを Heroku に push して、Heroku Scheduler アドオンを追加して、
bundle exec ruby light_on.rb
を Daily で追加する。時間は起きたい時間の(JSTとして見て)9時間前に設定する。
4週間ほど運用してみて
最初の数日は、フロアライトがついたタイミングで目が覚めた。
普通の目覚ましの耳障りな音を聞かなくて済むのでライフチェンジング感を感じていたが、
そのまま二度寝するので、結局普通の目覚ましの設定時間で起きていた。
そうこうしているうちに体が慣れて、フロアライトの点灯では起きられなくなってしまった。
起きる時にフロアライトのリモコンを探す必要がなくなったのは楽になったが、目覚ましとしての役割では機能していない。
Jenkins でキャッチされなかった例外を Bugsnag に送信するプラグイン作った
Jenkins の管理をして、プラグインをインストールしたりアップデートしたりしていると、あまり安定していないバージョンのプラグインにあたってしまって、動きが不安定になることがあります。
過去には、ビルドはすべて成功しているように見えているのに、ログにはスタックトレースが記録されていて、Jenkins を再起動したタイミングでビルドが消える、といった現象に遭遇したこともありました。
そのため、Jenkins のプラグインのバージョンを上げるのに慎重になり、新しいプラグインの恩恵を受けづらくなってしまうのはもったいないです。
そこで、例外が出たらすぐに来づけるように、キャッチされなかったプラグインを Bugsnag に送信するプラグインを書きました。
https://github.com/mallowlabs/bugsnag-plugin
Bugsnag は月に 2,000 エラーまでは無料で使えます。
見た目も綺麗なので、気に入っています。
プラグインをインストールして、Jenkins のシステム設定から、API キーを入力するだけで使えるので簡単です。
こういった、ビルドにも通知にも UI にも関係のない Jenkins プラグインは結構珍しいと思うので、サンプルコードとして使っていただけると嬉しいです。