CentOS5.7をVirtualBoxにインストール

サーバ環境を再現するために、ちょっと必要になったのでメモ。


今回はネットワークインストールするため、
ブートディスクをダウンロードして、VirtualBoxのドライブに指定。
ftp://ftp.iij.ad.jp/pub/linux/centos/5.7/os/x86_64/images/boot.iso


VirtualBoxの設定でネットワークにホストオンリーアダプタを追加。


インストール元はFTPを指定。
Server: ftp.iij.ad.jp
Directory: pub/linux/centos/5.7/os/x86_64


なんか追加リポジトリを指定しようとすると落ちるのでインストール時は
何も指定せずServerモジュールをインストール。


「インストールプロセスを開始しています。数分かかる事があります...」
が、数分どころでなく待たされるので気長に待つ。

herokuを使う時のメモ

基本はherokuのドキュメントに全部書いてある
http://docs.heroku.com/

herokuにアップしたくない

http://docs.heroku.com/slug-compiler

test
spec
features
log
tmp

.slugignore

gemを使う

http://docs.heroku.com/gems

will_paginate
jpmobile
haml

.gems

heroku上で使えるgemの一覧 http://installed-gems.heroku.com/

環境変数

http://docs.heroku.com/config-vars

# 設定
% heroku config:add KEY=VALUE

# 使う
% ENV['KEY']

# 確認
% heroku config

sequel使いたい

http://docs.heroku.com/rack#using-datamapper-or-sequel

Sequel.connect(ENV['DATABASE_URL'] || 'sqlite://my.db')
DATABASE_URL='mysql://user:pass@localhost/mydb' thin start --rackup config.ru

コマンド

# アプリ作成
% heroku create

# 名前変更
% heroku rename <newname>

# デプロイ
% git push heroku master

# migrate
% heroku rake db:migrate

# DBをサーバにプッシュ
% heroku db:push

# サーバリスタート
% heroku restart

.htaccessで指定パスだけBASIC認証かけたい

http://mydomain/admin 以下にだけBASIC認証をかける。
前回のを利用してもいいけど、普通にやってみる。

Satisfy Any
AuthUserFile /var/www/railsapps/mintame/current/public/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic

Order Deny,Allow
Allow from all

<Files ~ "^.(htpasswd|htaccess)$">
  deny from all
</Files>

<Files ~ "^admin">
  deny from all
  require valid-user
</Files>

以下の辺りを正規表現で好きなように指定すればいい。

<Files ~ "^admin">

Passengerのログをlogrotateさせる

deploy.rbに以下のように書かれているアプリケーションだと思いねえ。

set :deploy_to, "/var/www/railsapps/#{application}"

CentOSだとlogrotateは「/etc/logrotate.conf.d/」ディレクトリの中にそれぞれのアプリケーションごとに記述する。

/var/www/railsapps/#{application}/shared/log/production.log {
  daily
  missingok
  rotate 7
  compress
  delaycompress
  sharedscripts
  postrotate
    touch /var/www/railsapps/#{application}/current/tmp/restart.txt
  endscript
}

/etc/logrotate/conf.d/passenger

動作確認は

% logrotate -f /etc/logrotate/conf.d/passenger

参考先(というかまるパクリ)

指定URIだけBASIC認証させ"ない"htaccessの書き方

まだ公開してないからBASIC認証かけてるんだけど、
LBがヘルスチェックするから、そこだけBASIC認証外せって言われたので。

Satisfy Any
AuthUserFile /var/www/htdocs/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic

require valid-user
<Files ~ "^.(htpasswd|htaccess)$">
  deny from all
</Files>

SetEnvIf Request_URI "/healthcheck" healthcheck
Order Deny,Allow
Deny from all
Allow from env=healthcheck

SetEnvIfで環境変数URIを指定してallowしてやればいい。
反対に指定URIだけBASIC認証させたければ、deny from env=healthcheckすればいいんじゃないかな。

検索エンジンなどのショートカット

Chromeではアドレスバー右クリックで「検索エンジンの編集」、Firefoxでは「ブックマークの管理」ー「スマートキーワード」で設定。

Wikipedia w http://ja.wikipedia.org/w/index.php?search=%s
ALC e http://eow.alc.co.jp/%s/UTF-8/
GoogleMaps m http://maps.google.co.jp/maps?q=%s
Amazon a http://www.amazon.co.jp/gp/search?field-keywords=%s&index=blended&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A
delicious d http://delicious.com/mostlyfine/%s
価格.com k http://kakaku.com/search_results/%s/?act=sp
はてブ b http://b.hatena.ne.jp/search?q=%s
I'm Feeling Lucky g http://www.google.co.jp/search?q=%s&btnI=I%27m+Feeling+Lucky
GoogleNews n http://news.google.co.jp/news/search?hl=ja&q=%s
Twitter検索 tw http://pcod.no-ip.org/yats/search?query=%s
Yahoo!辞書 dic http://dic.yahoo.co.jp/dsearch?enc=UTF-8&dtype=2&stype=0&p=%s
FriendFeed ff http://friendfeed.com/search?q=%s
Flickr f http://www.flickr.com/search/?q=%s

deliciousは自分のアカウント指定になってるので注意。

ActiveResourceで特殊なフォーマットのXMLを処理する

試しに全体がくくられていないSJISXMLを処理してみた。

module ActiveResource::Formats::SampleXmlFormat
  include ActiveResource::Formats::XmlFormat
  def decode(xml)
    super("<content>#{xml}</content>".toutf8)
  end
  extend self
end

class Sample < ActiveResource::Base
  self.format = :sample_xml
end

「SampleXmlFormat」が「:sample_xml」になるのがわかりずらいとおもいました。