「巷で人気?のプログラミング言語」をひと通りインストールした プログラマのためのホスティングサービス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 [email protected]
rails new hoge
cd hoge ; rails s
簡単ですね。 ここで、ユーザ環境にインストールされているいくつかのプログラミング言語についてお話しします。
- python
- perl
- nodejs
- ruby
これらの言語が /home/rackhuber 以下にインストールされてます。 この辺も最近はやりのバージョン管理システム(gitとかじゃないよ)とよばれる、複数のバージョンを切り替えてプログラミング環境を使い分けられるシステムが導入されています。
- pythobrew
- perlbrew
- nvm
- rvm
各バージョン管理システムの使い方とそこにインストール済みのプログラミング言語を見て行きましょう。
list
とswitch
をまず覚えておきましょう!
あと、何がどこに入っているかわからないときは、とりあえず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
rackhuber@sowawa2:~$ perlbrew list
* perl-5.12.4
perl-5.14.2
rackhuber@sowawa2:~$ perlbrew switch perl-5.12.4
Pythonbrewと同じようにlist
とswitch
を使うことで一覧と切り替えを行うことができます。
Perl環境ではcpanm
もインストールされています。インストール済みのものを列挙すると大変なので代表的な物をあげるとNet::SSLeayやNet::Twitterがインストールされています。
( Special thanks @kyoro353)
みんな大好きrvmの説明は省略。ぐぐってください。
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ディレクトリの中身のシンボリックリンクを配置します。
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
sudo memcached -u nobody -d -m 16 -l 127.0.0.1
止めるときはkill
しましょう
pgrep -f 'memcached' | sudo xargs kill
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
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_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)
rackhuber@sowawa2:~/hoge$ erl
1> init:stop().
D言語はStow配下ではなくDigital Marsから配布されているdeb packageによりインストールされています。
dmd
sudo passwd rackhuber
Enter new password >
mongodもはいってるわ。