Вопрос:
Я предполагаю, что там очень простое решение, но я искал каждый форум и руководство по настройке и не мог понять:
Я построил среду Django/CentOS-6.3 на моем локальном сервере (используя VirtualBox и Vagrant). Когда я запускаю свой сервер в бродячем терминале с помощью “python manage.py runningerver [::]: 8000”, он запускается без ошибок.
Validating models… 0 errors found May 31, 2013 — 13:56:15 Django version 1.5.1, using settings ‘mysitename.settings’ Development server is running at http://[::]:8000/ Quit the server with CONTROL-C.
Тем не менее, когда я пытаюсь перейти к ” ” в своем браузере (я настроил переадресацию портов с порта 8000 на порт 8001 в моем Vagrantfile), браузер просто висит в течение 5 минут, пока не истечет время ожидания, то он возвращает сообщение:
> The connection was reset > The connection to the server was reset while the page was loading. > …
Это то же самое сообщение, которое я получаю из браузера, даже после того, как я закрыл свой локальный сервер. Мой компьютер, очевидно, распознает это как перенаправленный порт, потому что любой другой порт, который я пытаюсь (например, 8000), мгновенно возвращает ошибку, заявляя, что не может установить соединение с сервером на 127.0.0.1:8000.
Что касается файлов сервера, в прошлом я делал много подобных настроек с Django/Ubuntu и никогда не имел никаких проблем, но должно быть что-то другое в Django/CentOS, которое вызывает это (или, может быть, я ошибся кто-то в одном из моих файлов сервера). Я следил за инструкциями по настройке Django и PostgreSQL на CentOS, но безрезультатно. Я прокомментирую некоторые из файлов, которые я создал/отредактировал ниже.
Если у кого-то есть решение или даже есть советы о том, где начать искать ошибки, я бы очень признателен.
Ответ №1
Если ваша сеть настроена правильно, а ваше приложение django с
python manage.py runningerver 0.0.0.0:8000
и вы по-прежнему не можете получить доступ к своему приложению django с хоста VM, почти наверняка проблема с брандмауэром. Решение выше хорошо, если вы используете iptables.
Я развернул CentOS 7 на виртуальной виртуальной машине с хоста Windows 7. Я не знал, что этот дистрибутив использует firewalld, а не iptables для контроля доступа.
если
ps -ae | grep firewall
возвращает что-то вроде
602? 00:00:00 firewalld
ваша система работает firewalld, а не iptables. Они не бегут вместе.
Чтобы исправить вашу виртуальную машину, чтобы вы могли получить доступ к своему сайту django от хоста, используйте команды:
firewall-cmd –zone = public –add-port = 8000/tcp –permanent
firewall-cmd –reload
Большое спасибо pablo v за указание на это в сообщении “Доступ к серверу django на виртуальной машине”.
Ответ №2
хост “127.0.0.1” не совпадает с гостевой “127.0.0.1”. По умолчанию команда
python manage.py runserver
Слушает только гостевой локальный хост. Вы должны быть в состоянии проверить это изнутри vm (использовать “бродяга ssh” для входа в систему) и запустить
curl -I http://127.0.0.1:8000/
Хост как другой IP. Чтобы получить доступ к серверу разработки с хоста, вы должны запустить его без ограничения ip:
python manage.py runserver 0.0.0.0:8000
Да:
python manage.py runserver [::]:8000
должны быть одинаковыми. Но этот синтаксис IPv6 AFAIK. Вы уверены, что команда “manage.py runningerver” поддерживает IPv6 по умолчанию? Я никогда не использовал адреса ipv6 w/django, но, глядя на источник (https://github.com/django/django/blob/master/django/core/management/commands/runserver.py), швы должны быть флаг, по умолчанию для False (“–ipv6”). Может быть, это “настоящая” проблема?
С Уважением,
Ответ №3
Для подобной проблемы,
Эта команда работала как прелесть для меня
python manage.py runserver [::]:8001 Ответ №4
Проверьте свои iptables и остановите его. Ubuntu обычно не открывает iptables при его запуске.