2014-06-30
2014-05-20
■[OSv][Mac][mruby]Macでもmruby-simplehttpserverをcapstanを使ってお手軽簡単にOSv向けにビルド&実行
前回の記事ではLinuxに絞ってcapstanを使ったmruby on OSvのビルド&実行方法を紹介しましたが、アプリケーションのコンパイルが他プラットフォームでは出来ないと説明しました。
代わりに、github上にビルド済みのアプリケーションバイナリを置いて、OS Xでcapstanを使ってOSvのイメージを作成&実行することに成功したので、これを紹介します。
brewで必要になるアプリをインストール
brew install go qemu git
環境変数を設定
echo 'export GOPATH=$HOME/go' >> $HOME/.profile echo 'export PATH=$PATH:$GOPATH/bin' >> $HOME/.profile source $HOME/.profile
VirtualBoxをインストール
Downloads ? Oracle VM VirtualBox
capstanをインストール
go get github.com/cloudius-systems/capstan
mruby-simplehttpserver用のcapstanリポジトリをチェックアウト
git clone -b prebuilt https://github.com/syuu1228/capstan-mruby-simplehttpserver.git
リポジトリのビルド
QEMUのウインドウが一時的に表示されることがあるようですが、特に触らなくて問題ありません。
cd capstan-mruby-simplehttpserver
capstan build
VMの実行(VM上のポート番号80をホスト上のポート番号10080へ転送)
ハイパーバイザを指定しない場合VirtualBoxが用いられますが、正常に動作するようです。
capstan run -f 10080:80
http serverへのアクセステスト
curl http://127.0.0.1:10080/html -v * About to connect() to 127.0.0.1 port 10080 (#0) * Trying 127.0.0.1... * Adding handle: conn: 0xd0d8f0 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0xd0d8f0) send_pipe: 1, recv_pipe: 0 * Connected to 127.0.0.1 (127.0.0.1) port 10080 (#0) > GET /html HTTP/1.1 > User-Agent: curl/7.32.0 > Host: 127.0.0.1:10080 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: my-mruby-simplehttpserver < Date: Mon, 19 May 2014 17:57:13 GMT < Content-Type: text/html; charset=utf-8 < Content-Length: 28 < <H1>Hello mruby World.</H1> * Closing connection 0
2014-05-19
■[OSv][mruby]matsumotory氏のmruby-simplehttpserverをcapstanを使ってお手軽簡単にOSv向けにビルド&実行する
OSvは最近capstanというビルド・デプロイツールが出来たので、以前のようにOSをビルドしなくてもアプリだけビルドしてVMイメージ作成&実行が簡単にできます。
ここでは、@matsumotory氏がブログで解説されていたmruby-simplehttpserver用のcapstanリポジトリを作成してみたので、インストール&実行方法を紹介します。
バイナリディストリビューションのインストール&実行はWindows・Mac・Linuxに対応していますが、今のところソースコードからアプリをビルドするにはLinuxが必要(公式対応ディストリはFedora 20)なので、以下の手順はFedora 20を使って説明します。
なお、この記事ではcapstan用リポジトリの作り方について詳しい解説をしていませんが、こちらにビルド設定定義ファイル「Capstanfile」のドキュメントがあるので、興味があれば読んでみて下さい。
GoとQEMUとgitをインストール
wget http://go.googlecode.com/files/go1.2.1.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.2.1.linux-amd64.tar.gz sudo yum install qemu-system-x86 git
.bashrcに環境変数を追加
export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
capstanをインストール
go get github.com/cloudius-systems/capstan
mruby-simplehttpserver用のcapstanリポジトリをチェックアウト
git clone https://github.com/syuu1228/capstan-mruby-simplehttpserver.git
リポジトリのビルド
cd capstan-mruby-simplehttpserver
capstan build
VMの実行(VM上のポート番号80をホスト上のポート番号10080へ転送)
capstan run -f 10080:80
http serverへのアクセステスト
curl http://127.0.0.1:10080/html -v * About to connect() to 127.0.0.1 port 10080 (#0) * Trying 127.0.0.1... * Adding handle: conn: 0xd0d8f0 * Adding handle: send: 0 * Adding handle: recv: 0 * Curl_addHandleToPipeline: length: 1 * - Conn 0 (0xd0d8f0) send_pipe: 1, recv_pipe: 0 * Connected to 127.0.0.1 (127.0.0.1) port 10080 (#0) > GET /html HTTP/1.1 > User-Agent: curl/7.32.0 > Host: 127.0.0.1:10080 > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Server: my-mruby-simplehttpserver < Date: Mon, 19 May 2014 17:57:13 GMT < Content-Type: text/html; charset=utf-8 < Content-Length: 28 < <H1>Hello mruby World.</H1> * Closing connection 0
2014-04-28
■[mikutter][linux]Linux上のmikutterでリンクをクリックしたら別のLinux上のブラウザで表示する方法
Linux上のmikutterでリンクをクリックしたらMac上のブラウザで表示する方法 - かーねる・う゛いえむにっきの続きですが、「いや、おれMacとか使ってねぇし?不自由なOSユーザー氏ね!」みたいな声が聞こえてくる気がする*1ので、Linuxでも出来るかどうか考えてみました。
で、なんか10秒くらい考えた結果、出来そうなのでここに書いておきます。
基本的な設定は前回の記事と全く同じなのでそちらを参照して下さい。
シェルスクリプトだけ違うものを使います。
cat > open <<EOS #!/bin/sh ssh teokure.local env DISPLAY=:0.0 xdg-open $* EOS chmod +rx open
あんまりしっかり試してないけど多分これで大丈夫
*1:完全な被害妄想
2014-04-25
■[mikutter][Mac][linux]Linux上のmikutterでリンクをクリックしたらMac上のブラウザで表示する方法
VM上のLinuxでmikutterを動かしてたり、synergyで2台のPCを並べて使ってたりする場合に、TwitterだけLinuxのmikutterで眺めてWebはMacで見たい場合ってありませんか。僕はあります。
そんな時、SSHを使えば割と簡単に実現出来ます。
MacのSSHサーバを有効化
Linuxにmulticast DNSを設定
FedoraやUbuntuのようなお手軽ディストリなら設定済みです。
GentooやArchやDebianの人はこのへんを見て設定して下さい。
ここでmulticast DNSを敢えて使用するのは、DHCPでMacのIPアドレスが変更されたり、VMのネットワーク設定が変わってホスト側のMacのIPアドレスが変わって見えたりしたときにもIPアドレスを自動的に解決する方法として適しているからです。
必要なければIP直打ちでも以下の設定をおこなう事が出来ます。
SSH公開鍵認証を設定
Linux側でパスフレーズの無いSSH鍵を作成し、Mac側の~/.ssh/authorized_keysに追加しておいてパスワード・パスフレーズ無しでMacへログインできるようにしておきます。
ssh-keygen -t dsa scp ~/.ssh/id_dsa.pub syuu-no-MacBook-Pro.local:~/
- Mac側
mkdir .ssh cat id_dsa.pub >> .ssh/authorized_keys
シェルスクリプトを作る
cat > open <<EOS #!/bin/sh ssh syuu-no-MacBook-Pro.local open $* EOS chmod +rx open
試しに叩いてブラウザが上がってくるかみてみます
~/open http://www.google.com
mikutterに設定する
/home/syuu/open
などと書き込んでおけば、次からブラウザではなくて上述のシェルスクリプトが実行されて何故かMacでブラウザが立ち上がるようになります(ホームディレクトリのパスは各自チェックして下さい)。
応用
mikutterではなくデスクトップ環境のデフォルトブラウザにopenを指定すれば別のアプリでリンクを踏んでもMacでブラウザが立ち上がります。
また、ファイルをscpしてからopenをMacで実行する所までをシェルスクリプト化すれば、コマンドラインで指定したファイルをMacで開くことが出来ます(Macのopenコマンド自体はURLを開くためのコマンドではなく、URLやファイルを引数に与えてデフォルト設定のアプリケーションで開くためのコマンドです。詳しくはmanを見てね)。
おやくそく
SSHサーバを起動したりパスフレーズなし鍵認証を設定したりとセキュリティが緩くなる方向に設定を変更してるので、ファイヤウォールで必要ないIPは弾くとかSSHの設定を厳しくするなどして穴を広げない方向でお使い下さい。