Skip to content

Instantly share code, notes, and snippets.

@sowawa
Created April 25, 2012 17:14
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save sowawa/2491414 to your computer and use it in GitHub Desktop.
Save sowawa/2491414 to your computer and use it in GitHub Desktop.
Rackhub 2nd generation

Gist一枚でわかる、Rackhub 2nd generation!

「巷で人気?のプログラミング言語」をひと通りインストールした プログラマのためのホスティングサービスRackhubの環境の新バージョンをリリースしました。

前回からいくつかのアーキテクチャの変更を行い、より使いやすくて安定した環境をお手軽に使えるようになりました。 大きな変更は、これまではコンテナ型仮想化を使っていましたが KVMによるフルバーチャライズド環境になりました。 KVM自体は、もうめずらしくもなんともない技術なので特筆することはとくにないと思うのですが、コンテナ型環境の抱える問題との決別をという意味では、良い変更になったのではないかと思います。 次に、ベースのOSをDebian Squeeze ベースからUbuntu12.04LTSへと変更しました。こちらもプログラミングをする上で大きな意味を持つわけではないのですが、いち早く12.04LTSを使ってプログラミングができる環境を用意したかったということです。 コンテナ型からKVMに変更するにあたって、ネットワークも変更しました。Openflowベースの仮想スイッチを使うことでRack間でのセキュリティ問題やトラフィック制御をより柔軟に行うことができるようになりました。

また、前回から導入していた、スタック型のファイルシステムであるAUFSを使った実装はそのままにしています。通常のファイルシステムではインストールされているプログラミング言語が増えるとユーザのDisk領域を消費することになるのですが、Rackhubではユーザ領域と構築済みの環境の領域は完全に分離されており、ユーザはユーザ領域と構築済み環境の領域を透過的に取り扱うことができ、豊富なプログラミング言語の環境をユーザの領域を消費することなく利用することができます。

構築済みの環境のプログラミング言語のバージョンアップや新しいプログラミング言語の追加はRackhubが定期的にメンテナンスを行なって追加していくのでいつでも新しいバージョンのプログラミング言語に出会えます。

みんなが大好きなプログラミングを思う存分楽しめて、 手軽に友達を呼んでコラボレーションもしちゃいましょう。

使い方

とりあえずログインしよう!

ssh sowawa2.rackbox.net -l rackhuber -A

いつもどおりSSHするだけですね。 次はみんなが大好きRailsを動かします。

rvm 1.9.2@rails-3.2
rails new hoge
cd hoge ; rails s

簡単ですね。 ここで、ユーザ環境にインストールされているいくつかのプログラミング言語についてお話しします。

  • python
  • perl
  • nodejs
  • ruby

これらの言語が /home/rackhuber 以下にインストールされてます。 この辺も最近はやりのバージョン管理システム(gitとかじゃないよ)とよばれる、複数のバージョンを切り替えてプログラミング環境を使い分けられるシステムが導入されています。

  • pythobrew
  • perlbrew
  • nvm
  • rvm

各バージョン管理システムの使い方とそこにインストール済みのプログラミング言語を見て行きましょう。

ptyhonbrew

listswitchをまず覚えておきましょう! あと、何がどこに入っているかわからないときは、とりあえずwhich python等と唱えてどこにあるのか確認してみましょう。

rackhuber@sowawa2:~$ pythonbrew list
# pythonbrew pythons
  Python-2.7.3 (*)
  Python-3.2.3
rackhuber@sowawa2:~$ which python
/home/rackhuber/.pythonbrew/pythons/Python-2.7.3/bin/python
rackhuber@sowawa2:~$ pythonbrew switch 3.2.3
Switched to Python-3.2.3

perlbrew

rackhuber@sowawa2:~$ perlbrew list
* perl-5.12.4
  perl-5.14.2
rackhuber@sowawa2:~$ perlbrew switch perl-5.12.4

Pythonbrewと同じようにlistswitchを使うことで一覧と切り替えを行うことができます。

Perl環境ではcpanmもインストールされています。インストール済みのものを列挙すると大変なので代表的な物をあげるとNet::SSLeayやNet::Twitterがインストールされています。 ( Special thanks @kyoro353)

rvm

みんな大好きrvmの説明は省略。ぐぐってください。

nvm

rackhuber@sowawa2:~$ nvm ls
   v0.6.15	    v0.7.8
current: 	v0.6.15
default -> 0.6 (-> v0.6.15)
rackhuber@sowawa2:~$ nvm use v0.7.8
Now using node v0.7.8

lsで一覧表示を行い、 useでバージョンを選択します nodejsは2012/4/26現在、0.6.xがstable、0.7.xがdev版です。 nodejsにはnpmと呼ばれるパッケージ管理システムがあるのでこれも使いましょう。

他の言語とデータストア

rackhubにはJava、Erlangがインストールされています。 これらは/usr/local以下にインストールされています。 インストール後のファイルのシンボリックリンクの管理にStowと呼ばれるパッケージ管理機構を用いています。 Stowは下記のようにStow管理下に置きたいフォルダを指定します。

Stow hogehoge-2.3.2

するとStowが/binや/sbinなどにhogehoge-2.3.2以下のbinやsbinディレクトリの中身のシンボリックリンクを配置します。

Mysql

sudo /usr/local/mysql/mysql.server start
sudo /usr/local/mysql/mysql.server stop
sudo vim /usr/local/mysql/my.cnf

データベースを初期化するには、

sudo rm -rf /usr/local/mysql/data
sudo mkdir /usr/local/mysql/data
# set up mysql
sudo /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
# chmod mysql
sudo chown -R mysql:mysql /usr/local/mysql
sudo /usr/local/mysql/mysql.server start
# set mysql password
sudo /usr/local/mysql/bin/mysqladmin -u root password 'loverackhub'
# restart mysql
sudo /etc/init.d/mysql.server restart

memcached

sudo memcached -u nobody -d -m 16 -l 127.0.0.1

止めるときはkillしましょう

pgrep -f 'memcached' | sudo xargs kill

apache

sudo apachectl start
sudo apachectl stop
  • conf /usr/local/httpd/conf/httpd.conf
  • conf.d /usr/local/httpd/conf/conf.d/*
  • docroot /usr/local/httpd/htdocs

nginx

sudo nginx
sudo nginx -s stop
  • conf /usr/local/nginx/nginx.conf
  • conf.d /usr/local/nginx/conf.d/*
  • docroot /usr/local/nginx/html

JAVA

JAVA_HOMEは以下に設定済みです。

rackhuber@sowawa2:~/hoge$ echo $JAVA_HOME
/usr/local/jdk
rackhuber@sowawa2:~$ java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

Erlang

rackhuber@sowawa2:~/hoge$ erl
1> init:stop().

Dlang

D言語はStow配下ではなくDigital Marsから配布されているdeb packageによりインストールされています。

dmd

パスワード変更する

sudo passwd rackhuber
Enter new password > 
@sowawa
Copy link
Author

sowawa commented Apr 25, 2012

mongodもはいってるわ。

@Sixeight
Copy link

cool

@yasulab
Copy link

yasulab commented Apr 26, 2012

awesome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment