(免責事項: 私は Linux を使い始めたばかりで、Apache と Python の構成についてはあまり経験がありません。)
ここでより詳細に説明されているかなり一般的な問題がありますhttp://code.google.com/p/modwsgi/wiki/IssuesWithExpatLibrary。基本的に、私の主な問題は私の Apache が expat ライブラリのバージョン 1.95.7 を使用しているのに対し、私の Python は expat ライブラリのバージョン 2.0.1 を使用していることだと 99% 確信しています。したがって、それらを一緒に使用すると、セグメンテーション違反が発生します。
ページの一番下にあるリンクで説明されているように、Apache で使用されている expat ライブラリのバージョンを Python で使用されているバージョンに置き換える/更新する必要があります。どうすればいいですか?(私はこの種のことに非常に慣れていないことに注意してください。)
編集: この問題は解決されました。以下に、私が Apache をインストールし、ソース コードから Python をビルドし、mod_wsgi をインストールし、恐ろしい国外居住者の問題を解決するために私が行ったすべてのことを文書化しました。
1) Wubi で Ubuntu をインストール
アパッチのインストール
2) Ubuntu では、Apache Unix ソース httpd-2.2.21.tar.gz をダウンロードします。
3) Apache HTTPDd tarbell からソースを抽出:
gzip -d httpd-2.2.21.tar.gz
tar xvf httpd-2.2.21.tar
4) 抽出したディレクトリ内から Apache HTTPd ソース ツリーを構成します。
sudo ./configure --prefix=/usr/local/apache2
5) Apache HTTPd パッケージを形成するさまざまなパーツを構築しました。
sudo make
6) 手順 4 で指定したディレクトリにパッケージをインストールしました
sudo make install
7) Apache HTTP サーバーを開始しました。
sudo /usr/local/apache2/bin/apachectl -k start
8) localhost を確認すると、「動作します!」と出力されました。
9) Apache HTTP サーバーを停止しました。
sudo /usr/local/apache2/bin/apachectl -k stop
ソースコードからの Python のインストール
10) 何かをビルドするために必要なすべての共通パッケージを取得しました (例: コンパイラーなど)。
sudo apt-get install build-essential
11) /etc/apt の sources.list ファイルを編集し、「deb-src」を除いて、ファイルに含まれているのとまったく同じ「deb」行を最後に追加します。
sudo nano /etc/apt/sources.list
12) 変更を認識するように apt-get を更新しました。
sudo apt-get update
13) Python のビルドに必要なすべてのライブラリを取得しました。
sudo apt-get build-dep python2.7
14) Python ソース コード Python-2.7.2.tgz をダウンロードして展開し、ディレクトリ内から次のコマンドを実行しました。
sudo ./configure --enable-shared --prefix=/usr/local
15) 構築された Python:
sudo make
16) インストール済みの Python:
sudo make install
mod_wsgi のインストール
17) ダウンロードした mod_wsgi ソース コード tar ボール mod_wsgi-3.3.tar.gz
18) 解凍され、解凍されたディレクトリ内から python で構成されます。
sudo ./configure --with-apxs=/usr/local/apache2/bin/apxs \
--with-python=/usr/local/bin/python2.7
19) 構成されたパッケージをビルド:
sudo make
20) Apache モジュールにインストール:
sudo make install
21) ダウンロードした Django-1.3.1.tar.gz
22) 抽出されたファイル:
tar xzvf Django-1.3.1.tar.gz
23) ディレクトリ内から Django プロジェクトをインストール:
sudo python setup.py install
24) 編集された Apache httpd.conf ファイル:
sudo nano /usr/local/apache2/conf/httpd.conf
ファイルの末尾に次のディレクティブを追加しました。
LoadModule wsgi_module /usr/local/apache2/modules/mod_wsgi.so
WSGIScriptAlias / /usr/local/lib/python2.7/site-packages/django/test.wsgi
<Directory /usr/local/lib/python2.7/site-packages/django>
Order deny,allow
Allow from all
</Directory>
25) django プロジェクト ディレクトリにテスト ファイルを作成しました。
sudo nano /usr/local/lib/python2.7/site-packages/django/test.wsgi
次のコンテンツをファイルに追加しました。
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]
26) Apache を開始しました。
sudo /usr/local/apache2/bin/apachectl -k start
27) localhost をテストしたところ、「Hello World!」と出力されました。
28) アパッチを止めた:
sudo /usr/local/apache2/bin/apachectl -k stop
恐ろしい外国人問題のテスト:
29) 編集された test.wsgi ファイル:
sudo nano /usr/local/lib/python2.7/site-packages/django/test.wsgi
ファイルの先頭に次のコンテンツを追加しました。
import pyexpat
30) Apache を起動しました:
sudo /usr/local/apache2/bin/apachectl -k start
31) 「Hello World!」と表示されます。神がいます。
32) アパッチを止めた:
$ sudo /usr/local/apache2/bin/apachectl -k stop