Я пытаюсь разместить простой веб-сайт Python Flask, который подключается к базе данных Oracle.
До сих пор мне удалось установить cx_Oracle (а также клиент Oracle и SDK) на хост Ubuntu и успешно разместить приложение Flask с использованием Apache2 и mod_wsgi.
Я следовал этому руководству по установке cx_Oracle: Я выполнил это руководство для размещения: http://blog.garethdwyer.co.za/2013/07/getting-simple-flask-app-running-on.html
Все приложение отлично работает при локальном запуске из экземпляра. Я использовал x-forwarding и firefox, чтобы проверить это.
Однако, когда я пытаюсь разместить публично, работая через wsgi, он может загрузить приложение фляги, но терпит неудачу, когда его просят получить доступ к базе данных Oracle. Я не могу получить журналы ошибок, так как журналы Apache показывают только то, что я вручную распечатываю через Python. (Если у кого-то есть решение для ЭТОГО, сообщите, пожалуйста).
Я потратил слишком много времени, пытаясь организовать хостинг — это должно быть намного проще, чем есть на самом деле. Решения?
Моя структура каталогов
->/var/www/SACK
->app.py
->app.wsgi
->satic/
->templates/
->/etc/apache2/sites-available
->sitename.com.config
->/opt/oracle/instant_client_12_1
->... Oracle client stuff. SDK included.
app.py
app = Flask(__name__)
...
def connectToDB():
ip = '...'
port = ...
SID = '...'
dsn_tns = cx_Oracle.makedsn(ip, port, SID)
global connection
connection = cx_Oracle.connect('...', '...', dsn_tns)
print "connection successful"
global cursor
cursor = connection.cursor()
def closeConnection():
cursor.close()
connection.close()
print "connection closed"
def main():
connectToDB()
app.run()
closeConnection()
if __name__ == '__main__':
main()
Из этих руководств, вот как мое приложение настроено для wsgi:
app.wsgi
import sys
sys.path.insert(0, '/var/www/SACK')
from app import app as application
Конфигурация сайта:
имя_сайта.com.config
<VirtualHost *:80>
WSGIDaemonProcess SACK
WSGIScriptAlias / /var/www/SACK/app.wsgi
<Directory /var/www/SACK>
WSGIProcessGroup SACK
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
LogLevel info
ErrorLog "/var/log/apache2/error.log"
CustomLog "/var/log/apache2/access.log" combine
</VirtualHost>