首先,看到這種方式部署,我也有疑問,爲何不用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後,暫且看不到任何辣眼睛的爆紅提醒了。