我已经在互联网上完成了所有可能的解决方案,但我无法让 pyobdc 获得 heroku 上的驱动程序。
我用来创建应用程序的步骤如下:
heroku create
heroku config:set FLASK_CONFIG=heroku
heroku buildpacks:add heroku/python
heroku buildpacks:add --index 1 heroku-community/apt
git push heroku master
Run Code Online (Sandbox Code Playgroud)
我什至尝试使用 odbc buildpack 但仍然没有运气:
heroku buildpacks:add https://github.com/iFix/heroku-buildpack-odbc.git
Run Code Online (Sandbox Code Playgroud)
在浏览微软网站后,我精简了我的 Aptfile 以指导 heroku 安装以下软件包:
# install msodbcsql17
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql17/msodbcsql17_17.4.2.1-1_amd64.deb
# install mssql-tools
https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/mssql-tools/mssql-tools_17.4.1.1-1_amd64.deb
# install unixodbc-dev
unixodbc-dev
Run Code Online (Sandbox Code Playgroud)
这使得 pyodbc 安装没有错误。但是当我运行 pyodbc.drivers() 时,它什么都不返回。Ubuntu 16.04 上的相同命令返回“ODBC Driver 17 for SQL Server”
该项目的源代码位于:https : //github.com/IamVNIE/odbcTestHeroku
托管应用程序位于:https : //pyodbctest.herokuapp.com/
有人可以提供一些指导来完成这项工作。
我当前的配置如下所示。我有从 VM1 上的 EC2 实例交付的前端。HTTPS API 服务器位于由 Cloudfare 代理的 VM2 上。如果我直接从 Web 浏览器调用 VM2 上的 API,则一切正常。但是,如果我使用 proxy_pass 与 VM2 上的 API 进行通信,则会抛出 502 bad gateway 错误。
HTTPS API 服务器位于 Cloudflare 代理后面。我的 NGINX 配置如下。
location /mainPageApi {
proxy_pass https://apiserver.com/mainPageApi;
proxy_set_header Host $host;
proxy_ssl_name $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
}
Run Code Online (Sandbox Code Playgroud)
检查日志,我收到以下错误:
[error] 7109#7109: *3 SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: <Client IP>, server: <VM1_Host_Name>, request: "POST …Run Code Online (Sandbox Code Playgroud) angular ×1
buildpack ×1
cloudflare ×1
heroku ×1
nginx ×1
nginx-config ×1
odbc ×1
pyodbc ×1
sql-server ×1