初投稿になります。よろしくお願いいたします。
Djangoで開発をしている際に出たPermissionErrorにどのように対応したか紹介します。
##環境
macOS X
Pythonのバージョンは以下の通りです。
$ python -V
Python 3.6.4 :: Anaconda, Inc.
$ python
>>> import django
>>> django.get_version()
'2.1.4'
##エラー内容
collectstaticコマンドを打った際に以下のエラーが出て困っていました。
(PROJECT_NAME) $ python manage.py collectstatic
PermissionError: [Errno 13] Permission denied: '/var/www'
##エラー対応
STATIC_ROOTとMEDIA_ROOTはそれぞれ以下のように設定しています。
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
STATIC_ROOT = '/var/www/{}/static'.format(PROJECT_NAME)
MEDIA_URL = '/media/'
MEDIA_ROOT = '/var/www/{}/media'.format(PROJECT_NAME)
以下のコマンドで/var/wwwを確認したところ、wwwディレクトリは存在しませんでした。
$ cd /var; ls |grep www;
自分でディレクトリを作成する必要があります。
$ cd /var
var $ mkdir www
これは、Permission denied。
mkdir: www: Permission denied
次のようにします。パスワードを聞かれるので入力します。
var $ sudo mkdir www
Password:
同じようにディレクトリを作成しましょう。
var $ cd www
www $ sudo mkdir (PROJECT_NAME)
www $ cd (PROJECT_NAME)
(PROJECT_NAME) $ sudo mkdir static
(PROJECT_NAME) $ sudo mkdir media
そして、再度collectstaticコマンドを打ってみる。
(PROJECT_NAME) $ python manage.py collectstatic
.
.
.
PermissionError: [Errno 13] Permission denied: '/var/www/(PROJECT_NAME)/static/css'
sudoをつけて挑戦。
(PROJECT_NAME) $ sudo python manage.py collectstatic
Password:
XXX static files copied to '/var/www/(PROJECT_NAME)/static'.
成功!
以上。参考にしていただける方がいたら幸いです。