- Linux
- Python
- Django
Суть питання в заголовку. Встановлювати пробую на локальній машині з Ubuntu. Поки для виконання завдання зроблено по інструкції наступне:
Прописав в settings.py нову директорію для статики:
STATIC_ROOT = '/ opt / mag / static /'
Але коли намагаюся зібрати статику:
python manage.py collectstatic
Виконати ту ж команду через sudo - криве рішення: а якби у мене конкретно для цього проекту були особливі версії пакетів?
У проекті статика (як і в будь-якій папці всередині anton) розпаковується нормально.
Переходимо в папку з настройками nginx:
cd / etc / nginx / sites-available /
Відкриваємо файл default і вносимо наступне:
Результат в консолі:
(Mag_env) anton @ anton-X451CA:
Як бачите, статика все-таки не довантажити. При запуску проекту через python manage.py runserver проблеми зі статикою немає.
Що треба зробити?
Налаштував згідно з інструкцією і спробував тестувати обома варіантами по черзі:
gunicorn magazine_project.wsgi
gunicorn magazine_project.wsgi: application --bind 192.168.10.4:8000
Поетапно опишу, що відбувається, поки роблю все за інструкцією.
На старті вже є налаштований Django-проект, який справно працює через python manage.py runserver, так що пропускаю етап настройки оточення і додатки. Про всяк випадок зазначу:
STATIC_ROOT = os.path.join (BASE_DIR, 'static')
Отже, що я роблю по інструкції.
Створюю /etc/systemd/system/gunicorn.service і вношу туди наступні дані:
Дивно, але при цьому друга команда спрацювала без помилок:
Сподіваюся, такий результат і потрібен. До слова, в папці проекту з'явився файл magazine.sock.
Далі прописую команди:
sudo systemctl daemon-reload
sudo systemctl restart gunicorn
Після цього переходжу в / etc / nginx / sites_available і правлю файл default, вносячи такі параметри:
Створюю посилання в site_enabled:
sudo ln -s / etc / nginx / sites-available / default / etc / nginx / sites-enabled
sudo nginx -t показується, що всі enabled, successful і взагалі добре. Прописую інше:
sudo systemctl restart nginx
sudo ufw delete allow 8000
sudo ufw allow 'Nginx Full'
Ось і все, що я зробив. Статика все ще не працює, якщо намагатися пов'язати сайт зі своїм IP, а не з локальним хостом. Чого бракує?
все виявилося простіше. Не впевнений, що допомогло саме це, так як я багато чого робив за раз, але попзреваю, що вся справа вдобавленіі статики в urls.py
urlpatterns = [
url (r '^ admin /', admin.site.urls),
url (r '^ cart /', include ( 'shop_cart.urls', namespace = 'cart')),
url (r '^ order /', include ( 'orders.urls', namespace = 'orders')),
url (r '', include ( 'main_site.urls')),
] + Static (settings.MEDIA_URL, document_root = settings.MEDIA_ROOT) \
+ static (settings.STATIC_URL, document_root = settings.STATIC_ROOT)
Раніше додавав тільки медіа.