Wil*_*eer 5 python apache mod-wsgi flask
我正在尝试设置烧瓶,mod_wsgi但我一直收到以下错误
(13)Permission denied: access to / denied (filesystem path '/home/ec2-user/myapp') because search permissions are missing on a component of the path
Run Code Online (Sandbox Code Playgroud)
test是烧瓶app中的有效路线.
这是我myapp.conf在/etc/httpd/conf.d文件夹中的文件
WSGIRestrictStdout Off
<VirtualHost *>
ServerName somewhere.compute-1.amazonaws.com
WSGIDaemonProcess flaskapp user=ec2-user group=ec2-user threads=5
WSGIScriptAlias / /home/ec2-user/myapp/myapp.wsgi
<Directory /home/ec2-user/myapp>
WSGIProcessGroup flaskapp
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
LogLevel notice
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
这是Apache/2.2.26因为python 2.6.8
我没有使用virtualenv.
当我启动apache时,我在error_log中看到这个通知
[Mon Feb 10 14:33:00 2014] [notice] Apache/2.2.26 (Unix) DAV/2 mod_wsgi/3.2 Python/2.6.8 configured -- resuming normal operations
Run Code Online (Sandbox Code Playgroud)
这是我的myapp.wsgi档案
from flask import Flask
application = Flask(__name__)
@application.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
application.run(host='0.0.0.0', port=80)
Run Code Online (Sandbox Code Playgroud)
运行python myapp.wsgi正常
错误似乎告诉我,我应该更改某些文件夹的一些权限,但我不知道什么文件夹.
您应该查看 Apache 文档13PermissionDenied并确保为文件夹设置正确的权限。
chmod 755 /home/ec2-user/myapp/\nRun Code Online (Sandbox Code Playgroud)\n你也可以:
\ncd /home/ec2-user/\nls -la \nRun Code Online (Sandbox Code Playgroud)\n这将输出每个文件和所有者:文件夹的每个用户组的组和权限。寻找任何不寻常的东西。
\n\n\n\n用户=姓名 | 用户=#uid.rst
\n定义运行守护程序进程时应使用的用户的 UNIX 用户名或数字用户 uid。如果未提供此选项,则守护进程将以 Apache 运行子进程的相同用户身份运行,并由 User 指令定义。
\n请注意,如果 Apache 不是以 root 用户身份启动的,则此选项将被忽略,在这种情况下,无论设置如何,守护进程都会以 Apache 启动时的用户身份运行。
\n
如果您正在运行您的用户,则apache它将不会以用户身份运行ec2-user,并且该apache用户必须有权访问所有子目录和包含的文件夹/home/ec2-user/。
您可以移动到/var/www/,chown到用户apache并从那里运行,这样您就不必移动ec2-user主目录的权限。
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |