我正在尝试在BlueHost共享主机服务器上部署Flask应用程序。我一直在遵循这个指南。我做了一个更改,在.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内部服务器错误。检查服务器日志,我可以看到这样的消息:
/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
。
我完全不知道该怎么办了,请您帮助我将不胜感激。
所以我知道问题是什么了。在编译openssl
和python
之前,我需要设置LD_LIBRARY_PATH
和LD_RUN_PATH
。我设置了路径,然后对openssl
运行./Configure
和make && make install
,对python
也是如此。