flask+apache+mod-wsgi部署遇到的坑

  首先,看到這種方式部署,我也有疑問,爲何不用nginx,gunicorn。接手的項目,就先按照前人思路run起來。python

  線上使用ubuntu系統,apache2,而給我玩耍的測試機是centos6.5,就按照這個裝了httpd和mod-wsig,都是python2環境。一路下來,遇到下面幾個問題:jquery

  1、403Forbiddennginx

  網站上各路大神基本指明是目錄權限問題,開始只給個人項目目錄指定權限:chmod -R 777 /root/autobase_pj,無效。後改:chmod 755 /root,403消除了。web

 

  2、500錯誤,ImportError: No module named ...express

  tail -f /var/log/httpd/error_log  能夠看到是沒找到flask相關依賴,因此得進到虛擬環境,在項目根目錄下的.wsgi中配置一下path:apache

import sys
import site
sys.path.insert(0,"/root/autobase_pj");
site.addsitedir("/root/autobase/lib/python2.7/site-packages");
from manage import app as application
activate_this = 'root/autobase/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

  

  3、仍是500錯誤,... flask/helpers.py", line 628, in send_file ...,TypeError: make_conditional() got an unexpected keyword argument 'accept_rangesflask

  日誌說明flask內部文件報錯,查看日誌開始apache啓動的時候:[notice] Apache/2.2.15 (Unix) mod_wsgi/4.6.2 Python/2.6 DAV/2 configured -- resuming normal operations。可見python版本不對,mod-wsgi默認是使用python2.6,執行mod_wsgi-express module-config,獲得:ubuntu

LoadModule wsgi_module "/usr/lib64/python2.7/site-packages/mod_wsgi/server/mod_wsgi-py27.so"
WSGIPythonHome "/usr"

將其複製粘貼到/etc/httpd/conf/httpd.conf 一堆LoadModule中,保存重啓service httpd restart便可。本身的網頁就能夠打開了。centos

 

  4、部分image和js沒法加載app

  apache跟nginx差很少,應該須要指定下靜態文件路徑,在httpd.conf最下面VirtualHost中WSGIScriptAlias 指定wsgi文件下面加上Alias /static /root/autobase_pj/app/static,你的靜態文件路徑,重啓apache,暫且正常了。

 

  5、web首頁控制檯報錯,Cannot read property 'defaults' of undefined TypeError: Cannot read property 'defaults' of undefined

百度一番,js加載順序有問題,在頁面中加載jquery下面加載jquery.dataTables.js,保存,重啓apache後,暫且看不到任何辣眼睛的爆紅提醒了。

相關文章
相關標籤/搜索