Ошибка wsgi_mod: pymongo не обнаружен в virtualenv - PullRequest
0 голосов
/ 02 сентября 2018

Хорошо, я установил pymongo в моем virtualenv, используя pip3, и когда я пытаюсь загрузить модуль pymongo в мое приложение фляги (это происходит только тогда, когда я запускаю его, используя свой домен, я все еще могу запустить флешку на моем общедоступный IP-адрес) Моя страница возвращает 500 Internal Server Error.

Это ошибка

[Sun Sep 02 02:32:52.289075 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286] mod_wsgi (pid=4722): Target WSGI script '/var/www/mainyuk.andra.xyz/app.wsgi' cannot be loaded as Python module.
[Sun Sep 02 02:32:52.289139 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286] mod_wsgi (pid=4722): Exception occurred processing WSGI script '/var/www/mainyuk.andra.xyz/app.wsgi'.
[Sun Sep 02 02:32:52.289229 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286] Traceback (most recent call last):
[Sun Sep 02 02:32:52.289277 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286]   File "/var/www/mainyuk.andra.xyz/app.wsgi", line 5, in <module>
[Sun Sep 02 02:32:52.289286 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286]     from app import app as application
[Sun Sep 02 02:32:52.289299 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286]   File "/var/www/mainyuk.andra.xyz/app.py", line 3, in <module>
[Sun Sep 02 02:32:52.289305 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286]     from pymongo import MongoClient
[Sun Sep 02 02:32:52.289369 2018] [wsgi:error] [pid 4722] [remote 172.69.134.106:13286] ModuleNotFoundError: No module named 'pymongo'

Структура каталогов выглядит следующим образом

var/www/mainyuk.andra.xyz
├── venv (Virtual environment)
|   └── etc
├── app.wsgi
└── app.py

app.py

from flask import Flask, request
from pymongo import MongoClient

#Initializing Flask
app = Flask(__name__)

#Initializing MongoDB
#client = MongoClient('localhost', 27017)

#db = client.mainyuk
#dbColDevelopment = db.development

#Routing
@app.route('/')
def index():
    return 'It works!'
@app.route('/webhook', methods=['GET', 'POST'])
def webhook():
    #if 'events' in request.form:
    #    dbColDevelopment.insert_one({ "events" : request.form['events'] })
    return ''

if __name__ == "__main__":
    app.run(ssl_context=('../cert.pem', '../cert.private.pem'))

app.wsgi

import sys

sys.path.insert(0, '/var/www/mainyuk.andra.xyz/') #sys.path.append("/var/www/mainyuk.andra.xyz/")
from app import app as application

apache_configuration.conf

<VirtualHost *:80>
    ServerAdmin admin@localhost
    ServerName mainyuk.andra.xyz
    ErrorLog /var/www/mainyuk.andra.xyz/error.log
    CustomLog /var/www/mainyuk.andra.xyz/access.log combined

    #WSGIPythonHome /var/www/mainyuk.andra.xyz/venv
    #WSGIPythonPath /var/www/mainyuk.andra.xyz/venv/lib/python3.6/site-packages

    #WSGIScriptReloading On
    WSGIDaemonProcess app user=www-data group=www-data threads=5 python-home=/var/www/mainyuk.andra.xyz/venv
    WSGIScriptAlias / /var/www/mainyuk.andra.xyz/app.wsgi

    <Directory /var/www/mainyuk.andra.xyz>
        WSGIProcessGroup app
        WSGIApplicationGroup %{GLOBAL}
        Order deny,allow
        Allow from all
    </Directory>
#    Alias /static/ /var/www/FLASKAPPS/helloworldapp/static
#    <Directory /var/www/mainyuk.andra.xyz/>
#        Order allow,deny
#        Allow from all
#    </Directory>
</VirtualHost>

1 Ответ

0 голосов
/ 19 февраля 2019

Обязательно установите ваши зависимости, используя pip для Python 2, а не с pip3. По какой-то причине (конфигурация по умолчанию) apache не использует зависимости pip3 для запуска приложения.

$ sudo apt-get install python-pip
$ sudo pip install flask
$ sudo pip install pymongo

Вы также можете обратиться к этому руководству, чтобы проверить свои шаги:

https://medium.com/@jQN/deploy-a-flask-app-on-aws-ec2-1850ae4b0d41

...