web-dev-qa-db-ja.com

Python 3.6、Apache 2.4、およびDjango 1.11を使用してmod_wsgiをUbuntuにインストールします。

Python 3.6.1?向けにコンパイルされたApache2のmod_wsgiを取得するにはどうすればよいですか?

(または将来のPythonバージョン)

Python 3.6.1仮想環境とDjango 1.11を使用しており、Apache 2.4のmod_wsgiがコンパイルされていることを除いて、Apacheエラーログに従ってすべてが動作しています。 Python/3.5.1 +およびPython/3.5.2を使用しているため、Python 3.6.1コードは、3.5.2で利用できない新機能を使用しているために失敗します

Mod_wsgiはmy Python 3.6.1仮想環境を使用しているようではありませんが、システムのセットアップに関係する他のすべての構成とインストールは問題ないようです(デーモンモードで実行) Django=エラーログによると)に使用しようとしています...

使用した:Sudo apt-get install libapache2-mod-wsgi-py3 Apache 2.4用のmod_wsgiをインストールする

使用した:./configure --with-python=/usr/local/bin/python3.6およびmakemake install Python 3.6のmod_wsgiをインストールする

私は何か間違ったことをしているに違いない-私を修正してください!

ここに私のApacheエラーログがあります(少し掃除されています)-はい、f ""文字列行で失敗することがわかります(3.5ではないPython 3.6機能)

[wsgi:warn] mod_wsgi: Compiled for Python/3.5.1+.
[wsgi:warn] mod_wsgi: Runtime using Python/3.5.2.
[wsgi:warn] AH00489: Apache/2.4.18 (Ubuntu) mod_wsgi/4.3.0 Python/3.5.2 configured -- resuming normal operations
[wsgi:warn] AH00094: Command line: '/usr/sbin/Apache2'
[wsgi:error] mod_wsgi (pid=12963): Target WSGI script '/home/jamin/www/dev.tir.com/tir/tir/wsgi.py' cannot be loaded as Python module.
[wsgi:error] mod_wsgi (pid=12963): Exception occurred processing WSGI script '/home/jamin/www/dev.tir.com/tir/tir/wsgi.py'.
[wsgi:error] Traceback (most recent call last):
[wsgi:error]   File "/home/jamin/www/dev.tir.com/tir/tir/wsgi.py", line 21, in <module>
[wsgi:error]     application = get_wsgi_application()
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/Django/core/wsgi.py", line 13, in get_wsgi_application
[wsgi:error]     Django.setup(set_prefix=False)
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/Django/__init__.py", line 27, in setup
[wsgi:error]     apps.populate(settings.INSTALLED_APPS)
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/Django/apps/registry.py", line 116, in populate
[wsgi:error]     app_config.ready()
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/Django/contrib/admin/apps.py", line 23, in ready
[wsgi:error]     self.module.autodiscover()
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/Django/contrib/admin/__init__.py", line 26, in autodiscover
[wsgi:error]     autodiscover_modules('admin', register_to=site)
[wsgi:error]   File "/home/jamin/www/dev.tir.com/py361ve/lib/python3.6/site-packages/Django/utils/module_loading.py", line 50, in autodiscover_modules
[wsgi:error]     import_module('%s.%s' % (app_config.name, module_to_search))
[wsgi:error]   File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
[wsgi:error]     return _bootstrap._gcd_import(name[level:], package, level)
[wsgi:error]   File "<frozen importlib._bootstrap>", line 986, in _gcd_import
[wsgi:error]   File "<frozen importlib._bootstrap>", line 969, in _find_and_load
[wsgi:error]   File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
[wsgi:error]   File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
[wsgi:error]   File "<frozen importlib._bootstrap_external>", line 665, in exec_module
[wsgi:error]   File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
[wsgi:error]   File "/home/jamin/www/dev.tir.com/tir/company/admin.py", line 13, in <module>
[wsgi:error]     from .forms import AdminInteractionForm
[wsgi:error]   File "/home/jamin/www/dev.tir.com/tir/company/forms.py", line 87
[wsgi:error]     resp = f"Hi {user.first_name}, you'll need to login to send any more suggestions. \\
[wsgi:error]                              \\n\\nFirst Time? Check your email/spam for login instructions from us."
[wsgi:error]                                                                                        
[wsgi:error]                                                                                                   ^
[wsgi:error] SyntaxError: invalid syntax

*また、tir.comは私の実際のサイトの略記です-私はそのドメインとは何の関係もありません

23
JxAxMxIxN

以下をせよ。

システムmod_wsgiパッケージをアンインストールします。

Sudo apt-get remove libapache2-mod-wsgi-py3

pipを使用してmod_wsgiをインストールします。できればPython仮想環境にインストールしてください。pipがPython使用する。

pip install mod_wsgi

以下を実行して、Apache構成ファイルに追加する構成を表示して、このmod_wsgiをロードします。

mod_wsgi-express module-config

上記のコマンドの出力を使用して構成を表示し、Apache構成に追加します。

Apacheに構成を追加して、hello world WSGIアプリケーションをロードし、動作をテストします。

以下のpipベースのインストールの詳細を参照してください。

28

@Graham Dumpletonの提案を使用してpipを使用してmod_wsgiをインストールすると、次のエラーが発生しました。

RuntimeError: The 'apxs' command appears not to be installed or is not executable.
Please check the list of prerequisites in the documentation for this package and
install any missing Apache httpd server packages.

mod_wsgiからpipを正常にコンパイルしてインストールするには、UbuntuにApache2-devパッケージをインストールする必要があります。

Sudo apt-get install -y Apache2-dev

その後、pip install mod_wsgiは正常に完了します。

それが他の人に役立つことを願っています。

8
Arbab Nazar