お手軽Rictyフォント生成補助シェルスクリプト
瞳孔が開くほど簡単にredmineを構築できる「Bitnami」 (2)
bitnamiネタで幾つか備忘録を残して置くつもりがすっかり忘れていました。
redmineでAPIのテスト環境作るときに、複数テスト環境あると便利ですよね。bitnamiを使って1つのサーバーに簡単に複数のredmineを作るTIPSを載せておきます。
構成
3つのredmineを1つのサーバーにインストールしてみます。以下はインストール先とポート番号です。最初のredmineがメインになります。
prefix | http | https | mysql | subversion | |
---|---|---|---|---|---|
メインredmine | /opt/release | 80 | 443 | 33860 | 36900 |
サブredmine | /opt/staging | 80 | 443 | 33861 | 36901 |
サブredmine | /opt/dev | 80 | 443 | 33862 | 36902 |
インストール方法
メインredmineのインストール(/opt/release)
普通にインストールします。違うのはオプションでapacheやmysqlなどのポートを指定してインストールします。イントールが終わったらすぐにredmineのサービスを停止します。次のredmineをインストールする際にポートが衝突するからです。
$ ./bitnami-redmine-2.4.3-0-linux-x64-installer.run \ --prefix /opt/release \ --apache_server_port 80 \ --apache_server_ssl_port 443 \ --mysql_port 33860 \ --subversion_port 36900 \ --installer-language en $ /opt/release/ctlscript.sh stop
こんな感じで次のredmineをインストールする際に、apacheやmysqやsubversionのポートを違うものにしてインストールすれば、1つのサーバーに複数のredmineのインストールが可能です。
サブredmineのインストール(/opt/starging)
最初のredmineのインストールが終わったら2つ目をインストールします。
$ ./bitnami-redmine-2.4.3-0-linux-x64-installer.run \ --prefix /opt/staging \ --apache_server_port 80 \ --apache_server_ssl_port 443 \ --mysql_port 33861 \ --subversion_port 36901 \ --installer-language en $ /opt/staging/ctlscript.sh stop
サブredmineのインストール(/opt/dev)
3つ目をインストールします。
$ ./bitnami-redmine-2.4.3-0-linux-x64-installer.run \ --prefix /opt/dev \ --apache_server_port 80 \ --apache_server_ssl_port 443 \ --mysql_port 33862 \ --subversion_port 36902 \ --installer-language en $ /opt/dev/ctlscript.sh stop
設定方法
サブredmineのapacheを起動しないようにします。
$ ls -l /opt/{staging,dev}/apache2/scripts/ctl.sh -rwxr-xr-x 1 root root 2475 Feb 15 16:51 /opt/dev/apache2/scripts/ctl.sh -rwxr-xr-x 1 root root 2491 Feb 15 16:47 /opt/staging/apache2/scripts/ctl.sh $ mv /opt/dev/apache2/scripts/ctl.sh /opt/dev/apache2/scripts/ctl.sh.backup $ mv /opt/staging/apache2/scripts/ctl.sh /opt/staging/apache2/scripts/ctl.sh.backup
メインredmineとサブredmineのサブディレクトリ名を変更
http://example/redmine -> http://example/release のようなURLでアクセス出来るようにします。修正は以下のように。
$ vim /opt/release/apps/redmine/conf/httpd-app.conf <Directory "/opt/release/apps/redmine/htdocs/public"> PassengerEnabled on Options -MultiViews AllowOverride All <IfVersion < 2.3 > Order allow,deny Allow from all </IfVersion> <IfVersion >= 2.3> Require all granted </IfVersion> #SetEnv RAILS_RELATIVE_URL_ROOT "/redmine" SetEnv RAILS_RELATIVE_URL_ROOT "/release" PassengerAppRoot "/opt/release/apps/redmine/htdocs" <IfModule pagespeed_module> ModPagespeedDisallow "*" </IfModule> </Directory> #PassengerPreStart http://127.0.0.1:80/redmine PassengerPreStart http://127.0.0.1:80/release
面倒なのでsedで編集すると楽です。
$ sed -i -e "s@\"/redmine\"@\"/release\"@g" -e "s@80/redmine@80/release@g" /opt/release/apps/redmine/conf/httpd-app.conf $ sed -i -e "s@\"/redmine\"@\"/staging\"@g" -e "s@80/redmine@80/staging@g" /opt/staging/apps/redmine/conf/httpd-app.conf $ sed -i -e "s@\"/redmine\"@\"/dev\"@g" -e "s@80/redmine@80/dev@g" /opt/dev/apps/redmine/conf/httpd-app.conf
Aliaseの設定を変更
$ vim /opt/release/apps/redmine/conf/httpd-prefix.conf #Alias /redmine/ "/opt/release/apps/redmine/htdocs/public/" #Alias /redmine "/opt/release/apps/redmine/htdocs/public" Alias /release/ "/opt/release/apps/redmine/htdocs/public/" Alias /release "/opt/release/apps/redmine/htdocs/public" Include "/opt/release/apps/redmine/conf/httpd-app.conf"
これも面倒なのでsedで編集すると楽です。
$ ls -l /opt/*/apps/redmine/conf/httpd-prefix.conf -rw-r--r-- 1 root daemon 161 Feb 15 16:56 /opt/dev/apps/redmine/conf/httpd-prefix.conf -rw-r--r-- 1 root daemon 173 Feb 15 16:48 /opt/release/apps/redmine/conf/httpd-prefix.conf -rw-r--r-- 1 root daemon 173 Feb 15 16:52 /opt/staging/apps/redmine/conf/httpd-prefix.conf $ sed -i -e "s@Alias /redmine@Alias /release@g" /opt/release/apps/redmine/conf/httpd-prefix.conf $ sed -i -e "s@Alias /redmine@Alias /staging@g" /opt/staging/apps/redmine/conf/httpd-prefix.conf $ sed -i -e "s@Alias /redmine@Alias /dev@g" /opt/dev/apps/redmine/conf/httpd-prefix.conf
Includでconfを統合
メインredmineのbitnami-apps-prefix.confでサブredmineのconfをincludeします。
$ vim /opt/release/apache2/conf/bitnami/bitnami-apps-prefix.conf # Bitnami applications installed in a prefix URL Include "/opt/release/apps/phpmyadmin/conf/httpd-prefix.conf" Include "/opt/release/apps/redmine/conf/httpd-prefix.conf" # add Include "/opt/staging/apps/redmine/conf/httpd-prefix.conf" Include "/opt/dev/apps/redmine/conf/httpd-prefix.conf"
redmineを起動
サブredmineから起動します。
$ /opt/staging/ctlscript.sh start $ /opt/dev/ctlscript.sh start $ /opt/release/ctlscript.sh start
アウトバンド管理 (Out-of-band Management)のメモ
アウトバンド管理というのが一般的なのか、リモートKVMスイッチというのが一般的なのかわからないけど、今まではHPのiLOシリーズを使っていたけど、DELLやCISCOにも似たようなのがあるんだな、ということでメモをしておきます。
アウトバンド管理って何よ?
ハードウェアに組み込まれたリモートアクセスコントローラーです。大手のサーバーベンダーではLAN経由でアクセスすることが多いです。リモートから、BIOS/EFIを変更、リブート、仮想DVDでISOをマウントしてOSをインストール、インベントリ情報取得など、遠隔操作で色々できます。
Hewlett-Packard
HP Integrated Lights-Out (iLO)
http://h50146.www5.hp.com/products/servers/proliant/essentials/ilo-adv_sh.html
アイロと読みます。たまに業者さんがエルアイオーと言う時がありますが、どっちでもいい気がします。
CISCO
Cisco Integrated Management Controller (CIMC)
http://www.cisco.com/web/JP/campaign/123_ucsc/management.html
シスコのユニファイドコンピューティングシステムに搭載されているやつですね。
DELL
Integrated Dell Remote Access Controller (iDRAC)
http://www.dell.com/learn/jp/ja/jpbsd1/campaigns/dell-poweredge-idrac6
アイドラックと読むことが多いです。
IBM/Lenovo
Integrated Management Module (IMM)
http://www-06.ibm.com/jp/domino04/pc/support/Sylphd07.nsf/jtechinfo/SYJ0-0183244
使ったことがないのでよくわからない。
Fujitsu
Remote Management Controller (iRMC)
http://jp.fujitsu.com/platform/server/primergy/svs/pdf/maintain04-irmc-setting.pdf
これも使ったことがない。さくらの専用サーバはこれみたい。
TWINBIRD サイクロンスティック型クリーナー TC-E117W
TWINBIRD サイクロンスティック型クリーナー ホワイト TC-E117W というのを購入しました。
実家用にたまに使う掃除機だから3,130円の掃除機をチョイス。
2014年1月1日の朝3時ぐらいにポチって1月2日の午前中に届きました。いい時代になりましたよ。
TWINBIRD サイクロンスティック型クリーナー ホワイト TC-E117W
- 出版社/メーカー: ツインバード
- 発売日: 2010/09/10
- メディア: ホーム&キッチン
- 購入: 7人 クリック: 24回
- この商品を含むブログ (1件) を見る
組み立ては説明書はまったく必要ないぐらい簡単です。
コードレスじゃないのでコードが鬱陶しいです。ヘッドもあまり快適な動きじゃないです。
でも値段から考えると十分だと思います。吸引力はそこそこあるし、スティック型なので、隅に置いておけば邪魔にならないです。少し掃除したところ結構なゴミが。写真じゃわかりにくいけど、3000円程度にしてはよいお買い物だと思います。
xeコマンドが失敗する場合
Unhandled exception File "stunnel.ml", line 138, characters 20-25: Pattern matching failed
こんなエラーが出る場合は
$ yum install stunnel
インストールしてあげてください。
俺的に最強のクリップボード履歴とメモツール
Windows/Office武勇伝 <Surface Proが当たる! 開発者グループOPENキャンペーン>
競馬の予想ソフトが欲しくて、VAIO PCV-T510R というやつを買ったのがWindowsとの初対面でした。Windows98は本当に脆いOSで結構泣かされました。いまはSurface Proが欲しいので自分の使っているWindowsツールを紹介します。
はたくり + EvMEMO
この2つの組み合わせが最強です。いくつか最強な理由を述べていきます。
はたくり
クリップボード履歴です。viキーバインドが使えます。これは強い。履歴を "j" で移動して "yy" でヤンクや、いらない履歴を "dG" で全部消したりできます。香り屋さんのvimのバッファを使いつつ、はたくりでWindowsのクリップボードを駆使すると、もうコピーペーストだけしかしていない気分になれます。
また、はたくりは、ctrl-qで表示して、Escでタスクトレイに隠れてくれます。左手だけで完結します。
EvMEMO
ただのシンプルなメモツールです。これの強みはalt-zで表示して、Escでタスクトレイに隠れると同時に保存してくれるところです。*1はたくり、EvMEMO、どちらもEscで閉じることができるのは嬉しいです。
理由を色々つけましたが、結局は慣れたツールが一番ですね。
*1:設定でescで閉じるにチェックを入れる必要があります
rubyでQRコード生成
ライブラリはたくさんあって何を使えばいいのやら。いくつか試して良さそうなものを。
rqrcode
インストール
rqrcodeとrqrcode_pngは一緒にいれると便利。
$ gem install rqrcode $ gem install rqrcode_png
require 'rubygems' require 'rqrcode' require 'rqrcode_png' qr = RQRCode::QRCode.new('hoge', :size => 4, :level => :h ) png = qr.to_img #png.resize(90,90).save("hoge0.png") png.save("hoge0.png")
barby
インストール
ネーミングセンスいいですよね。QRコードだけでなく一次元コード(バーコード)も色々できたり。
require 'rubygems' require 'barby' require 'barby/barcode/qr_code' require 'barby/outputter/png_outputter' qr = Barby::QrCode.new('hoge', { :size => 4, :level => :h }) File.open('hoge1.png', 'w'){|f| f.write qr.to_png }
やりたかったこと
QRコードで資産データシールを作りたいだけなんですね。
require 'rubygems' require 'fileutils' require 'RMagick' require 'rqrcode' require 'rqrcode_png' text = "hoge" qrimage = text + "-tmp.png" width, height = 100, 100 qr = RQRCode::QRCode.new(text, :size => 4, :level => :h ) png = qr.to_img png.resize(width, height).save(qrimage) height += 20 # margin image = Magick::Image.read(qrimage).first image = image.change_geometry("#{width}x#{height}") do |cols,rows,img| img.resize!(cols, rows) img.background_color = 'white' img.extent(width, height) end draw = Magick::Draw.new draw.annotate(image, 0, 0, width / 2 , 110, "id: #{text}") do self.fill = '#000000' self.align = Magick::LeftAlign self.stroke = 'transparent' self.pointsize = 10 self.text_antialias = true self.kerning = 1 end image.write(text + ".png") FileUtils.rm(qrimage, {:force => true})
やっつけ感が拭いきれませんが、とりあえず目的は達成できました。時間があるときにrqrcodeやRMagickをもっと掘り下げて見たいと思います。