2013-07-14 34 views
5

Tôi đang chạy một FlaskApp sử dụng mod_wsgiapache2 trên máy chủ Ubuntu. Tôi đã thử chạy ứng dụng bình trên localhost thành công và sau đó triển khai nó trên máy chủ ubuntu.OperationalError: cố gắng viết một cơ sở dữ liệu chỉ đọc trong máy chủ ubuntu

Nhưng khi tôi cố gắng cập nhật cơ sở dữ liệu, lỗi cho nó: Failed to update model. (OperationalError) attempt to write a readonly database u'UPDATE mysongs SET songurl=? WHERE songid.id = ?' (u'www.site.com/I_wanna_dance', 1)

Bây giờ tôi đã cố gắng nhìn cho phép tập tin cơ sở dữ liệu đó là: -rwxr-xr-x 1 www-data www-data 10240 Jul 14 15:35 /var/www/mywebsite/appfolder/appdata.db

Khi tôi cố gắng thay đổi phép 777, 755, 644, vv nó cho thấy một lỗi khác: unable to open database file Mặc dù tệp cơ sở dữ liệu hoạt động tốt với quyền 644 trên localhost nhưng không có trên máy chủ ubuntu.

Ngoài ra tôi đã kiểm tra quyền của các thư mục và cho /var/var/www/var/www/mywebsite/var/www/mywebsite/appfolder v.v., tất cả đều có www-data:www-data làm tên người dùng và nhóm chủ sở hữu của nó.

Tôi đã thử googling và không có giải pháp thích hợp nào khác ngoài đề xuất thay đổi quyền truy cập tệp/thư mục mà tôi đã thử.

Tại sao nó không thể đọc/truy cập tệp cơ sở dữ liệu?

Vui lòng đề xuất.

+0

Bạn đã sử dụng uid (http://uwsgi-docs.readthedocs.org/en/latest/Options.html#uid) và gid (http://uwsgi-docs.readthedocs.org/en/latest/Options) .html # gid) để chạy uwsgi. Người dùng nào bắt đầu uwsgi? – tbicr

+0

Bạn có đang sử dụng đường dẫn tuyệt đối đến tệp cơ sở dữ liệu không? Dưới mod_wsgi thư mục làm việc hiện tại sẽ không được nơi bạn nghĩ rằng nó nên được và đường dẫn tương đối sẽ thất bại. Bởi quyền nếu đây là những gì bạn đang làm, sau đó nó thậm chí sẽ không tìm thấy một tập tin cơ sở dữ liệu, nhưng giá trị kiểm tra. Đồng thời xác nhận rằng các quy trình ứng dụng web trên thực tế đang chạy dưới dạng www-data. –

Trả lời

6

Đã giải quyết sự cố. Đó là do xung đột quyền sở hữu tệp cơ sở dữ liệu.

+10

Bạn có thể cập nhật câu hỏi của mình với giải pháp để mọi người tìm kiếm SO trong tương lai có thể xem bạn đã làm gì không? –

+1

Khắc phục: Bạn cần phải tìm tệp cơ sở dữ liệu trong hệ thống của mình và cấp quyền truy cập để viết. (ví dụ git truy cập vào tất cả: sudo chmod a + w file.db) – mulya