我正在尝试用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在烧瓶应用程序中,测试是一个有效的途径。
这是我在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>这里是Apache/2.2.26和python 2.6.8
我没有使用虚拟技术。
当我启动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这是我的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)只运行python myapp.wsgi很好
这个错误似乎告诉我应该更改对某个文件夹的一些权限,但是我不知道是哪个文件夹。
发布于 2014-02-10 16:09:18
您应该签出13PermissionDenied的Apache,并确保为您的文件夹设置了正确的权限。
chmod 755 /home/ec2-user/myapp/您还可以:
cd /home/ec2-user/
ls -la 它将输出每个文件和所有者:组和您文件夹的每个用户组的权限。寻找任何不寻常的东西。
user=name \ user=#uid.rst 定义守护进程应该以何种身份运行的用户的UNIX用户名或数字用户uid。如果没有提供此选项,守护进程将作为Apache将运行子进程的相同用户运行,并由用户指令定义。 注意,如果Apache不是作为根用户启动的,则忽略此选项,在这种情况下,无论设置是什么,守护进程都将以Apache启动时的用户身份运行。
如果您以apache的身份运行您的用户,它将不会以ec2-user的形式运行,并且apache用户必须有权访问所有子目录和包含的文件夹/home/ec2-user/。
您可以移动到/var/www/,chown移到用户apache,然后从那里运行,这样您就不必移动ec2-user主目录的权限。
发布于 2014-02-10 23:12:05
这个问题也是在mod_wsgi邮件列表中提出的。请参阅邮件列表上的讨论。后续行动将出现在邮寄名单上。
发布于 2016-11-29 17:50:20
我被困在这件事上,找不到任何有用的解释。我甚至尝试给apache一个临时shell来测试文件权限,但仍然一无所获。我终于找到了一个解决方案,记录在这里。
简而言之:如果SELinux被配置为禁止访问所讨论的目录/文件,也可以生成此错误。检查您的audit.log并在必要时更改文件的安全上下文。
chcon --user system_u --type httpd_sys_content_t -Rv /home/ec2-user/myapp/在任何可能引起的安全风险方面,没有明示或暗示的保证。我使用的是gcloud/CentOS7 7默认配置,但我不知道这是平台还是发行版特定的配置。
祝好运!
https://stackoverflow.com/questions/21678826
复制相似问题