我正在使用passenger
在Flask REST API
服务器上部署apache
。
这是我的Apache conf
文件:
<VirtualHost *:80>
ServerName demo.app.com
DocumentRoot /var/www/demo.app.com/backend # Backend is my venv
PassengerAppRoot /var/www/demo.app.com/backend/public # Public is where my code lives
PassengerPython /usr/bin/python3.8
PassengerAppType wsgi
PassengerStartupFile passenger_wsgi.py
<Directory /var/www/demo.worxmanager.com/backend>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
因此,我进入后端文件夹(venv容器)并执行以下命令:
. ./bin/activate
pip3 install -r ./requirements.txt
一切都成功安装。我进入public folder
内部,然后进入app.py
内部,编写以下代码:
from flask import Flask
#I have more imports and routes, but didn't think they are relevant to my error.
@app.route('/api/user/register', methods=['POST'])
def register():
return user.register(request)
if __name__ == '__main__':
app.run()
最后,这是我的passenger_wsgi.py
文件:
from app import app as application
当我尝试run
或转到demo.app.com
时,出现以下错误:
App 12676 output: /usr/share/passenger/helper-scripts/wsgi-loader.py:26: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses
App 12676 output: import sys, os, re, imp, threading, signal, traceback, socket, select, struct, logging, errno
App 12676 output: Traceback (most recent call last):
App 12676 output: File "/usr/share/passenger/helper-scripts/wsgi-loader.py", line 369, in <module>
App 12676 output: app_module = load_app()
App 12676 output: File "/usr/share/passenger/helper-scripts/wsgi-loader.py", line 76, in load_app
App 12676 output: return imp.load_source('passenger_wsgi', startup_file)
App 12676 output: File "/usr/lib/python3.8/imp.py", line 171, in load_source
App 12676 output: module = _load(spec)
App 12676 output: File "<frozen importlib._bootstrap>", line 702, in _load
App 12676 output: File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
App 12676 output: File "<frozen importlib._bootstrap_external>", line 783, in exec_module
App 12676 output: File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
App 12676 output: File "/var/www/demo.app.com/backend/public/passenger_wsgi.py", line 1, in <module>
App 12676 output: from app import app as application
App 12676 output: File "/var/www/demo.app.com/backend/public/app.py", line 1, in <module>
App 12676 output: from Flabstraction.connect import *
App 12676 output: File "/var/www/demo.app.com/backend/public/Flabstraction/connect.py", line 1, in <module>
App 12676 output: from Flabstraction.Flabstraction import FlaskCFG, Pysqlalchemy
App 12676 output: File "/var/www/demo.app.com/backend/public/Flabstraction/Flabstraction.py", line 2, in <module>
App 12676 output: from flask import Flask
App 12676 output: ModuleNotFoundError: No module named 'flask'
[ E 2020-09-25 12:51:05.3383 12637/Tj age/Cor/App/Implementation.cpp:221 ]: Could not spawn process for application /var/www/demo.app.com/backend/public: The application process exited prematurely.
Error ID: 3611ba4d
Error details saved to: /tmp/passenger-error-6RDF9C.html
[ E 2020-09-25 12:51:05.3535 12637/T9 age/Cor/Con/CheckoutSession.cpp:276 ]: [Client 1-1] Cannot checkout session because a spawning error occurred. The identifier of the error is 3611ba4d. Please see earlier logs for details about the error.
这很奇怪,因为我在requirements
和系统本身上都安装了所有venv
。