2013-07-14 1 views
5

Sto utilizzando FlaskApp utilizzando mod_wsgi e apache2 sul server Ubuntu. Ho provato a eseguire l'app per flask su localhost e poi a distribuirla su ubuntu server.OperationalError: tentativo di scrivere un database di sola lettura sul server ubuntu

Ma quando provo ad aggiornare il database, il suo dando errore: 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)

Ora ho provato look per l'autorizzazione file di database che è: -rwxr-xr-x 1 www-data www-data 10240 Jul 14 15:35 /var/www/mywebsite/appfolder/appdata.db

quando provo cambiare il permesso di 777, 755, 644 etc. mostra un altro errore: unable to open database file Sebbene il file di database funzioni correttamente con un'autorizzazione 644 su localhost ma non su server ubuntu.

Inoltre ho controllato il permesso di directory e per /var/var/www/var/www/mywebsite/var/www/mywebsite/appfolder ecc, tutti hanno www-data:www-data come il suo nome utente e gruppo proprietario.

Ho provato su google e ma nessuna soluzione adeguata oltre a suggerire di modificare i permessi file/dir, che ho provato io stesso.

Perché non è possibile leggere/accedere al file di database?

Si prega di suggerire.

+0

Hai utilizzato uid (http://uwsgi-docs.readthedocs.org/en/latest/Options.html#uid) e gid (http://uwsgi-docs.readthedocs.org/en/latest/Options .html # gid) per eseguire uwsgi. Quale utente inizia uwsgi? – tbicr

+0

Stai utilizzando un percorso assoluto per il file di database? Sotto mod_wsgi la directory di lavoro corrente non sarà dove pensi che dovrebbe essere e i percorsi relativi falliranno. Per diritti se questo è ciò che stai facendo, allora non troverà nemmeno un file di database, ma vale la pena controllare. Confermare inoltre che i processi delle applicazioni Web sono in effetti in esecuzione come www-data. –

risposta

6

risolto il problema. Era dovuto al conflitto di autorizzazione del file di database.

+10

Potresti aggiornare la tua domanda con la tua soluzione in modo che le persone che cercano SO in futuro possano vedere cosa hai fatto? –

+1

Correzione: è necessario trovare il file di database nel sistema e consentire l'accesso alla scrittura. (per esempio, accedi a tutti: sudo chmod a + w file.db) – mulya