Pythonのダウングレード

RESTFUL APIで、OAUTHを使おうとしたらエラーが出た

[Errno 13] file not accessible: '/usr/local/lib/python2.6/dist-packages/oauth-1.0.1-py2.6.egg' 

どうやらGoogleAppEnginePythonのバージョンが違うらしい
ubuntuデフォルトは2.6、GoogleAppEngineの要求は2.5

ダウングレード作業

ここでは2.6を消して2.5をソースからインストールする

削除
$ sudo apt-get remove python
インストール準備
$ sudo apt-get install  zlib1g-dev
$ sudo apt-get install libssl-dev
$ sudo apt-get install make
$ sudo apt-get install gcc

Pythonをインストールに必要なものをインストール

Python2.5.2設定
$ wget http://www.python.org/ftp/python/2.5.2/Python-2.5.2.tar.bz2
$ bzip2 -dc Python-2.5.2.tar.bz2 | tar xvf - 
$ cd Python-2.5.2/
$ ./configure 
$ emacs Modules/Setup
SSL=/usr/local/ssl
_ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto

zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz

Ubuntuでbz2を解凍したい場合は上記で。
また、sslとzlibを使うために作成されたSetup内の幾つかのコメントを外す

Python2.5.2インストール
$ make
$ sudo make install
ライブラリインストール
$ cd
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python ez_setup.py 
$ sudo easy_install oauth

ライブラリを追加したらGAEは再起動しよう
oauthがエラー無くインポートされて完了
あとで気付いたんだけど、GAEだとこのoauthは使えないので不要だった

雑記

別の手段

ダウングレード以外の方法もあった

Ubuntuにはデフォルトで対応していない

  • /home/hoge/ に個別にインストールする

これは気づいたときにはあとの祭りだった
./configure 時にprefix引数を設定する
まぁ他に使う人が居るわけじゃないし、という言い訳で次の機会があったらそうしよう

感想

2.6でもテストコードは動いていたので勘違いして進めていたなぁ

作業時に出たエラー

列挙しとく
zipimport.ZipImportError: can't decompress data; zlib not available
AttributeError: 'module' object has no attribute 'HTTPSHandler'
configure: error: no acceptable C compiler found in $PATH
make: *** [Modules/zlibmodule.o] エラー 1

GoogleAppEngine

インフラは強力且つ低コストなGoogleAppEngineにする

Googleにアプリケーション登録

Google App Engine
この辺りからナヴィゲーションに従って作業

SDK インストール

開発環境をテスト機にインストール
OSはlinux

$ wget http://googleappengine.googlecode.com/files/google_appengine_1.2.8.zip
$ tar zxvf google_appengine_1.2.8.zip
$ mkdir /var/www/gae

ファイルDL、解凍。作業ディレクトリ作成 (任意、ここでは/var/www/gae/)


アプリケーション作成

作成したファイル
  • app.yaml
    • GoogleAppEngineが読み込む定義書
  • index.yaml
    • GoogleAppEngineのデータベース定義書
  • 任意名.py
  • 任意名.html
  • ガジェット.xml(mixi用)
    • Mixi側が読み込む定義書

の5ファイルを作った
ちなみに後で追加したJavaScript, Flash辺りもちゃんと動いた

作成内容

省略する
Google App Engineを利用してmixiアプリを作成する
がとても参考になる

動作確認
$ sudo ~/google_appengine/dev_appserver.py -a 0.0.0.0 /var/www/gae/ >/dev/null 2>&1 &

開発サーバ起動する
"-a" に0.0.0.0を入れると、アクセス時のホスト名やIPを制限しない
>/dev/null 2>&1 & はバックグラウンドで動かしながらログはすべて捨てる

止めたい場合は
pa axでプロセス番号確認して、kill プロセス番号

起動後アクセスして動作を確認

アップロード

$ ./appcfg.py update /var/www/gae/
Email:
Password for メアド: 
Cloning 4 static files.

アプリケーションIDとパスワードを聞かれる
入力後アップロード開始

mixiアプリを作る

軽い気持ちでMixiアプリを作ってみる

まずはアプリを登録

  1. Mixiにログイン
  2. アプリ をクリック
  3. アプリを作ろう をクリック
  4. アプリケーション登録 をクリック
  5. 必須項目を記入して作成!

これで完了

データがありません。

初回に登録したときに混雑でもしていたのか、「データがありません。」と表示された
なにも考えずに、ブラウザの戻るで戻ってもう一度作成を押して見ると、
同じアプリが2つ出来てしまった
そりゃそうだ
一つは直ぐに消した

DDNS設定

DDNSサービスに登録し、そのサービス専用のIP更新スクリプトをcronで動かす
サービスはいくつかあるが、ここではieServerを使う

登録

以下のURLで登録
http://ieserver.net/

スクリプト設置、設定

IP自動更新のための作業

スクリプトダウンロード

http://ieserver.net/ddns-update.txt
をDL
ホームディレクトリにddns-update.plという名前で設置する

スクリプト設置、編集

ディレクトリ名は任意

mkdir ディレクトリ名
mv ddns-update.pl ディレクトリ名
sudo vim ディレクトリ名/ddns-update.pl 

以下の部分を編集、各内容は登録時のもの

$ACCOUNT         = "アカウント名";
$DOMAIN          = "ドメイン名";
$PASSWORD        = "パスワード";
cron設定

権限設定し、5分おきにスクリプトを実行する
ubuntuの場合、cron編集ツールを選ばされるようで、GNU nanoを使ってみた
画面下に表示されるガイダンスを見ながら、Ctrl+キーで保存などが行える

chmod 755 ディレクトリ名/ddns-update.pl 
crontab -e

以下編集内容

5,15,25,35,45,55 * * * * /home/ユーザ名/ディレクトリ名/ddns-update.pl
cron動作チェック
tail /var/log/syslog

全体の動作確認が出来てるのか、少し怪しいな

DiCEが動かない

以前から使っているDDNS設定ツールDiCEを使おうとしたが以下の問題があり、旨く動かなかった

  1. 64bit環境なので32bit向けバイナリが実行できない問題
  2. グローバルIP取得の際に127.0.0.1とループバックIPを取得してしまう問題

上記はia32-libsをインストールして解決
2番目の問題が発生した時点で、めんどうになったので諦めた
ちなみにDiCEが動かないっていうのはCentOSでも経験済み

mumbleサーバlinux版インストール、設定

現在一番ナイスだと思われるボイスチャット
無料、人数制限なし、高品質

  • 他のボイチャとの優位点
    • skypeの人数制限(無料だと5人まで、らしい)
    • ventriloのライセンス縛り
    • TeamSpeakに比べて音質と遅延速度

安定しないって言う話もあるけど、いまのところ使ってる人の中では問題なし

aptリポジトリ設定変更

そのままだとネットワークインストール出来ないので設定を追加する

sudo vim /etc/apt/sources.list

以下を最終行に追加

deb http://ppa.launchpad.net/slicer/ubuntu hardy main
deb-src http://ppa.launchpad.net/slicer/ubuntu hardy main

mumbleサーバインストール

GPGキーの設定後にインストール

sudo gpg --recv-key --keyserver wwwkeys.eu.pgp.net DE62F7B1165B2836
sudo gpg --export DE62F7B1165B2836 | sudo apt-key add -
sudo apt-get update
sudo apt-get install mumble-server

設定変更

sudo vim /etc/mumble-server.ini

パスワードは任意

serverpassword=パスワード

スーパーユーザ作成

どうもSuperUserの設定が旨く行かなかったので
権限を持つユーザを作成して代用する

sqlite3をインストール
sudo apt-get install sqlite3
権限を持つユーザ作成

データベースを編集して権限のあるユーザを作成する
ユーザ名とパスワードは任意

sudo sqlite3 /var/lib/mumble-server/mumble-server.sqlite
sqlite> insert into players (server_id, player_id, name, email, pw) values(1, 1, 'ユーザ名', '', 'パスワード');
sqlite> .exit

ここで追記したユーザでクライアントからログインすれば権限を行使できる
クライアントのインストール、設定はここでは書かない

再起動

多分不要だけど再起動

sudo /etc/init.d/networking restart

sambaインストール、設定

ファイル共有サーバ
設定ファイルを送ったりするのに便利なので入れとく

インストール

ubuntu初期設定時に済み

ユーザ作成

ユーザ名はubuntuのユーザ名とする

 sudo smbpasswd -a ユーザ名

次にパスワードを2回入力したら完了

設定変更

sudo vim /etc/samba/smb.conf

以下編集内容
ワークグループ名は任意

workgroup = ワークグループ名

[homes]
   browseable = no
   readonly = no
   create mask = 755
   directory mask = 755
   valid users = %S

再起動

一応再起動

sudo /etc/init.d/samba restart

アクセス

windowsクライアントから以下の手順でアクセス

  1. windowsのマイネットワーク
  2. ワークグループ名からsambaを検出
  3. アドレス欄に\\サーバ名\ユーザ名

かなり適当