高機能で高速なウェブサーバ!?cherokee

cherokeeってのを見かけたのでメモ。
nginxよりも高速だとかなんとか。

Cherokee Web Server

インストール

ubuntuあたりだとPPAリポジトリ追加すると簡単にインストールできるみたいです。
ソースからインストールする場合は、ここのSource code archiveからダウンロードします。
ここをみると、MacOSX用のdmgもあるけど試してません。
ソースからコンパイルしてインストール
デフォルトだと/usr/local/以下にインストール

ウェブサーバー

/usr/local/sbin/cherokee
設定ファイルは /usr/local/etc/cherokee/cherokee.conf

ポート80が他で使われている場合は、以下を適当なポートに変更する。
server!bind!1!port = 80

管理画面

これが便利
/usr/local/sbin/cherokee-admin
起動すると、admin用のサーバーが起動されワンタイムパスワードが発行される。
cherokee-adminに指定されたアドレスにアクセスすると管理画面が表示される。
appsからwordpressなどメジャーなのを管理画面からインストールできちゃう。
レンタルサーバーみたい。
pythonでできてる。

macへのインストール+adminからdrupalインストール動画

dotcloudでサクっとpython/flask/mongodbデプロイ

久しぶりに楽しそうなのがあったので更新です。
dotcloudというherokuの色々な言語版みたいなもんです。DBまで色々使えます。
private beta中みたいです。登録しとけばそのうちメールくると思います。

DotCloud

試しにpython、flaskで動かしてみました。

[bash]
mkvirtualenv –python=/opt/local/bin/python2.7 py27dev
pip install dotcloud
dotcloud
# (API Key入力)
dotcloud create plansettest
dotcloud deploy -t python plansettest.www

# flaskでお試し作成
mkdir plansettest
cd plansettest
pip install flask
vi wsgi.py
pip freeze > requirements.txt

dotcloud push plansettest.www .
[/bash]

wsgi.py
[python]
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"

if __name__ == "__main__":
app.run()

application = app
[/python]

これで http://www.plansettest.dotcloud.com/ デプロイ完了。動いてくれます。
らくちんー!

ついでにmongodbも。

[bash]
dotcloud deploy -t mongodb plansettest.mongo
dotcloud info plansettest.mongo
# config: mongodb_password: のパスワードをコピる。
# あと、サーバー名とポートもあるのでメモっとく。mongodb://root:なんちゃら〜の方ね。
dotcloud run plansettest.mongo mongo
# 3回くらい失敗?した。シェルになるまでがんばる。
> use test
> db.getSisterDB("admin").auth("root", "コピったパスワード");
> db.message.save({"message":"uho"});
> db.message.find()
> db.addUser("username","password");
> exit

pip install pymongo
pip freeze > requirements.txt
vi wsgi.py
[/bash]

wsgi.py
[python]
from flask import Flask, g, abort, redirect, url_for
app = Flask(__name__)

from pymongo import Connection

def connect_db():
try:
connection = Connection("mongo.plansettest.dotcloud.com", 6477)
return connection["test"]
except:
return None

@app.before_request
def before_request():
g.db = connect_db() or abort(500)
g.db.authenticate("username", "password")

@app.route("/")
def hello():
messages = ""
for item in g.db.message.find(limit=10):
messages += item["message"] + "n"
return "Hello World!" + "n" + messages

@app.route("/say/<message>")
def say(message=""):
g.db.message.save({"message": message})
return redirect(url_for("hello"))

if __name__ == "__main__":
app.run()

application = app

[/python]

これでmongodbを使って簡単にデプロイー!