Django по URL-адресу, отличному от localhost

У меня есть сервер aerv.nl. у него есть django (фреймворк python), но когда я запускаю сервер django, он говорит: сервер запущен по адресу: http://127.0.0.1:8000/ как я могу разрешить серверу работать на: http://www.aerv.nl/~filip/ ? (реальный адрес)


person filipKAAS    schedule 13.12.2015    source источник


Ответы (2)


Вам нужно будет настроить свой http-сервер и Django. Например, если вы используете apache, вам нужно пройти через это:

https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/

Здесь вы настраиваете свой сервер для обработки http-запросов через ваше приложение django.

person MarkHarley    schedule 13.12.2015
comment
Я могу дать более подробный ответ, если вы могли бы рассказать немного больше о настройке вашего сервера (и провайдера). Например. вы используете apache, unicorn, nginx, ... и это размещено на веб-фракции, linode, ... - person MarkHarley; 13.12.2015

Вам нужно будет понять, как работает DNS, затем использовать перенаправление, а затем какой-нибудь правильный сервер (например, nginx или apache с, например, gunicorn), а не сервер разработки django, который не следует использовать в производстве. Вы никак не сможете сделать то, о чем просите, только с ./manage runserver. Все, что вы можете сделать, это изменить IP-адрес и порт на что-то другое, например: ./manage.py runserver 192.168.0.12:9999, чтобы, например, другие компьютеры в вашей сети могли получить доступ к вашему сайту по этому конкретному IP-адресу и порту.

Пример

Вы являетесь владельцем домена example.com, у вас есть сервер, на котором вы хотите разместить свой сайт с IP-адресом, например. 5.130.2.19. Вам нужно перейти к поставщику домена и добавить запись A, которая соединяет их вместе: example.com -> 5.130.2.19.

Затем на вашем сервере вы настраиваете веб-сервер, например. nginx и пусть он работает, например. эта конфигурация для вашего конкретного сервера/сайта:

server {

    listen   80;
    server_name example.com;

    client_max_body_size 4G;

    location /static/ {
        autoindex on;
        alias   /var/www/example/django/static/;
    }

    location /media/ {
        autoindex on;
        alias   /var/www/example/django/media/;
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_set_header Host $http_host;

        proxy_redirect off;

        if (!-f $request_filename) {
            proxy_pass http://upstream_server;
            break;
        }
    }

upstream upstream_server {
  server unix:/var/www/example/gunicorn.sock fail_timeout=10s;
}

тогда вам нужно будет запустить gunicorn с чем-то вроде

gunicorn example.wsgi:application --bind=unix:/var/www/example/gunicorn.sock 

Это должно быть все, но это, конечно, очень кратко. Просто замените example.com на свой URL. Вам решать, будет ли это конкретная запись в конфигурации nginx (рассмотрите это как точку входа) или это будет один из маршрутов, указанных в вашем проекте django.

Как это работает?

Пользователь вводит example.com в адресную строку, затем ваш компьютер спрашивает глобальные DNS-серверы: На какой IP-адрес указывает example.com?, DNS отвечает: Это 5.130.2.19. Затем браузер пользователя отправляет HTTP-запрос на этот IP-адрес, где nginx получает этот запрос и просматривает его конфигурацию, если есть example.com обработчик. Он находит, что он есть и что он должен искать файлы в unix:/var/www/example/gunicorn.sock. Он смотрит туда и видит работающий gunicorn, который в основном анализирует проект python django на нечто, что nginx может представить как ваш веб-сайт.

person kotrfa    schedule 13.12.2015
comment
Ага! поэтому, когда я это сделаю, но укажу на aerv.nl/~filip, это сработает? или мне нужно изменить конфигурацию HTTPD? - person filipKAAS; 13.12.2015
comment
Это действительно зависит от вашей конфигурации в целом. Я обновляю свой ответ, чтобы дать вам краткое представление. - person kotrfa; 13.12.2015