web-dev-qa-db-ja.com

Graphite SQLite3 DatabaseError:読み取り専用データベースを書き込もうとしました

Slqiteデータベースを使用してApachehttpdでgraphiteを実行すると、正しいフォルダー権限があります

[root@liaan55 httpd]# ls -ltr /var/lib | grep graphite
drwxr-xr-x. 2 Apache        Apache        4096 Aug 23 19:36 graphite-web

そして

[root@liaan55 httpd]# ls -ltr /var/lib/graphite-web/
total 68
-rw-r--r--. 1 Apache apache 65536 Aug 23 19:46 graphite.db

syncdbもうまくいったようです

[root@liaan55 httpd]# Sudo -su Apache
bash-4.1$ whoami
Apache
bash-4.1$ python /usr/lib/python2.6/site-packages/graphite/manage.py syncdb
/usr/lib/python2.6/site-packages/graphite/settings.py:231: UserWarning: SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security
  warn('SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security')
/usr/lib/python2.6/site-packages/Django/conf/__init__.py:75: DeprecationWarning: The ADMIN_MEDIA_PREFIX setting has been removed; use STATIC_URL instead.
  "use STATIC_URL instead.", DeprecationWarning)
/usr/lib/python2.6/site-packages/Django/core/cache/__init__.py:82: DeprecationWarning: settings.CACHE_* is deprecated; use settings.CACHES instead.
  DeprecationWarning
Creating tables ...
Creating table account_profile
Creating table account_variable
Creating table account_view
Creating table account_window
Creating table account_mygraph
Creating table dashboard_dashboard_owners
Creating table dashboard_dashboard
Creating table events_event
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table Django_session
Creating table Django_admin_log
Creating table Django_content_type
Creating table tagging_tag
Creating table tagging_taggeditem

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'Apache'): root
E-mail address: [email protected]
Password: 
Password (again): 
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
bash-4.1$ exit

local-settings.pyファイルは次のとおりです

STORAGE_DIR = '/var/lib/graphite-web'

INDEX_FILE = '/var/lib/graphite-web/index' 

DATABASES = {
    'default': {
        'NAME': '/var/lib/graphite-web/graphite.db',
        'ENGINE': 'Django.db.backends.sqlite3',
        'USER': '',
        'PASSWORD': '',
        'Host': '',
        'PORT': ''
    }
}

まだこのエラーが発生します

[Sat Aug 23 19:47:17 2014] [error] [client 10.42.33.238]   File "/usr/lib/python2.6/site-packages/Django/db/backends/sqlite3/base.py", line 344, in execute
[Sat Aug 23 19:47:17 2014] [error] [client 10.42.33.238]     return Database.Cursor.execute(self, query, params)
[Sat Aug 23 19:47:17 2014] [error] [client 10.42.33.238] DatabaseError: attempt to write a readonly database

この構成に何が欠けているのかわからない

2
Anadi Misra

所有者とグループの親、つまり/var/lib/graphiteがチェックされました。どちらもApacheではなく_graphiteであることが判明しました。所有者とグループを_graphiteに変更し、Apache2を再起動します。

user@Host:~$ Sudo chown _graphite:_graphite /var/lib/graphite/graphite.db 
user@Host:~$ Sudo service Apache2 restart

ubuntuXenialの問題を解決しました。

5
030

グラファイトのインストール ドキュメントから:

データベースファイルへのアクセスで問題が発生した場合は、データベースファイルの所有権をApacheプロセスを所有しているのと同じユーザーに変更する必要がある場合があります。ディストリビューションでApacheがユーザー「nobody」として実行されている場合:

Sudo chown nobody:nobody /opt/graphite/storage/graphite.db

私の場合、CentOSにGraphiteのRPMインストールを使用しているため、graphite.dbファイルは次の場所にあります。

-rw-r--r-- 1 Apache apache 69632 Sep 30 08:02 /var/lib/graphite-web/graphite.db
1
havoc1