SQLite-Fehler beim Versuch, in eine schreibgeschützte Datenbank zu schreiben

Ich habe Probleme damit, mein Django-Projekt mit Apache und mod_wsgi bereitzustellen. Ich hatte viele Probleme, mit denen ich fertig wurde, aber dieses scheint einfach nicht lösbar zu sein.

Ich erhalte den folgenden Fehler in meinem Apache-Protokoll, wenn ich die Adresse setakshop.ir:8080 eingebe:

[Wed May 27 05:54:24 2015] [error] Internal Server Error: /en-gb/
[Wed May 27 05:54:24 2015] [error] Traceback (most recent call last):
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 87, in get_response
[Wed May 27 05:54:24 2015] [error]     response = middleware_method(request)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/oscar/apps/basket/middleware.py", line 26, in process_request
[Wed May 27 05:54:24 2015] [error]     strategy = selector.strategy(request=request, user=request.user)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/oscar/apps/partner/strategy.py", line 39, in strategy
[Wed May 27 05:54:24 2015] [error]     return Default(request)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/oscar/apps/partner/strategy.py", line 57, in __init__
[Wed May 27 05:54:24 2015] [error]     if request and request.user.is_authenticated():
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 224, in inner
[Wed May 27 05:54:24 2015] [error]     self._setup()
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/utils/functional.py", line 357, in _setup
[Wed May 27 05:54:24 2015] [error]     self._wrapped = self._setupfunc()
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/middleware.py", line 22, in <lambda>
[Wed May 27 05:54:24 2015] [error]     request.user = SimpleLazyObject(lambda: get_user(request))
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/middleware.py", line 10, in get_user
[Wed May 27 05:54:24 2015] [error]     request._cached_user = auth.get_user(request)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/auth/__init__.py", line 152, in get_user
[Wed May 27 05:54:24 2015] [error]     user_id = request.session[SESSION_KEY]
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/base.py", line 49, in __getitem__
[Wed May 27 05:54:24 2015] [error]     return self._session[key]
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/base.py", line 175, in _get_session
[Wed May 27 05:54:24 2015] [error]     self._session_cache = self.load()
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/db.py", line 29, in load
[Wed May 27 05:54:24 2015] [error]     self.create()
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/db.py", line 41, in create
[Wed May 27 05:54:24 2015] [error]     self.save(must_create=True)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/contrib/sessions/backends/db.py", line 64, in save
[Wed May 27 05:54:24 2015] [error]     obj.save(force_insert=must_create, using=using)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 589, in save
[Wed May 27 05:54:24 2015] [error]     force_update=force_update, update_fields=update_fields)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 617, in save_base
[Wed May 27 05:54:24 2015] [error]     updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 698, in _save_table
[Wed May 27 05:54:24 2015] [error]     result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/models/base.py", line 731, in _do_insert
[Wed May 27 05:54:24 2015] [error]     using=using, raw=raw)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 92, in manager_method
[Wed May 27 05:54:24 2015] [error]     return getattr(self.get_queryset(), name)(*args, **kwargs)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 921, in _insert
[Wed May 27 05:54:24 2015] [error]     return query.get_compiler(using=using).execute_sql(return_id)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 921, in execute_sql
[Wed May 27 05:54:24 2015] [error]     cursor.execute(sql, params)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 65, in execute
[Wed May 27 05:54:24 2015] [error]     return self.cursor.execute(sql, params)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/utils.py", line 94, in __exit__
[Wed May 27 05:54:24 2015] [error]     six.reraise(dj_exc_type, dj_exc_value, traceback)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/utils.py", line 65, in execute
[Wed May 27 05:54:24 2015] [error]     return self.cursor.execute(sql, params)
[Wed May 27 05:54:24 2015] [error]   File "/usr/local/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py", line 485, in execute
[Wed May 27 05:54:24 2015] [error]     return Database.Cursor.execute(self, query, params)
[Wed May 27 05:54:24 2015] [error] OperationalError: attempt to write a readonly database

Nun habe ich diesen Fehler gegoogelt und viel gesucht, ich meine viel! Ich weiß, dass die Datei "db.sqlite" Schreibberechtigungen haben muss und Apache (WWW-Daten) Eigentümer sein sollte. Das Verzeichnis, in dem sie enthalten ist, muss Schreibberechtigungen haben und WWW-Daten gehören. und ich habe diese zwei Dinge getan. Ich habe Selinux nicht installiert, habe ./manage.py migrate ausgeführt und weiß nicht, was ich noch tun kann, um diese Funktion zu nutzen. Ich habe sogar das Verzeichnis und die Datei db.sqlite auf 777 geändert Mal sehen, ob es funktionieren wird, aber es hat nicht geklappt und ich weiß, dass das keine sichere Sache ist.

Nun zu Ihrer Information, dies ist der Ordner, der die Datei db.sqlite enthält:

-rw-rw-r-- 1 ashkan   ashkan      382 Jan 30 11:54 README.rst
-rw-rw-r-- 1 ashkan   ashkan        0 Jan 30 11:54 __init__.py
drwxrwxr-x 4 ashkan   ashkan     4096 Feb  6 15:15 apps
-rwxrwxrwx 1 www-data www-data 741376 May 27 09:11 db.sqlite
drwxrwxr-x 7 ashkan   ashkan     4096 Jan 30 11:54 deploy
drwxrwxr-x 2 ashkan   ashkan     4096 Jan 30 11:54 fixtures
drwxrwxr-x 2 ashkan   ashkan     4096 Feb 22 00:14 i18n
drwxrwxr-x 3 ashkan   ashkan     4096 Feb 23 21:45 locale
drwxr-xr-x 2 ashkan   ashkan     4096 May 26 08:33 logs
-rwxrwxr-x 1 ashkan   ashkan      242 May 26 00:22 manage.py
lrwxrwxrwx 1 ashkan   ashkan       10 May 25 23:15 oscar -> i18n/oscar
drwxrwxr-x 4 ashkan   ashkan     4096 Jan 30 21:53 public
-rw-rw-r-- 1 ashkan   ashkan    14306 May 26 00:07 settings.py
-rw-r--r-- 1 ashkan   ashkan    10230 May 26 00:23 settings.pyc
-rw-rw-r-- 1 ashkan   ashkan    14876 Feb  6 14:26 settings.py~
-rw-rw-r-- 1 ashkan   ashkan      293 Jan 30 11:54 settings_mysql.py
-rw-rw-r-- 1 ashkan   ashkan      266 May 26 00:16 settings_postgres.py
-rw-rw-r-- 1 ashkan   ashkan      162 Jan 30 11:54 settings_sphinx.py
drwxrwxr-x 2 ashkan   ashkan     4096 Feb 23 21:45 static
drwxrwxr-x 3 ashkan   ashkan     4096 Jan 30 11:54 templates
-rwxrwxr-x 1 ashkan   ashkan     1114 Jan 30 11:54 test_migrations.sh
-rwxrwxr-x 1 ashkan   ashkan     1138 Jan 30 11:54 update_latest.sh
-rw-rw-r-- 1 ashkan   ashkan     1573 Jan 30 11:54 urls.py
-rw-rw-r-- 1 ashkan   ashkan     1427 Jan 30 21:53 urls.pyc
drwxr-xr-x 2 ashkan   ashkan     4096 Jan 30 20:58 whoosh_index
-rw-rw-r-- 1 ashkan   ashkan      778 May 26 00:23 wsgi.py

und dies ist das Verzeichnis, das die Datei db.sqlite enthält:

-rw-rw-r--  1 ashkan   ashkan       866 Jan 30 11:54 README.rst
drwxrwxr-x  2 ashkan   ashkan      4096 Jan 30 11:54 _fixtures
-rw-rw-r--  1 ashkan   ashkan    897149 Feb  6 15:34 alaki
-rw-rw-r--  1 ashkan   ashkan   1818857 Feb  6 15:37 alaki.txt
drwxrwxr-x  9 ashkan   ashkan      4096 Jan 30 11:54 demo
-rw-rw-r--  1 ashkan   ashkan    443627 Feb  6 15:34 out
drwxrwxrwx 12 www-data www-data    4096 May 27 09:11 sandbox
drwxrwxr-x  5 ashkan   ashkan      4096 Jan 30 11:54 us

jede Idee, was dieses Problem verursacht? Danke

update 1:

hier ist meine Apache-Konfiguration:

Listen 8080

<VirtualHost *:8080>
    WSGIDaemonProcess setak python-path=/home/ashkan/freshcopy/django-oscar/sites/sandbox:/usr/local/lib/python2.7/site-packages 
    WSGIProcessGroup setak 
    WSGIScriptAlias / /home/ashkan/freshcopy/django-oscar/sites/sandbox/wsgi.py 
    ServerAdmin [email protected] 
    ServerName setakshop.ir:8000 
    DocumentRoot /var/www/ 

    Alias /media/ /home/ashkan/freshcopy/django-oscar/sites/sandbox/public/media/ 
    Alias /static/ /home/ashkan/freshcopy/django-oscar/sites/sandbox/public/static/ 

    <Directory /home/ashkan/freshcopy/django-oscar/sites/sandbox>
    <Files wsgi.py>
        Order allow,deny
        allow from all
    </Files>    
    </Directory>    

    <Directory /home/ashkan/freshcopy/django-oscar/sites/sandbox/public/static>
        Order allow,deny
        allow from all
    </Directory>

    <Directory /home/ashkan/freshcopy/django-oscar/sites/sandbox/public/media>
        Order allow,deny
        allow from all
    </Directory>    

    DocumentRoot /var/www
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel info

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

update 2:

hier ist meine wsgi.py:

import os
import sys
import site
import urllib

sys.stdout = sys.stderr

# Project root
root = '/home/ashkan/django-oscar/sites/sandbox'
sys.path.insert(0, root)

# Packages from virtualenv
activate_this = '/home/ashkan/django-oscar/oscar/bin/activate_this.py'
execfile(activate_this, dict(__file__=activate_this))

# Set environmental variable for Django and fire WSGI handler
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.core.wsgi import get_wsgi_application
_application = get_wsgi_application()

def application(environ, start_response):
    environ['PATH_INFO'] = urllib.unquote(environ['REQUEST_URI'].split('?')[0])
    return _application(environ, start_response)

Antworten auf die Frage(0)

Ihre Antwort auf die Frage