所以我一直被這個問題困住了一天。我對AWS EC2比較陌生,所以一直在嘗試使用Python Flask應用程序。在AWS EC2上的Apache燒瓶 - 讀/寫失敗
我有一個Ubuntu實例,並且可以使用Apache2和WSGI獲得燒瓶應用程序以正常運行它。唯一的問題是每當我在我的應用程序中放入一行代碼,請求在文件系統上讀取或寫入服務器錯誤時,但錯誤日誌不會產生錯誤。
這裏的一些調試輸出的錯誤該網站的功能:
def cleanup_temps():
basePath = os.path.dirname(os.path.realpath('__file__')) + '/static/images/temp/'
deleteDelay = 20
print '1'
for f in os.listdir(basePath):
print '2'
if os.path.getctime(basePath + f) < (time.time() - deleteDelay):
print '3'
os.remove(basePath + f)
當我打開調用該函數,它只是給了我一個內部服務器錯誤的頁面,並檢查/var/log/apache2/error.log
出現的唯一線路調試打印'1'。 奇怪的是,如果我在本地運行該服務器,它工作正常。即使我通過python shell在EC2實例上手動運行該函數,它仍然可以正常工作。所以我認爲這可能與Apache或WSGI權限有關?
我已經將整個燒瓶站點更改爲chmod -R 777
,並將root用戶:組從root:root更改爲ubuntu:ubuntu,但是這似乎並沒有改變?
我現在有點空白,說實話,所以不知道我還能嘗試什麼?
良好的措施,這裏是我/etc/apache2/sites-available/ImgResizeApi.conf
文件:
<VirtualHost *:80>
WSGIDaemonProcess ImgResizeApi
WSGIScriptAlias//var/www/ImgResizeApi/ImgResizeApi.wsgi
<Directory /var/www/ImgResizeApi>
WSGIProcessGroup ImgResizeApi
WSGIApplicationGroup %{GLOBAL}
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
編輯:我敢肯定它現在是與權限,因爲我做了一個更簡單的測試,將下面的功能,儘快因爲3個文件IO行添加錯誤的服務器!
@ImgResizeApi.route('/test')
def test():
f = open('test.txt', 'w')
f.write('Hi there')
f.close()
return render_template('index.html')