ubuntu 10.04.1 LTSを実行していて、python2.6があらかじめパックされていますが、python2.7.2に置き換える必要があります。
(理由は簡単です、2.7には3からバックポートされた多くの機能があります)
私は使用してpython2.7.2をインストールしました
./configure
make
make altinstall
altinstallオプションは、システムのデフォルトバージョンに触れることなく、/ usr/local/lib/python2.7にインストールし、インタープリターを/usr/local/bin/python2.7に配置しました。
次に、mod_wsgiがpython2.7を見つけるのを助けるために、以下を/ etc/Apache2/sites-available/wsgisiteに追加しました
WSGIPythonHome /usr/local
apacheを起動してテストwsgiアプリを実行しますが、Python2.7ではなくpython 2.6.5で迎えられます
後で私はデフォルトのpython simlinkをpython 2.7を指すように置き換えました
ln -f /usr/local/bin/python2.7 /usr/bin/python
コンソールで「python」と入力するとpython2.7が開きますが、どういうわけかmod_wsgiはまだpython2.6を取得します
次に私が試した、
PATH=/usr/local/bin:$PATH
export PATH
次に、Apacheをすばやく再起動しますが、それでもここでもpython2.6 !!
これが私の$ PATHです
/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/ etc/Apache2/sites-available/wsgisiteの内容
WSGIPythonHome /usr/local
<VirtualHost *:80>
ServerName wsgitest.local
DocumentRoot /home/wwwhost/pydocs/wsgi
<Directory /home/wwwhost/pydocs/wsgi>
Order allow,deny
Allow from all
</Directory>
WSGIScriptAlias / /home/wwwhost/pydocs/wsgi/app.wsgi
</VirtualHost>
app.wsgi
import sys
def application(environ, start_response):
status = '200 OK'
output = sys.version
response_headers = [('Content-type', 'text/plain'),
('Content-Length', str(len(output)))]
start_response(status, response_headers)
return [output]
Apache error.log
'import site' failed; use -v for traceback
[Sun Jun 19 00:27:21 2011] [info] mod_wsgi (pid=23235): Initializing Python.
[Sun Jun 19 00:27:21 2011] [notice] Apache/2.2.14 (Ubuntu) mod_wsgi/2.8 Python/2.6.5 configured -- resuming normal operations
[Sun Jun 19 00:27:21 2011] [info] Server built: Nov 18 2010 21:20:56
[Sun Jun 19 00:27:21 2011] [info] mod_wsgi (pid=23238): Attach interpreter ''.
[Sun Jun 19 00:27:21 2011] [info] mod_wsgi (pid=23239): Attach interpreter ''.
[Sun Jun 19 00:27:31 2011] [info] mod_wsgi (pid=23238): Create interpreter 'wsgitest.local|'.
[Sun Jun 19 00:27:31 2011] [info] [client 192.168.1.205] mod_wsgi (pid=23238, process='', application='wsgitest.local|'): Loading WSGI script '/home/wwwhost/pydocs/$
[Sun Jun 19 00:27:50 2011] [info] mod_wsgi (pid=23239): Create interpreter 'wsgitest.local|'.
誰かがmod_wsgiをシステム以外のデフォルトバージョンのpython)で実行することに成功したことがありますか?
./configure \
--prefix=/usr/local \
--enable-unicode=ucs4 \
--enable-shared \
LDFLAGS="-Wl,-rpath /usr/local/lib"
make && make altinstall
--enable-shared
を忘れないでください。そうしないと、後で問題が発生する可能性があります。
https://code.google.com/p/modwsgi/wiki/InstallationIssues
make altinstall
をインストールしてpython2.7
を実行したため、python-devel
パッケージをインストールする必要はありません。したがって、適切なpythonを参照するにはmod_wsgi
が必要です。
./configure --with-python=/usr/local/bin/python2.7
# then edit Makefile if you want to change DESTDIR
make && make install
... httpdを起動してみてください...
Httpdの開始:httpd:/etc/httpd/conf/httpd.confの221行目の構文エラー:/etc/httpd/conf.d/wsgi.confの2行目の構文エラー:/opt/mod_wsgi2.7/をロードできませんusr/lib64/httpd/modules/mod_wsgi.so to server:libpython2.7.so.1.0:cannot open shared object file:No such file or directory
同じpythonを使用しておらず、モジュールを特定のオプションにリンクして正しい場所に表示されなかったため、libpython2.7.so.1.0
が見つからないため、変更できます libtool
check the correct place を作成してください。
# use LDFLAGS to tell libtool resulting lib needs to
# look for shared libs in /usr/local/lib too.
./configure \
--with-python=/usr/local/bin/python2.7 \
LDFLAGS="-R/usr/local/lib"
# then edit Makefile if you want to change DESTDIR
# e.g. DESTDIR = /opt/mod_wsgi2.7
make && make install
...もう一度httpを起動してみてください...
Httpdの開始:httpd:/etc/httpd/conf/httpd.confの221行目の構文エラー:/etc/httpd/conf.d/wsgi.confの2行目の構文エラー:/opt/mod_wsgi2.7/をロードできませんusr/lib64/httpd/modules/mod_wsgi.soをサーバーに:/opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so:共有オブジェクトファイルを開くことができません:アクセスが拒否されました
その最後のエラーは、私のシステムがselinuxを実行していて、ファイルにデフォルトのコンテキストがあるためです。 stackoverflowの概要 は、それがselinuxの問題であることを示しています。
# ls -Z /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so
-rwxr-xr-x. root root unconfined_u:object_r:user_tmp_t:s0 /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so
修正は、元のmod_wsgiモジュールにある正しいコンテキストを使用することです。
chcon --reference /etc/httpd/modules/mod_wsgi.so /opt/mod_wsgi2.7/usr/lib64/httpd/modules/mod_wsgi.so
mod_wsgi too
を再コンパイルする必要があります。 pythonを再コンパイルするだけでは不十分です(mod_wsgi
の正しいバージョンをロードすることを忘れないでください)
編集: ここをクリック インストール手順については
私はたまたまこれと同じ問題に直面しました。そして、私はmod_wsgiをアンインストールし、適切な構成で再インストールするオプションを見ていました。
現在のmod_wsgiをアンインストールする必要がないことに気づいた記事の1つを読んで、先に進んで、Python2.7を使用する設定でmod_wsgi3.4(以前はv3.2でした)を再インストールすることができます(インストールプロセスは、エラーや競合なしにすべてを書き換えます)。
私はすでにPython2.7をインストールしているので。
[root @ server〜]#cd〜
[root @ server〜] #wget http://modwsgi.googlecode.com/files/mod_wsgi-3.4.tar.gz
[root @ server〜] #tar xvf mod_wsgi-3.4.tar.gz
[root @ server〜]#cd mod_wsgi-3.4
[root @ server〜]#。/ configure --with-python =/usr/local/bin/python2.7
[root @ server〜] #make
[root @ server〜]#make install
[root @ server〜] #LD_LIBRARY_PATH =/usr/local/lib/usr/local/bin/python
[root @ server〜] #ldconfig
[root @ server〜]#service httpd restart
[root @ server〜]#ldd /etc/httpd/modules/mod_wsgi.so
linux-vdso.so.1 => (0x00007fffc0aa9000)
libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f03a5b20000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f03a5903000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f03a56fe000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f03a54fb000)
libm.so.6 => /lib64/libm.so.6 (0x00007f03a5277000)
libc.so.6 => /lib64/libc.so.6 (0x00007f03a4ee2000)
/lib64/ld-linux-x86-64.so.2 (0x00007f03a6133000)
Amazon LinuxにReviewBoardツールをインストールするときに同じ問題が発生します4.9.38-16.35.amzn1.x86_64
http://backup.noiseandheat.com/blog/2011/11/installing-reviewboard-on-Amazon-ec2/ 。
yum install mod_wsgi
を実行すると、mod_wsgi-python26.x86_64
が取得されました。後で私はyum search mod_wsgi
でyumを使って検索する方法を学び、そのpython27インストールも利用できることを発見しました。したがって、Sudo yum install mod_wsgi-python27.x86_64
を実行すると問題が解決しました。