« 2010March »
Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
このBlogについて
このブログはCMScomが公開する、公式ブログです。 Zope/Ploneのことや、Pythonのことなどを掲載しています。 また、個人的な内容も一部含まれております。
最近のエントリ
Zope/Plone開発勉強会(2009年2月)の報告 terada 2010年02月25日
Zope/Plone開発勉強会(合宿バージョン)の報告2 terada 2010年02月15日
Zope/Plone開発勉強会(合宿バージョン)の報告1 terada 2010年02月01日
Ploneの英語のメーリングリスト紹介 terada 2010年01月29日
2010年も既に半月経過 terada 2010年01月17日
PloneでMS-Officeファイルを検索対象にするプロダクト公開 terada 2009年12月18日
Plone研究会&Ploneパーティー2009 terada 2009年12月10日
Plone3の日本語検索とメールバグ terada 2009年12月08日
Pythonスクリプトを使って便利な機能を実装 terada 2009年12月04日
MeCabで日本語読みを出力 on Windows terada 2009年12月03日
Plone3のメールバグ解消プロダクト公開 terada 2009年11月23日
Plone Conference 2009 の報告(4) terada 2009年11月18日
Plone Conference 2009 の報告(3) terada 2009年11月18日
Plone Conference 2009 の報告(2) terada 2009年11月10日
Plone Conference 2009 の報告(1) terada 2009年11月09日
Plone Conference 2009 がはじまりました terada 2009年10月28日
Plone Conference 2009 へ(2) terada 2009年10月23日
Plone Conference 2009 へ terada 2009年10月22日
【終了】Zope/Plone開発勉強会 #4 terada 2009年10月21日
Plone4のデフォルトデザイン terada 2009年10月18日
最近のコメント
Re:PloneでMS-Officeファイルを検索対象にするプロダクト公開 NK 2010年02月15日
Re:Plone3のメールバグ解消プロダクト公開 terada 2009年11月23日
Re:Zope Essentials 7 無事終了 t2y 2009年08月23日
Re:Plone3.0以降のメール送信 akiko 2009年08月10日
Re:Google App Engine と Google Apps はすい 2009年08月04日
Re:PyLuceneの日本のコミュニティが立ち上がった t2y 2009年08月04日
Re:Plone3.0以降のメール送信 siebo 2009年01月20日
Re:Plone3.0以降のメール送信 Shigeo Honda 2009年01月20日
Re:Plone Conference 2008 で知り合った人々(1) 伊藤@b-mark 2008年11月23日
Re:Plone Conference 2008 に参加 terada 2008年10月16日
Re:Plone Conference 2008 に参加 terada 2008年10月16日
Re:Plone Conference 2008 に参加 malik 2008年10月16日
Re:Plone Conference 2008 に参加 Yasu. 2008年10月16日
Re:Twitterどうでしょうか zen 2007年05月26日
Re:Plone2.5からの注意 Anonymous User 2007年04月21日
Re: Windows Vista良い感じ terada 2006年11月15日
Re: Windows Vista良い感じ ナルディ 2006年11月15日
Re:Ploneのケータイ対応 sayg 2005年12月02日
Re:Ploneのケータイ対応 terada 2005年12月02日
Re: SWFファイル Terada 2005年10月25日
 
編集操作

TurboGearsをmod_wsgiで使ってみる

最近は、PloneのみならずTurboGearsを使うこともある。

TurboGearsには、Zope/Ploneと同じように、CherryPyというWebサーバが内蔵されている。CherryPyは関数がそのままURLにマッピングされ、GET引数や「/」で区切った引数の処理が柔軟で非常に便利である。

TurboGearsの本番環境へのIntegrateは、CherryPyをそのまま使用する(フロントにApacheと置いて、Proxyにて行う方法がよく使われているようである。他には、mod_pythonを使った方法も使われている。

Pythonには、WSGI(Web Server Gateway Interface)という仕様がある。Pythonで書かれた、TwistedというサーバやDjangoなどがこのWSGIに対応している。CherryPyもWSGI対応となっている。

最近、mod_wsigというプロジェクトが本格的になってきたようである。Djangoをmod_wsgiで動かそうとしている人がいることを見つけ、TurboGeasでも使えるはずとおもい週末からテストを行ってみた。下記に悪戦苦闘の結果を記載しておく。

*2007年11月7日に、WSGIファイルを変更しました。

  • OSは、CentOS4.4を使用(ほぼデフォルトインストール状態)
  • Apacheにapxsが導入されていること。
    • インストールされていなかったので、yumでインストール
    • yum install httpd-devel
  • mod_wsgiのインストール
    • $ svn checkout http://modwsgi.googlecode.com/svn/trunk/ modwsgi
      $ cd modwsgi
      $ ./configure
      $ make
      # cp .libs/mod_wsgi.so /etc/httpd/modules/.
  • expatのバージョン確認
    • # ldd /usr/sbin/httpd | grep expat
              libexpat.so.0 => /usr/lib/libexpat.so.0 (0x00152000)
      # strings /usr/lib/libexpat.so.0 | grep expat_
      expat_1.95.7
  • pyexpatはPython2.4.4を使用すると、1.95.8となる。
    • これでは、バージョン違いで、
      child pid xxxxx exit signal Segmentation fault (11)
    • となってしまい、動かない。そこで、expatをソースからインストールする。
  • expatのソースインストール
    • http://sourceforge.net/projects/expat/ から1.95.8をダウンロード
    • $ ./configure
      $ make
      # make instal
      # vi /etc/ld.so.conf
         '/usr/local/lib'を追記
      # /sbin/ldconfig
  • wsgi設定ファイルの作成
    • project.wsgiとした。
    • 2007年11月7日変更(identity を使用しているとうまくいかない件の解消)
    • import os
      os.environ['PYTHON_EGG_CACHE'] = '/home/USER/www/'
      import sys
      sys.path.append('/home/USER/www')
      sys.stdout = sys.stderr
      import atexit
      import cherrypy
      import cherrypy._cpwsgi
      import pkg_resources
      pkg_resources.require("TurboGears")
      import turbogears

      turbogears.update_config(configfile="prod..cfg", modulename="project.config")
      turbogears.config.update({'global': {'server.environment': 'production'}})
      turbogears.config.update({'global': {'autoreload.on': False}})

      # +++++++
      import project.controllers #修正部
      cherrypy.root = project.controllers.Root() #修正部
      # +++++++
      if cherrypy.server.state == 0:
          atexit.register(cherrypy.server.stop)
          cherrypy.server.start(init_only=True, server_class=None)
      # --------
      #import project.controllers
      #cherrypy.root = project.controllers.Root()
      # --------

      application = cherrypy._cpwsgi.wsgiApp


  • httpd.confへの追記
    • LoadModule wsgi_module /etc/httpd/modules/mod_wsgi.so
      <VirtualHost *:80>
          ServerName www.example.com
           Alias /static /home/USER/www/project/project/static
          WSGIScriptAlias / /home/USER/www/project/project.wsgi
      </VirtualHost>
  • 参考サイト
トラックバック用URL:

[python]TurboGearsアプリをFastCGIでデプロイする

投稿者 a geek 投稿日時: 1999年01月01日 06時45分
TurboGearsアプリを Apache + mod_fastcgi で動かしたときのメモです。*1 環境 Python 2.5 TurboGears 1.0.3.4 CherryPy 2.3.0 mod_fastcgiインストール 入ってるの前提なので省略。このエントリとかこのエントリとか。 flupインストール TurboGearsアプリは基本的にWSGIア
コメントを追加

下のフォームに記入してコメントを追加できます。平文テキスト形式。

(必須)
(必須)
(必須)
(Required)