homebrewを使わずにOS X Server 2.0にDjangoアプリケーションを配備する方法や、OS X 10.8.1に同梱されていないPythonとは違う方法はありますか?私はDjangoアプリケーションでココアバインディングを使用していて、自分のデスクトップマシン(自作OS X 10.8.1を実行中)でhomebrewと連携させることができませんでした。したがって、Pythonのシステムインストールバージョンにアプリケーションをデプロイするリクエスト。OS X Serverにdjangoアプリケーションをどのように配備しますか?
私は次のよう既にインストールして、以下のOS X Server環境を持っている:
- OS X 10.8.1
- OS X Server 2.0の
- のPython 2.7.2
- のApache 2.2。 22
次のコマンドを使用してDjango 1.4.1をインストールしました。
sudo easy_install django
最初に空のWebサイトを展開し、それが成功すると、実稼働環境で使用される実際のアプリケーションを展開します。このプロジェクトは、私は、次のコマンドを使用してアプリケーションを実行した次のコマンド
django-admin.py startproject mysite
を使用して/Library/Server/Web/Data/WebApps/mysite/
で作成されました。単にアプリケーションが起動していることを確認しました。それは標準である "それは働いた!"最初にプロジェクトを作成したときのページです。
python manage.py runserver 8080
私は、次の内容のファイル/Library/Server/Web/Config/apache2/httpd_mysite.conf
作成:私は、さらに次の内容のファイル/Library/Server/Web/Config/apache2/webapps/com.example.mysite.wsgi.plist
を作成
WSGIScriptAlias /mysite /Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py
を:
<?xml version="1.0" encoding="UTF-7"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>name</key>
<string>com.example.mysite.wsgi</string>
<key>displayName</key>
<string>Python "My Site" app</string>
<key>launchKeys</key>
<array/>
<key>proxies</key>
<dict/>
<key>installationIndicatorFilePath</key>
<string>/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py</string>
<key>includeFiles</key>
<array>
<string>/Library/Server/Web/Config/apache2/httpd_mysite.conf</string>
</array>
<key>requiredModuleNames</key>
<array>
<string>wsgi_module</string>
</array>
</dict>
</plist>
ファイルcom.example.mysite.wsgi.plist
がcom.apple.webapp.wsgi.plist
から適応されましたhttpd_mysite.conf
はhttpd_wsgi.conf
に適合しています。これらのファイルは両方とも、サーバーマネージャーを使用して構成されたときに「スタンドアロン」のPythonアプリケーションを正常に実行するために使用されます。
私はサーバーマネージャーでサイトを作成し、アプリケーションがWebアプリケーションのリストに入っていることを確認しました。しかし、http://example.com/mysiteにアクセスすると、500エラーが発生します。ログは、(IPアドレスは、プライバシー上の理由から1.2.3.4への変更)次のエントリがあります。
[Sat Sep 01 21:49:17 2012] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Sat Sep 01 21:49:17 2012] [notice] Apache/2.2.22 (Unix) PHP/5.3.13 with Suhosin-Patch mod_wsgi/3.3 Python/2.7.2 mod_fastcgi/2.4.6 mod_ssl/2.2.22 OpenSSL/0.9.8r DAV/2 configured -- resuming normal operations
[Sat Sep 01 21:50:13 2012] [error] [client 1.2.3.4] (8)Exec format error: exec of '/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py' failed
[Sat Sep 01 21:50:13 2012] [error] [client 1.2.3.4] Premature end of script headers: wsgi.py
WSGIモジュールが要求を処理しているようではありませんが、その代わり、リクエストがFCGIを使用して処理することができます。ただし、ログにはmod_wsgi/3.3
がロードされたことが示されます。
私は以下のように見えるの標準的なPythonアプリケーションを作成しました:「こんにちは世界」が表示され、その後
def application(environ, start_response):
status = '200 OK'
output = 'Hello World!'
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
そして/Library/Server/Web/Data/WebApps/helloworld.wsgi
ではなく/Library/Server/Web/Data/WebApps/mysite/mysite/wsgi.py
を指すようにファイルを更新します。したがって、私はwsgiが正しく構成されており、アプリケーションを実行できると想定し、セットアップに間違いがあると仮定します。
これは '/ Applications/Server.app/Contents/ServerRoot/usr/libexec/apache2/mod_wsgi.so'にインストールされています – bloudraak
' wsgi.py'を 'mysite.wsgi'に改名して' mod_wsgi'を呼び出しました。私は他の問題に遭遇しました。これは、[this answer](http:// stackoverflow)で説明されているように、 'mysite.wsgi'に' sys.path.append'を使ってパスを追加することで解決しました。com/questions/2587251/configuration-problems-with-django-and-mod-wsgi)を参照してください。ありがとう。 – bloudraak