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 目录)。
我按照官方文档将 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 目录)。