Почему отображается ошибка: The requested URL / was not found on this server. (Django)? - Python

Узнай цену своей работы

Формулировка задачи:

Ребят, всем привет. Ставлю проект на Django. Не могу решить ситуацию. Захожу на сайт, появляется ошибка: The requested URL / was not found on this server. Если я кидаю в общую папку Templates 404.html - отображается эта страница. Что я сделал: 1) Создал проект на базе Django 1.9.2 и python 3.4.3 в PyCharm. 2) Заказал себе VPS на Cent OS7 и привязал его к хостингу. 3) Создал пользователя с sudo правами: bakotiinii 4) Установил время сервера. 5) Установил EPEL
Листинг программы
  1. sudo yum install epel-release
6) Установил PostgreSQL
Листинг программы
  1. sudo yum install python-pip python-devel postgresql-server postgresql-devel postgresql-contrib gcc nginx
7) Настроил PostgreSQL
Листинг программы
  1. sudo postgresql-setup initdb
  2. sudo systemctl start postgresql
  3. sudo nano /var/lib/pgsql/data/pg_hba.conf
Настраиваем базу для доступа под юзером
Листинг программы
  1. # TYPE DATABASE USER ADDRESS METHOD
  2. # "local" is for Unix domain socket connections only
  3. local all all peer
  4. # IPv4 local connections:
  5. #host all all 127.0.0.1/32 ident
  6. host all all 127.0.0.1/32 md5
  7. # IPv6 local connections:
  8. #host all all ::1/128 ident
  9. host all all ::1/128 md5
  10. Делаем базе автозапуск
  11. sudo systemctl restart postgresql
  12. sudo systemctl enable postgresql
8) Создаем пользователя для базы данных:
Листинг программы
  1. sudo su - postgres
  2. psql
  3. CREATE DATABASE myproject;
  4. CREATE USER myprojectuser WITH PASSWORD 'password';
  5. GRANT ALL PRIVILEGES ON DATABASE myproject TO myprojectuser;
9) Ставим Python 3.4.3
Листинг программы
  1. sudo yum install python34-devel
10) Ставим виртуальное окружением
Листинг программы
  1. sudo pip install virtualenv
10) Создаем виртуальное окружение в корне под управлением Python 3.4.3
Листинг программы
  1. mkdir ~/apifolder
  2. cd ~/apifolder
  3. mkvirtualenv -p /usr/local/bin/python3.4 djangoen
11) Активируем виртуальное окружение
Листинг программы
  1. source djangoen/bin/activate
12) Ставим Django, Gunicorn и управляющий psycopg2
Листинг программы
  1. pip install django==1.9.2 gunicorn psycopg2
13) Создаем проект Django в текущей папке (имя проекта то же самое, что и имеет мое в PyCharm):
Листинг программы
  1. django-admin.py startproject apifolder .
14) Заменяю папку проекта своим проектом из PyCharm через FTP 15) Вношу изменения в settings.py - подключаю базу, подключаю статику и ставим хосты:
Листинг программы
  1. DATABASES = {
  2. 'default': {
  3. 'ENGINE': 'django.db.backends.postgresql',
  4. 'NAME': 'myproject',
  5. 'USER': 'myprojectuser',
  6. 'PASSWORD': 'password',
  7. 'HOST': 'localhost',
  8. 'PORT': '',
  9. }
  10. }
  11.  
  12. STATIC_URL = '/static/'
  13. MEDIA_URL = '/media/'
  14. STATIC_ROOT = os.path.join(BASE_DIR, "static")
  15. MEDIA_ROOT = os.path.join(BASE_DIR, "media")
  16. STATICFILES_DIRS = (
  17. )
  18. DEBUG = True
  19. ALLOWED_HOSTS = [
  20. '*',
  21. ]
16) В моделях проекта используется ImageField, поэтому ставлю Pillow (Сначала зависимые пакеты, потом само Pillow), после чего Django перестает ругаться.
Листинг программы
  1. sudo yum install libtiff-devel libjpeg-devel libzip-devel freetype-devel lcms2-devel libwebp-devel tcl-devel tk-devel
  2. pip install Pillow
17) Проверяем базу данных, делаем миграцию и собираем статику
Листинг программы
  1. cd ~/apifolder
  2. ./manage.py makemigrations
  3. ./manage.py migrate
  4. ./manage.py collectstatic
Деактивируем виртуальное окружение 18) Ставим конфиг Юникорну
Листинг программы
  1. sudo nano /etc/systemd/system/gunicorn.service
  2. [Unit]
  3. Description=gunicorn daemon
  4. After=network.target
  5. [Service]
  6. User=bakotiinii
  7. Group=nginx
  8. WorkingDirectory=/home/bakotiinii/apifolder
  9. ExecStart=/home/bakotiinii/apifolder/djangoen/bin/gunicorn --workers 3 --bind unix:/home/bakotiinii/apifolder/apifolder.sock apifolder.wsgi:application
  10. [Install]
  11. WantedBy=multi-user.target
Делаем его перезапуск:
Листинг программы
  1. sudo systemctl start gunicorn
  2. sudo systemctl enable gunicorn
19) Настраиваю nGinx
Листинг программы
  1. sudo nano /etc/nginx/nginx.conf
  2. server {
  3. listen 80;
  4. server_name example.ru [url]www.example.ru;[/url]
  5. location = /favicon.ico { access_log off; log_not_found off; }
  6. location /static/ {
  7. root /home/bakotiinii/apifolder;
  8. }
  9. location / {
  10. proxy_set_header Host $http_host;
  11. proxy_set_header X-Real-IP $remote_addr;
  12. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  13. proxy_set_header X-Forwarded-Proto $scheme;
  14. proxy_pass [url]http://unix:/home/bakotiinii/apifolder/apifolder.sock;[/url]
  15. }
  16. }
20) Финальные настройки и запуск:
Листинг программы
  1. sudo usermod -a -G bakotiinii nginx
  2. chmod 710 /home/bakotiinii
  3. sudo nginx -t
  4. sudo systemctl start nginx
  5. sudo systemctl enable nginx
В итоге получается ситуация, что: На локалке через runserver - работает. На боевом сервере 1) Админка работает. 2) База данных работает. 3) Статика отдается. 4) А страницы отдают ошибку, что по таким URL ничего нет. 5) Логи nginx никаких ошибок не дают. Мой проект имеет несколько приложений, поэтому каждое приложение имеет свой файлик url и папку template (url прицепил через инклуд, а шаблоны привязал через PyCharm - правая кнопка мыши и MarkDirectory as template). Мб в этом какая-то беда? Например URL (согласно последним рекомендациям Django):
Листинг программы
  1. urlpatterns = [
  2. url(r'^$', views.index, name='index'),
  3. url(r'^step(?P<step_id>[0-9]+)$', views.step, name='step'),
  4. url(r'^addcomment(?P<step_id>[0-9]+)$', views.addcomment, name='addcomment'),
  5. url(r'^question(?P<question_id>[0-9]+)$', views.question, name='question'),
  6. url(r'^newpage(?P<step_id>[0-9]+)/$', views.new_page,name='newpage'),
  7. url(r'^lastpage(?P<step_id>[0-9]+)/$', views.last_page,name='lastpage'),
  8. url(r'^answerset$', views.answerset, name='answerset'),
  9. url(r'^isperm$', views.isperm, name='isperm'),
  10. ]

Решение задачи: «Почему отображается ошибка: The requested URL / was not found on this server. (Django)?»

textual
Листинг программы
  1. from bakot import urls as bakot_urls
  2. from loginsys import urls as loginsys_urls
  3.  
  4. urlpatterns = [
  5.     url(r'^admin/', include(admin.site.urls)),
  6.     url(r'^', include(bakot_urls)),
  7.     url(r'^auth/', include(loginsys_urls)),
  8. ]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут