三流phperがpythonやwsgiのなにでつまづくかっていうと

Filed in Apache | php | Python | 未分類 Leave a comment

ぜんぶapacheさんがよろしく沙汰しとってくれてた部分も意識する必要があって、
「そんなことしないと動かないの?」
っていうのが大きい。と思うのね。
その違和感と言うかギャップというのか、そういうのを解消する助けになる記事をそのうち書こうと思います。

  1. アプリケーションサーバっつうのがあって、ポート開いて待受をしたりする。アパッチさんやNginxさんあたりがポート80番で受け取ったのを、別ポートで待ち受けてるアプリケーションサーバに渡したりするんだな。apache:80→pylons:8050とかさ。そういうの。
  2. phpはapacheモジュール(mod_php)で動くから、Permissionいじんなくてもいいんだな。あいつが色々とやってくれる運びになってる。pythonも昔はmod_pythonとかあったけど今使う人あんまいないよ。wsgiっつうしかけがあって、説明読んでも意味分からんかもだけどそっちが主流ってもっぱらの噂
  3. いっちばん最初に1ファイルのCGIでもいいのでpython動かしてみよう、のときにどうしたら良いのか正直わからない
  4. php.net/manual/jaみたいなわかりやすい総本山が見つからない。ここ見て
  5. あと、version2.5のだけどチュートリアルを何度も読むのがいいと思う。コマンドラインとかで色々やるのつまらないと思うけど、ひととおりやって、それからCGIで動かしてみるっていう順番でライブラリリファレンス見るといいと思います。HTMLになってくれないと調子でないよね正直。
  6. 「借りてるレンタルサーバはpythonって入ってない」これ多くてコケる人多いと思う。ソース落としてきてコンパイルしちゃえよ。./configure prefix=/home/youraccount/pythonってやりさえすればいいんだ。ほんとよ(これはそのうち書く)。
  7. いまどきはvirtualpythonぽ
  8. PEARいっこどどんと落としてくれば済んだのにじぶんでeasy_install!pip!→import!import!ってめんどくさい。分かるよ兄弟。でもrequire_onceつかってたろ。同じことだよ
  9. auto_loadだっけ。あれは悪魔の所業だ。どこで何が起きてるのかわからないじゃんね
  10. どっかで定義すれば適当に使えていた定数とか、あれnetbeansでも入れてなければ、どこで定義されてるか追いかける気にもならないよね。pythonのimportでフルパスに近い書き方させられるのは、書いたあとで手を入れたとき、重要な意味を持つってわかると思う。もっともpythonも最近は相対パスっぽい呼び方できるんだけど、まあ「どこにあるそれを呼ぶのか」が明示的なのはメリット大きい
  11. そんなの規約で定めればいいじゃん、結構ですがそのルールきちんと機能し続けるにもなかなか苦労が
  12. 2と3どっちがいいの!?2011年11月時点では2.7でよいと思いますのよ

Continue Reading

,

うーむ

Filed in Apache | Database | Pylons Leave a comment

リロードするとすぐpylonsのエラー画面に逝っちゃう。
処理さばききれてないような(-_-;?
こりゃなんだとおもって、しばしの間F5おしっぱ→んでtopを見てみると

top - 21:41:43 up 23 days, 21:36,  6 users,  load average: 75.41, 70.90, 57.37
Tasks: 216 total,   2 running, 214 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.0%us,  2.0%sy,  0.0%ni,  0.0%id, 96.1%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1008488k total,   995396k used,    13092k free,     1352k buffers
Swap:  3068924k total,   965320k used,  2103604k free,    19380k cached

ろーどあべれーじ70ってアンタ……。
MySQLつなぎに行くとこが重たいとこうなるみたい。DB舐めにいかないページではあんまこういうことがおこらないぽ。
まいったなーDBのコネクション数とかなんか見ないとダメだなー。
まあ見たくってもいま何もできないくらい重い状態が30分くらい続いてるんですが。

ports.conf

Filed in Apache Leave a comment

自分ちapacheのまったく別もんのページを出しわけする

NameVirtualHost *:80
Listen 192.168.0.10:80
Listen 192.168.0.10:8000

こんなふうにports.confにかいたら、VirtualHostの設定でポート指定してるのを受け取ってくれるようになった。
リッスンなーそうかーリッスンなー

これで

192.168.0.10:80   → サイトA
192.168.0.10:8000 → サイトB

よいぐあいでござる。
DDNSとかあんだけど、NECのルータは自分ちから外経由で自分ちを見せるのはしないということのようなので。性能は安定してていいルータだけど変なトコにくせがあるなー。

なんで今更こんなレベルのことを書く羽目になっているかというと、こういうめんどくさそうなものはぜんぶほっぽらかして育ったからだ。

自宅でphpMyAdmin見れないとかもう死ぬしかないからなー
あたしゆとりだからなー
ぽっぽっぽー

mod_wsgiをコンパイルする

Filed in Apache | Python | サーバ構築 Leave a comment

コレを書いているのは2010/11/05です。その当時のメモです。一応。
aptitudeとかでいれても、2.6.5向けのコンパイルだから云々ってapacheのログに出るわけです。

[warn] mod_wsgi: Compiled for Python/2.6.5.
[warn] mod_wsgi: Runtime using Python/2.6.6.

きもいので解消するの巻。
mod_wsgi-3.3.tar.gzを拾ってきます。
いつもどおりtar zxfvで開いて
./configure –with-python=/usr/bin/python2.6
apxs云々いわれたらapache-devだかそのへんのを入れよう。多分はいってる。
ついでにpython-devもいれよう。
ほんでmake
make installとかそんなんだ。

[notice] Apache/2.2.16 (Ubuntu) 
PHP/5.3.3-1ubuntu9.1 with Suhosin-Patch 
mod_wsgi/3.2 Python/2.6.6 configured 
-- resuming normal operations

ログ見たらコレで出なくなってた。なーんでかpython2.7ではこの手順がうまく行かなかったのが無念。なんでだろ。

modのリコンパイルとかしたあとはreloadじゃだめで、restartでちゃんと動いた気がする。気がするだけですが。

TracとMercurialを入れました

Filed in Apache | Pylons | Python | web.py | Xrea Leave a comment

あたしはパニるといじらなくていいソースいじったりとかやらかすので、バージョン管理必須。Todoも忘れるのでTrac必須。

Tracはプラグインの用意とかあるからあとでまとめて設定しよう。
WSGIでいろいろ動かせることがわかると、自分のやれる範囲がぐっと広がってうれしいな。

TracまだないのでここにTodo:
今回の一連の手順を完全にまとめる。

内容:
value-domainでドメインとっている人が、自宅サーバでDiCE使ってDDNSひっぱたいて自宅のサーバを見られるようにする。
最低限動くであろうVirtualHostの設定の仕方を書く。
次いでWSGIでスクリプトを起動するまでの方法を書く。上とかぶるけど、単にphp動きゃいいんだよとかのケースにはWSGI使う必要がないので別で。
web.py使ってWebページ立ち上げる方法。
Pylons使って同上。

いまんとこ書ける内容はこんなもんか。あちこちのブログ記事の集積にしかなんないけども。

Pylonsも動いた

Filed in Apache | Python Leave a comment

fujishinko雑記帳
http://fujishinko.exblog.jp/7703789/

ここでやってることをまるまる真似てみる。
うごいたんだけど、なんで動いてんのかさっぱり理解できてはいないです。
まあやるか。

あれ何やってんだあたしは。
いかにも無軌道ですが、そんだけレンタル鯖から開放されたことって大きいんですよ!

fujishinkoさんありがとう。

現状

Filed in Apache | Python | web.py Leave a comment

おねーさんです。

WSGI経由でweb.py起動してます。
いくつかのページ表示はすでにおk。
つうことで開発再開。長かった……。

いっこひじょうに気味悪い事象があったのでメモ。
Pythonスクリプトに手を入れて保存、なぜか反映されない。たとえば定義漏れの変数とかがエラーログに出るわけだけど、さっき消したはずの変数に関するログが延々とでたりする。なにこれこわい。ホラー。
けっきょくapacheをrestartすることで解消したんだけど、こんなことはCGI起動の頃には一度もなかった。WSGIかなんかがキャッシュしてるのかなあ。
ちなみにテンプレートはいじるとすぐ反映された。pythonのファイルだけかこれ?

進捗

Filed in Apache | Database | Python 1 Comment

はろう。おねーさんです。

けっきょくプログラム一行も書かないまま3連休をつぶしそうな勢いなんですが。
いやかいたけど。

VirtualHostの設定がなんとかなったみたいでページが動くようになってきました。
でもDBつなぎにいくと即NG。なにこれ。

ImportError: libmysqlclient_r.so.15: cannot open shared object file: No such file or directory

またこれかー!xreaの環境でもこれに出くわした記憶が。どうやって解決したのか、すでに記憶にありません。うわん。

sudo ldd /usr/bin/mysql
linux-gate.so.1 =>  (0x00a2c000)
libncurses.so.5 => /lib/libncurses.so.5 (0x00c8d000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00244000)
libmysqlclient.so.16 => /usr/lib/libmysqlclient.so.16 (0x0025d000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0x00110000)
libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0x00142000)
libz.so.1 => /lib/libz.so.1 (0x005bc000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00a5f000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0x00159000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0017f000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x00451000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0x008aa000)
/lib/ld-linux.so.2 (0x00d55000)

やれやれ。

よもやの穴2

Filed in Apache Leave a comment

mod_riwriteが有効になってなかったことに今さら気づくおねーさん。アホか。
さーrewrite_logを眺めてよだれたらす仕事が始まるよー

当たり前というところを疑って初めてエンジニアなんつうもんは成り立つんである。
ど三流だなあこんなんじゃ。

思考整理

Filed in Apache Leave a comment

やりたいことを整理しよう。

・apacheのVirtualHost設定をなんとかしたい
なんとかとは:
DDNSで設定したurlを叩いたら、
自宅鯖の想定したディレクトリを叩くようにしたい。
これがうまくいったら、
mod_wsgi経由でのスクリプト起動を試したい。
デフォルト状態でのwsgi起動は成功したので、VirtualHostの設定がダメなんだと思うんだけども。

書いてみたけど何が原因でトラぶっているのかまったく整理がつかなかったでござる。
なんでServerName指定してるのにココに見にこないのじゃ。

TOP