Django2.0 Collectstatic и Admin Issue - PullRequest
       54

Django2.0 Collectstatic и Admin Issue

0 голосов
/ 25 апреля 2018

Я развертываю Django web application на моем новом сервере, чтобы установить производственное приложение.

Через 2 дня для настройки Apache2 и wsgi я получаю новую проблему в соответствии со статическими файлами и страницей администрирования.

Моя производственная среда:

  • Ubuntu Server 16.4
  • Джанго 2.0.1
  • Python 3.5.2
  • Apache 2.4
  • WSGI

Моя статическая среда:

DatasystemsCORE
├── DatasystemsCORE
│   ├── settings.py
├── API-GED
├── Authentification
├── Configuration
├── Templates
├── static
│   ├── Theme
│      ├── Theme1
│          ├── css
│          ├── js
│          ├── images
│          ├── flags
│      ├── Theme2
│          ├── css
│          ├── js
│          ├── images
│          ├── flags
├── ...

Как видите, у меня есть статический каталог, который содержит все статические файлы в функции выбранной темы.

Я должен сделать: python3 manage.py collectstatic, чтобы импортировать статические файлы в соответствии с разделом Администрирование в моем статическом каталоге.

Мой файл settings.py:

# Static files (CSS, JavaScript, Images)
# http://docs.djangoproject.com/en/2.0.1/howto/static-files/

STATIC_URL = '/static/'
THEME_DIRS = os.path.join(BASE_DIR, "static", "Theme/")
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static"), THEME_DIRS, ]

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static')

TraceBack:

Copying '/var/www/html/DatasystemsCORE/static/Theme/Datasystems/css/Base.css'
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/core/management/__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/core/management/__init__.py", line 365, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/core/management/base.py", line 288, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/core/management/base.py", line 335, in execute
    output = self.handle(*args, **options)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 189, in handle
    collected = self.collect()
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 114, in collect
    handler(path, prefixed_path, storage)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 354, in copy_file
    self.storage.save(prefixed_path, source_file)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/core/files/storage.py", line 49, in save
    return self._save(name, content)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/core/files/storage.py", line 236, in _save
    os.makedirs(directory)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/os.py", line 231, in makedirs
    makedirs(head, mode, exist_ok)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/os.py", line 231, in makedirs
    makedirs(head, mode, exist_ok)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/os.py", line 231, in makedirs
    makedirs(head, mode, exist_ok)
  File "/home/valentin/.virtualenvs/DSCoreEnv/lib/python3.5/os.py", line 241, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/var/www/html/DatasystemsCORE/DatasystemsCORE/static'

Я не понимаю, почему Django создает статический каталог за пределами моего существующего статического каталога? Почему мне отказано в разрешении?

Как я могу импортировать статический элемент Admin в мой статический каталог?

Я предполагаю, что статические файлы поступают по этому пути: .virtualenvs/DSCoreEnv/lib/python3.5/site-packages/django/contrib/admin/static/admin/

1 Ответ

0 голосов
/ 27 апреля 2018

Я публикую этот ответ на основе ответа Alasdair, который помог мне решить мою проблему.

Я не смог собрать статические файлы, потому что мой каталог был внутри моего Django Web Project. Это была ошибка, и я создал новый каталог за пределами моего проекта Django.

Я указал путь в моем файле settings.py. Затем я выполнил эту команду:

python manage.py collectstatic

На самом деле, все статические файлы находятся в моей директории ne, за пределами Django Project, и она отлично работает!

...