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