我尝试在BlueHost共享主机服务器上部署Flask应用程序。我一直遵循this guide。我做了一个更改,那就是在.fcgi
文件中。我没有使用flup
。这是我的.fcgi
文件(flask.fcgi
):
#!/path/to/venv/bin/python
from wsgiref.handlers import CGIHandler
from server import app
CGIHandler().run(app)
我已经将该文件设置为可执行文件,当我从命令行(通过SSH)运行./flask.fcgi
时,它将返回索引路由的HTML页面,这正是我所期望的。但是,如果我导航到mydomain.com/flask.fcgi
,我将收到一个500 Internal Server错误。检查服务器日志,我可以看到以下消息:
/path/to/venv/bin/python: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
我以前在安装openssl
时遇到过这个错误,并通过设置LD_LIBRARY_PATH
环境变量以包含库安装位置的路径来纠正它。这是我的.htaccess
文件:
# For Flask
PassEnv LD_LIBRARY_PATH
PassEnv REQUEST_METHOD
Options +ExecCGI
AddHandler fcgid-script .fcgi
RewriteEngine On
# For Flask
RewriteCond %{REQUEST_FILENAME} !=/path/to/public_html/flask.fcgi
RewriteRule ^(.*)$ flask.fcgi/$1 [QSA,L]
RewriteOptions inherit
您可以看到,我尝试传入LD_LIBRARY_PATH
变量,但没有效果,我继续收到500个内部服务器错误,无论我是导航到mydomain.com/page
还是直接导航到mydomain.com/flask.fcgi
。
我完全不知道从这里去哪里,任何帮助将不胜感激。
1条答案
按热度按时间tjjdgumg1#
所以我发现了问题所在。在编译
openssl
和python
之前,我需要设置LD_LIBRARY_PATH
和LD_RUN_PATH
。我设置了路径,然后运行./Configure
和make && make install
来编译openssl
,同样的方法编译python
。