実現したいこと
ここに実現したいことを箇条書きで書いてください。
- 表記の環境でエラーが発生します。エラーを解決し、Webサービスを正常に稼働させたいと考えています。エラーはjwtパッケージで発生しており回避したいのですが、ログイン認証のためアプリケーションに組み込む必要があります。
前提
環境情報
OS: Linuxサーバ
プラットフォーム: AWS
Apache/2.4.51
Python 3.7.10
Flask Version: 1.1.2
mod_wsgiコマンドの実行結果
1mod_wsgi-express module-config 2LoadModule wsgi_module "/usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so" 3WSGIPythonHome "/usr"
httpd/conf.d/flask.conf
1LoadModule wsgi_module /usr/local/lib64/python3.7/site-packages/mod_wsgi/server/mod_wsgi-py37.cpython-37m-x86_64-linux-gnu.so 2 3WSGIPythonPath /var/www/html/(ProjectPath) 4<VirtualHost *:80> 5 ServerName xxx 6 DocumentRoot /var/www/html/(ProjectPath) 7 WSGIDaemonProcess xxx user=apache group=apache threads=5 8 WSGIScriptAlias / /var/www/html/(ProjectPath)/(ProjectName).wsgi 9 WSGIScriptReloading On 10 <Directory "/var/www/html/(ProjectPath)"> 11 WSGIProcessGroup (ProjectName) 12 WSGIApplicationGroup %{GLOBAL} 13 Order deny,allow 14 Allow from all 15 </Directory> 16</VirtualHost> 17~
ProjectName.wsgi
1import os, sys 2import logging 3logging.basicConfig(stream = sys.stderr) 4sys.path.insert(0, '/var/www/html/(ProjectPath)') 5 6from run import app as application
pip
1$ pip show jwt 2WARNING: Package(s) not found: jwt 3pip show PyJWT 4Name: PyJWT 5Version: 2.7.0 6Summary: JSON Web Token implementation in Python 7Home-page: https://github.com/jpadilla/pyjwt 8Author: Jose Padilla 9Author-email: hello@jpadilla.com 10License: MIT 11Location: /home/(UserName)/.local/lib/python3.7/site-packages 12Requires: typing-extensions 13Required-by:
以下のエラーが発生します。
mod_wsgi (pid=23285): Failed to exec Python script file '/var/www/html/(ProjectPath)/(ProjectName).wsgi'., referer: http://(IP address)/login
mod_wsgi (pid=23285): Exception occurred processing WSGI script '/var/www/html/(ProjectPath)/(ProjectName).wsgi'., referer: http://(IP address)/login
Traceback (most recent call last):, referer: http://(IP address)/login
File "/var/www/html/(ProjectPath)/(ProjectName).wsgi", line 7, in <module>, referer: http://(IP address)/login
from run import app as application, referer: http://(IP address)/login
File "/var/www/html/(ProjectPath)/run.py", line 1, in <module>, referer: http://(IP address)/login
from app.app import app, referer: http://(IP address)/login
File "/var/www/html/(ProjectPath)/app/app.py", line 26, in <module>, referer: http://(IP address)/login
import jwt, referer: http://(IP address)/login
ModuleNotFoundError: No module named 'jwt', referer: http://(IP address)/login
Web画面はInternal Server Errorとなります。
試したこと
エラーではjwtパッケージが見つからないとなっていますが、調査していたところjwtとPyJWT共存の問題があるようで、PyJWTのみ入った状態にしています。
jwtパッケージを入れた場合でもエラーは発生します。
この状態で、Python3 run.pyとすると問題なく動作します。
そのため、mod_wsgiから参照しているPythonが怪しいと考えています。
そこで、mod_wsgiコマンドで出力された内容をLoadModuleへ設定されているか確認しています。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。