Назад | Перейти на главную страницу

Новичок, устанавливающий первое приложение на стек битнами EC2

Начальный вопрос здесь. Вероятно, это очевидно для того, кто этим занимается все время. Но у меня возникают трудности с настройкой django, работающего на экземпляре битнами EC2.

Я настраиваю свой сервер и могу войти в систему. Чтобы проверить это, я установил пример опросов. Ниже приведены команды, которые я выполнил для этого.

Вопросы:

Любые пошаговые инструкции приветствуются.

---- команды -----

$ cd /opt/bitnami/projects/Project  #directory already exists
$ sudo python manage.py startapp polls
$ sudo chown -R bitnami * # tired of doing sudo.. Good move or not?
$ vim polls/models.py  # matches the example
$ vim polls/views.py  #see below
$ vim urls.py   # added: (r'^polls/$', 'polls.views.index'),
$ vim settings.py  #added polls
$ python manage.py syncdb  # tables created successfully
$ python manage.py runserver  # server started

# Now I open my browser and go to:  http://10.206.xxx.yyy:8000/polls/
# also tried ports 8080 and 80
# Error: unable to connect

------- views.py -----------

# Create your views here.
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world. You're at the poll index.")

Я также безуспешно пробовал комментарии, указанные ниже.

Порт 80

$ sudo python manage.py runserver 0.0.0.0:80
Django version 1.3, using settings 'Project.settings'
Development server is running at http://0.0.0.0:80/
Quit the server with CONTROL-C.
Error: That port is already in use.

Порт 8000

$ python manage.py runserver 0.0.0.0:8000
#also tried python manage runserver 10.206.xxx.yyy:8000 (same results)
Django version 1.3, using settings 'Project.settings'
Development server is running at http://10.206.xxx.yyy:8000/

in browser:  http://10.206.xxx.yyy:8000
result:  Firefox can't establish a connection to the server at 10.206.xxx.yyy:8000.
in browser:  http://10.206.xxx.yyy:8000/polls
result:  same Firefox can't establish a connection

netstat

$ netstat -aon
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       Timer
tcp6       0      0 :::80                   :::*                    LISTEN      off (0.00/0/0)
# I don't know what this means exactly and why I can't see this server from the browser

Есть идеи, почему он не работает?

Если вы используете ваниль runserver он подключается к localhost (127.0.0.1). Это означает, что вы сможете получить к нему доступ только в реальном экземпляре сервера. Чтобы подключить его к настоящему IP-адресу, вы можете использовать:

$ python manage.py runserver 0.0.0.0:8000

Вы можете использовать другой порт, если хотите, но если вы хотите подключить его к порту 80, вам нужно будет выполнить sudo:

$ sudo python manage.py runserver 0.0.0.0:80

Примечание: Это может быть неочевидно, поэтому на всякий случай: 0.0.0.0 часть предназначена. По сути, это означает подключение к назначенному серверу IP-адресу. Вместо этого вы можете использовать фактический IP-адрес, но мне это проще: вам не нужно запоминать или искать IP-адрес сервера.

FWIW: Это также отлично подходит для тестирования браузера, когда у вас есть виртуальная машина для мостовой сети. Виртуальная машина получает собственный IP-адрес в локальной сети с мостовой сетью. Так, например, с гостевым Linux, запущенным на хосте Windows, вы можете загрузить сервер запуска таким образом в свою виртуальную машину, перейти и открыть IE на вашем хосте Windows и указать его на IP-адрес виртуальной машины.

Оба ответа верны, но я думаю, что весь ваш подход не идеален. Сервер разработки django хорош для некоторых вещей, но на самом деле запуск в облаке не обязательно является одним из них. Я бы посоветовал просто использовать Apache, что вам очень легко сделать с помощью bitnami djangostack.

Таким образом, вы будете делать то же самое до тех пор, пока не запустите runserver, после чего вместо этого вы должны отредактировать соответствующий файл конфигурации apache, содержащий материал django, который, как мне кажется, называется django.conf:

WSGIScriptAlias /django “/opt/bitnami/apps/django/conf/django.wsgi”

Или все, что правильно (может быть, уже и так).

Затем отредактируйте этот файл, чтобы убедиться, что все указывает в нужное место:

sys.path.append(‘/opt/bitnami/’)
sys.path.append(‘/opt/bitnami/myproject’)
os.environ[‘DJANGO_SETTINGS_MODULE’] = ‘myproject.settings’

Затем перезапустите apache. Теперь, когда вы нажимаете порт 80, он должен вызывать ваш код django. Единственное, что вы можете сделать, это убедиться, что DEBUG имеет значение True в вашем файле settings.py, чтобы вы могли устранить неоднозначность при вызове django и проблемы с вашим фактическим кодом или конфигурацией django.

Похоже, вы используете BitNami DjangoStack. Сервер Apache, включенный в стек, должен работать, поэтому вы не можете запустить сервер через порт 80. Если вы только разрабатываете и хотите использовать сервер django, вы можете остановить сервер Apache.

sudo /opt/bitnami/ctlscript.sh stop apache

Также обратите внимание, что если вы хотите использовать другой порт, вам может потребоваться открыть его в ваша группа безопасности амазонки.