« 2010September »
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    
このBlogについて
このブログはCMScomが公開する、公式ブログです。 Zope/Ploneのことや、Pythonのことなどを掲載しています。 また、個人的な内容も一部含まれております。
最近のエントリ
シンガポールでのPyCon APAC terada 2010年07月01日
PyCon APACに参加 terada 2010年06月08日
イベント紹介 ソーシャル家電(@NBC) terada 2010年05月13日
World Plone Day 2010 Tokyo での質問 terada 2010年05月04日
World Plone Day 2010 Tokyo 発表【Plone4 Coming soon】が終わりました terada 2010年04月28日
大型連休の当社休日 terada 2010年04月26日
Plone4の開発環境構築 terada 2010年04月25日
【イベント告知】World Plone Day 2010 Tokyo terada 2010年04月19日
Zope/Plone開発勉強会(2010年3月)の報告 terada 2010年03月23日
第9回開発合宿の成果 terada 2010年03月14日
Zope/Plone開発勉強会(2010年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日
最近のコメント
Re:第9回開発合宿の成果 t2y 2010年03月14日
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日
 
編集操作

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)