DataPusher Production Deployment on CKAN 2.8 - OperationalError: (sqlite3.OperationalError) attempt to write a readonly database

DataPusher Production Deployment on CKAN 2.8 - OperationalError: (sqlite3.OperationalError) attempt to write a readonly database

我按照官方文档将 DataPusher 部署到生产环境 (https://docs.ckan.org/projects/datapusher/en/latest/deployment.html) 但我得到 OperationalError: (sqlite3.OperationalError) attempt to write a readonly database [SQL: u'INSERT INTO jobs...

我认识到这个错误更多地与 SQLAlchemy 有关,即 apache2 www-user 用户没有权限写入 wsgi DataPusher 应用程序用来跟踪作业的 SQLite 数据库。我对 wsgi 应用程序的经验有限,所以我不确定从哪里开始调试...

我按照官方文档进行了 T,但值得注意的是,我将其替换为同一服务器上正常运行的 DataPusher development 安装。我相信我已经删除了与开发安装相关的所有内容。

还值得注意的是,/usr/lib/ckan/default 指向 /home/ubuntu/ckan/lib/default 是一个莫名其妙的原因。我也相信这是源安装而不是包安装(因此我需要部署 DataPusher)。

我已经尝试调整位于 /home/ubuntu 中的 ckan 目录的文档,但是我认为这不重要,因为 /usr/lib/ckan/default 仍然指向相同的有效位置。

您需要 chmod 777(或类似)/etc/ckan/datapusher_settings.py 文件中指定的 sqlite (.db) 文件。

例如,datapusher_settings.py 文件包含 SQLALCHEMY_DATABASE_URI 的行,默认指向 /tmp/job_store.db

所以sudo chmod 777 /tmp/job_store.db。我认为这个特定文件的 777 不是什么大问题,但不太开放的值可能就足够了(例如 655)。最好 chown 到 apache,因为这是唯一应该访问此 sqlite 文件的东西,更不用说编辑它了。

ckan 安装在非标准目录中没有问题(在这种情况下,因为 /usr/lib/ckan/default 仍然指向 ckan 目录)。