Apache、Django、Django CMS、および mod_wsgi がある CentOS サーバーがあります。私の Django プロジェクト ファイルは/srv
ディレクトリに保存され、セキュリティ上の理由から SELinux をオンにしています。
Django-CMS を Django にうまく統合できました。ローカル IP にアクセスすると、自分のページが表示されます。ただし、/admin (CMS 機能の利用を開始できる場所) にアクセスしようとすると、DatabaseError at /admin/ attempt to write a readonly database
.
わかった。
そのため.sqlite
、プロジェクト フォルダーにファイルがあるため、そのファイルに対して を実行すると、次の結果ls -l
が返されました。
-rw-r--r--. 1 root root 133120 Jan 5 11:53 DATABASE.sqlite
さて、私はおそらく Apache がパーミッションの理由でそのファイルを読み取れなかったのではないかと考えたので、Stackoverflow で同様の問題について一連の調査を行った後、次のコマンドを実行しました。
> chmod 664 DATABASE.sqlite
> chown apache /srv/mysite
> chown apache /srv/mysite/DATABASE.sqlite
これで、ls -l
出力は次のようになります。
-rw-rw-r--. 1 apache root 133120 Jan 5 11:53 DATABASE.sqlite
残念ながら、Django アプリで /admin にアクセスしようとすると、まだ同じエラーが発生します。どんな助けでも大歓迎です!おそらく SELinux パーミッションと関係がありますが、どのパーミッションの問題が発生しているかを診断するためにどこから始めればよいかわかりません。
編集:
走った
> chown apache:apache /srv/mysite
> chown apache:apache /srv/mysite/DATABASE.sqlite
ディレクトリとファイルのls -l
所有者が. ただし、ページにアクセスしようとすると、まだエラーが発生します。ディレクトリを 757 に、ファイルを 756に編集しました。これが、アクセス許可を取得するためにできる最善の方法だからです。これはセキュリティ上のリスクであると言われましたが、アクセス許可を減らしてエラーを回避する方法がわかりません。SELinuxのせいですか?mysite
.sqlite
apache
/admin
chmod
/srv/mysite
DATABASE.sqlite
unable to read/open database file
参考までに、昇格する必要があるときはいつでも CentOS と sudo の通常のユーザー アカウントで操作しています。
[noblerare@localhost ]$