ruby

みなさんこんばんは。世間はクリスマス一色ですね。リア充爆発しろ!あ、取り乱しました。危うく echo 'サンタ' | grep -o . | xargs | awk '{print $1$3$2}' を召喚するところな @nullpopopo でございます。そういや2011年のクリスマスイヴには、Techにゃんこというインターネッツラヂオで「リア充死ね!」と叫んだ瞬間が最高聴取率を叩きだしたことを思い出しました。かなり酔っ払ってたので、爆発しろじゃなくて死ねと本音が出てしまったようです。こわいこわい。で、今年の年末は2014/12/28 16:00頃よりUstreamでダラダラ電波を垂れ流します。数時間の人生を無駄にされたい方は是非お付き合いいただければ・・・。

閑話休題。とあるプロジェクトは私を含め自宅やコワーキングスペースで仕事をしているメンバーばかりなので、コミュニケーションは主にchatworkを利用しています。先日、資料を作ってチャットに添付したはいいのですが、ある日自宅のファイルサーバーに置いたその資料を見たときに、「そういやこの資料、何がキッカケで作ったんだっけ?」と思い出すのに時間がかかってしまいました。チャットのログを遡ればよいのですが、作った資料と一緒にログを保存しておけばすぐに思い出すことができるので、できればそうしたいところです。

…続きを読む

上田さん後藤さん、「フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門」発売決定おめでとうございます!私は勝手にこれを記念しまして、シェルスクリプト一撃インストールシリーズ第2弾、今回もさくらのクラウドで、「ログイン後に一発シェルスクリプトを叩くだけでRedMineを動かす」をやってみました。

一撃インストールシリーズとは

chefもpuppetもDockerfileも使わず、シェルスクリプトと設定ファイルのひな形を用意すれば、コマンドを1回実行するだけで環境構築ができてしまうというスグレモノ。学校で、職場で家庭で商店で、是非お試しいただければと思います。

第1弾のWordPressはこちらをご確認くださいね。前提条件となる環境構築はこちらで取り上げたスタートアップスクリプトを実行済みであることとします。また、RedMineのインストールバージョンなどはこちらに合わせてあります。

■ 仕様

  • WEBサーバはNginx+Unicorn。RedMineはデーモンとして動かす
  • NginxはCentALTリポジトリからインストールする
  • Rubyは ftp://ftp.ruby-lang.org/pub/ruby/ からRedmine推奨バージョンをダウンロードし、rpmbuildでrpm化する
  • ドキュメントルートは /home/vhosts/IPアドレス/public_html (今回はドキュメントルートへのコンテンツ配置を省略します)
  • アクセスログは /home/logs/IPアドレス/ 以下に保存
  • Nginx全体のアクセス制御(IPアドレスによる制限) は /etc/nginx/denyhosts で行う
  • /etc/logrotate.d/nginx のローテーション対象ログに、バーチャルホストのアクセスログを含め、366世代保管にする
  • MySQLのrootパスワード、RedMine用ユーザのパスワードはインストール時に生成する
  • RedMine用のDB名、ユーザ名は変数で指定する
  • キックするシェルスクリプトの他には、/etc/nginx/conf.d/default.conf の元ファイル、/etc/nginx/denyhostsの元ファイル、rubyのrpm作成用specファイル、rubyダウンロードスクリプト、RedMineのスタートスクリプトを準備し、シェルスクリプトと同じディレクトリにアップロードする

さくらのクラウドには、RedMine用のインスタンスもありますが、Apacheとの連携だったので、どうせだったらNginxと連携させてみたいなー、というのがやってみたキッカケになります。なお、RedMineのデフォルトユーザ「admin/admin」でログインするところまでしか確認してませんので、インストール後はすぐにパスワードを変更しましょう。また、MySQLも mysql_secure_installation コマンドで最低限のセキュリティ設定を行いましょう!

 

■ デプロイ対象一覧

今回は6つのファイルをホームディレクトリへアップロードしますので、それぞれのファイルについて、役割を表にして整理したいと思います。

INSTALLER  インスタンス起動〜yumアップデートからの再起動後にsshログインして実行するスクリプト
ruby.spec.orig ~/rpm/SPECS/ディレクトリ配下に置くspecファイルの元ファイル
rubycheck rubyの公式FTPサイトにあるアーカイブ一覧を取得するために使用するスクリプト
900_denyhosts Nginxのアクセス制御ファイル
901_nginx.conf Nginx設定ファイルのひな形
910_redmine-init RedMineのスタートスクリプト

次のページに続きます。 Redmine超入門 (日経BPムック)

fluentとgrowthforecastが流行っていると聞いて試してみました。アクセスログの統計はawstatsなどを使っている方も多いと思いますが、ツールの提供する範囲でしか表やグラフを生成してくれません。しかし、自分が計測したい項目がそこになかった場合は、グラフを作るしかありません。これまでは敷居の高かったグラフ作成を、これら組み合わせで簡単に作ってしまいましょう。RRDtoolなど既存のツールを使って数字をグラフにするよりは、恐らくものすごく簡単だと思います。

fluentって?

メッセージングのコレクションサービス。フレームワークとして抽象化されており、各種プラグインを利用することで、様々なメッセージングを集約、伝搬することが出来る。
また転送時のデータ構造には MessagePack を採用しており、かなりの転送能力を誇る。

from はてな

growthforecastって?

kazeburoさんが作成されたツールで、様々な値をAPI経由でグラフ化することができる。

動作イメージとしては以下の概念図のようになります。
fluent+growthforecast example
今回は例題として、ApacheのアクセスログをfluentがJSON形式に変換し、そのログファイルをgrowthforecastがグラフ化するところまでやってみたいと思います。

あらかじめ手元の作業環境にApacheをインストールするか、他所のサーバからアクセスログ(combined形式)を任意のディレクトリにコピーしておいてください。

…続きを読む