2010-12-12 35 views
13

我有一个运行全新安装的Ubuntu 10.04 LTS的VPS。我正尝试使用Flask微框架设置一个实时应用程序,但它给我带来麻烦。当我试图让它跑步时,我记下了笔记,这里是我的比赛,试图准确找出我出错的位置。看到我试图让Flask运行的任何错误? (mod_wsgi + virtualenv)

安装

http://flask.pocoo.org/docs/installation/#installation

$ adduser myapp 
$ sudo apt-get install python-setuptools 
$ sudo easy_install pip 
$ sudo pip install virtualenv 

/home/myapp/ 
-- www/ 

$ sudo pip install virtualenv 

/home/myapp/ 
-- www/ 
-- env/ 

$ . env/bin/activate 
$ easy_install Flask 

mod_wsgi的

http://flask.pocoo.org/docs/deploying/mod_wsgi/

$ sudo apt-get install apache2 
$ sudo apt-get install libapache2-mod-wsgi 

创建WSGI文件

$ nano /home/myapp/www/myapp.wsgi 

--myapp.wsgi contents:-------------------------- 
activate_this = '/home/myapp/env/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
from myapp import app as application 

/home/myapp/ 
-- www/ 
    -- myapp.wsgi 
-- env/ 

配置Apache

$ nano /etc/apache2/sites-available/myapp.com 

-----myapp.com file contents --------------------- 
<VirtualHost *:80> 
    ServerName myapp.com 

    WSGIDaemonProcess myapp user=myapp group=myapp threads=5 python-path=/home/myapp/env/lib/python2.6/site-packages 

    WSGIScriptAlias//home/myapp/www/myapp.wsgi 

    <Directory /home/myapp/www> 
     WSGIProcessGroup myapp 
     WSGIApplicationGroup %{GLOBAL} 
     Order deny,allow 
     Allow from all 
    </Directory> 
</VirtualHost> 

启用我刚刚创建

$ cd /etc/apache2/sites-enabled 
$ ln -s ../sites-available/myapp.com 

重启Apache

$ /etc/init.d/apache2 restart 

服务器我500服务器错误页的虚拟主机文件。这里是最新的错误日志:

mod_wsgi (pid=3514): Target WSGI script '/home/myapp/www/myapp.wsgi' cannot be loaded as Python module. 
mod_wsgi (pid=3514): Exception occurred processing WSGI script '/home/myapp/www/myapp.wsgi'. 
Traceback (most recent call last): 
File "/home/myapp/www/myapp.wsgi", line 4, in <module> 
from myapp import app as application 
ImportError: No module named myapp 

这些错误暗示,这是显而易见的东西,但我很迷茫。

+0

顺便说一下,你知道命令'猫'吗?它打印出文件的内容(所以在这个日志中它会自动生成你从'nano'中拷贝出来的内容) – 2010-12-12 12:20:35

回答

8

显然,它找不到您的“myapp”包。你应该把它的路径添加到您的myapp.wsgi文件是这样的:

import sys 
sys.path.append(DIRECTORY_WHERE_YOUR_PACKAGE_IS_LOCATED) 
from myapp import app 

而且,如果myapp模块是一个包,你应该把空__init__.py文件到其目录。

0

编辑行sys.path.append,它需要是一个字符串。

import sys 
sys.path.append('directory/where/package/is/located') 

注意单引号。

相关问题