У меня есть сервер aerv.nl. у него есть django (фреймворк python), но когда я запускаю сервер django, он говорит: сервер запущен по адресу: http://127.0.0.1:8000/ как я могу разрешить серверу работать на: http://www.aerv.nl/~filip/ ? (реальный адрес)
Django по URL-адресу, отличному от localhost
Ответы (2)
Вам нужно будет настроить свой http-сервер и Django. Например, если вы используете apache, вам нужно пройти через это:
https://docs.djangoproject.com/en/1.9/howto/deployment/wsgi/modwsgi/
Здесь вы настраиваете свой сервер для обработки http-запросов через ваше приложение django.
Вам нужно будет понять, как работает 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
может представить как ваш веб-сайт.