在网站服务器上写文件时出现权限问题(使用 Flask、Apache 和 WSGI)

3

我正试图部署我的第一个web应用程序,但我对此一无所知。这非常有趣,但是当我试图解决问题时,感觉自己完全不知道在做什么。

我在digital ocean上创建了一个运行在ubuntu 18.04上的服务器,过去两天里一直在努力使我的网站顺利运行。

现在我感到接近成功,但是却卡在了权限访问问题上。

我的应用程序是通过flask工作的。我正在使用wsgi_mod和apache来运行它。

我已经放置了两个安装文件,可以帮助你(我想是这样的)以及错误日志。

我还尝试应用以下修复方法:

sudo chown -R www-data:www-data /var/www/website.com

sudo cmod -R 775 /var/www/website.com

我尝试使用WSGIDaemon进程运行wsgi(无论它用于什么,都没有起作用)。

请帮帮我!

如果您需要更多问题,请告诉我。

非常感谢!

错误日志:

Traceback (most recent call last):
File "/var/www/website.com/wsgi/website.com.wsgi", line 10, in <module>
    from __init__ import app as application
File "/var/www/website.com/akb/__init__.py", line 19, in <module>
    flask_session.Session(app)
File "/var/www/website.com/akb/env3.7/lib/python3.6/site-packages/flask_session/__init__.py", line 5$
    self.init_app(app)
File "/var/www/website.com/akb/env3.7/lib/python3.6/site-packages/flask_session/__init__.py", line 6$
    app.session_interface = self._get_interface(app)
File "/var/www/website.com/akb/env3.7/lib/python3.6/site-packages/flask_session/__init__.py", line 9$
    config['SESSION_USE_SIGNER'], config['SESSION_PERMANENT'])
File "/var/www/website.com/akb/env3.7/lib/python3.6/site-packages/flask_session/sessions.py", line 3$
    self.cache = FileSystemCache(cache_dir, threshold=threshold, mode=mode)
File "/var/www/website.com/akb/env3.7/lib/python3.6/site-packages/werkzeug/contrib/cache.py", line 7$
    os.makedirs(self._path)
File "/usr/lib/python3.6/os.py", line 220, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/flask_session'

/var/www/website/wsgi/website.com.wsgi

#!/var/www/website.com/akb/env3.7/bin/python
# -*- coding: utf-8 -*-

import sys
import logging

logging.basicConfig(stream=sys.stderr)
sys.path.insert(0,"/var/www/website.com/akb")

from __init__ import app as application
application.secret_key = 'iuhAqshdad123_&é"_JIHfduh3i123d!!:'

/etc/apache2/sites-available/website.com.conf:

WSGIPythonHome /var/www/website.com/akb/env3.7

<VirtualHost *:80>
    ServerName website.com
    ServerAdmin website.root@gmail.com
    ServerAlias www.website.com

    DocumentRoot /var/www/website.com/akb
    <Directory /var/www/website.com/akb>
        <IfVersion < 2.4>
            Order allow,deny,
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>        

    WSGIApplicationGroup %{GLOBAL}

    WSGIScriptAlias / /var/www/website.com/wsgi/website.com.wsgi

    <Directory /var/www/website.com/akb>
        WSGIProcessGroup website.com
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>

    Alias /static /var/www/website.com/akb/static
    <Directory /var/www/website.com/akb/static>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>

    Alias /templates /var/www/website.com/akb/templates
    <Directory /var/www/website.com/akb/templates>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>

    ErrorLog /var/www/website.com/errors/error.log
    LogLevel info
    CustomLog /var/www/website.com/errors/access.log combined


权限被拒绝:'/flask_session'。看起来你正在根目录上创建一个名为flask_session的目录。这是你想要做的吗?用户是否有写入根目录的权限? - DJSDev
不,我更喜欢将所有内容保持在我的env3.7 venv级别。从目前的日志来看,一切都很好,直到最后一行,但这是我正在导入的flask-session模块处理的。我不确定为什么他会在根级别而不是在我的虚拟环境文件夹中创建文件夹,也不知道如何更改该行为。 - Yomain
1个回答

3

我终于解决了问题:

  • 通过更改操作系统目录为我的环境目录(os.chdir)
  • 使用chown / chmod授予www-data编辑/创建权限

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接