Подтвердить что ты не робот

Подача запроса от пушки

Попытка настроить сервер на Rackspace.com.

Сделали следующие вещи:

  • Установленный Centos 6.3
  • Установленный Python 2.7
  • Установленный артиллерист, используя "Быстрый старт" на своей домашней странице: gunicorn.org/

В быстром запуске приложение "привет мир", как представляется, инициализируется:

Создать файл myapp.py ":

(tutorial) $ vi myapp.py
(tutorial) $ cat myapp.py

Содержимое myapp.py "

def app(environ, start_response):
   data = "Hello, World!\n"
   start_response("200 OK", [
       ("Content-Type", "text/plain"),
       ("Content-Length", str(len(data)))
   ])
   return iter([data])

Поскольку я очень мало знаю о серверах, я не знаю, что делать дальше. Я попытался ввести IP-адрес сервера в браузер, но это, казалось, привело к таймауту.

Я не уверен, есть ли:

  • что-то еще, что нужно установить. Nginx упоминается в разделе " deploy" на веб-сайте пушки. Похоже, что Nginx - это прокси-сервер, который меня сбивает с толку, потому что я думал, что gunicorn - это сервер. Не знаете, почему мне нужны два сервера?
  • что-то, что нужно настроить в пушечном стреле
  • то, что необходимо настроить на самом сервере
  • что-то еще, что еще нужно сделать, чтобы действительно выполнить запрос

Каковы следующие шаги?

Большое спасибо!

4b9b3361

Ответ 1

глядя на руководство по быстрому старту, вы, вероятно, должны были запустить

(tutorial) $ ../bin/gunicorn -w 4 myapp:app

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

Listening at: http://127.0.0.1:8000

Среди прочих. посмотрите, можете ли вы получить доступ к своему сайту по этому адресу.

Также обратите внимание, что 127.0.0.1 - это обратный адрес; доступный только с самого хоста. Чтобы получить оружие, чтобы связать его с другим вариантом, передайте его --bind 0.0.0.0:80, как предлагает Ян-Филип.

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

Ответ 2

так как gunicorn - это веб-сервер на вашем деле. Nginx будет выступать в качестве прокси-сервера, передающего HTTP-запрос от Nginx к gunicorn.

Итак, я поставил здесь шаги, которые нужно предпринять для простой конфигурации Nginx и Gunicorn, запущенной на той же машине.

  • Начиная с конфигурации nginx

Перейдите в /etc/nginx/nginx.conf и под http {} убедитесь, что у вас есть: include/etc/nginx/site-enabled/*;

http{
    # other configurations (...)
    include /etc/nginx/sites-enabled/*;
}

теперь включите файл в /etc/nginx/sites -enabled/mysite.conf, где вы проксируете свои запросы в свое приложение для стрельбы.

server {
    listen 80 default; # this means nginx will be 
                       # listening requests on port 80 and 
                       # this will be the default nginx server
    server_name localhost;

    # declare proxy params and values to forward to your gunicorn webserver
    proxy_pass_request_headers on;
    proxy_pass_request_body on;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_read_timeout 120s;

    location / {
        # here is where you declare that every request to / 
        # should be proxy to 127.0.0.1:8000 (which is where
        # your gunicorn will be running on)          
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;

        proxy_pass http://127.0.0.1:8000/; # the actual nginx directive to 
                                           # forward the request
    }
}

Хорошо, на данный момент у вас есть Nginx, действующий как прокси-сервер, где все запросы, отправляемые в 127.0.0.1:80, будут переданы в 127.0.0.1:8000.

  • Пришло время настроить ваш веб-сервер Gunicorn:

Обычно я использую файл конфигурации, конфигурационный файл Gunicorn может быть обычным файлом python. Итак, теперь создайте файл в любом месте, которое вам нравится, я предполагаю, что этот файл будет /etc/gunicorn/mysite.py

workers = 3              # number of workers Gunicorn will spawn 

bind = '127.0.0.1:8000'  # this is where you declare on which address your 
                         # gunicorn app is running.
                         # Basically where Nginx will forward the request to

pidfile = '/var/run/gunicorn/mysite.pid' # create a simple pid file for gunicorn. 

user = 'user'          # the user gunicorn will run on

daemon = True          # this is only to tell gunicorn to deamonize the server process

errorlog = '/var/log/gunicorn/error-mysite.log'    # error log

accesslog = '/var/log/gunicorn/access-mysite.log'  # access log

proc_name = 'gunicorn-mysite'            # the gunicorn process name

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

Запуск пушки и рассказ о том, какое приложение использовать и какой файл конфигурации. из командной строки и папки, в которой находится ваш файл myapp.py:

gunicorn -c /etc/gunicorn/mysite.py mysite:app

Теперь запустите nginx.

/etc/init.d/nginx start 

или

service nginx start

Надеюсь, что это поможет.

Ответ 3

Похоже, у вас нет веб-приложения, разработанного до сих пор. Итак, я предполагаю, что ваша цель в настоящее время - создать среду разработки. Пока вы разрабатываете свое веб-приложение, используя веб-сервер разработки, включенный в большинство фреймворков, например. Колба.

Независимо от того, какую структуру вы используете, сделайте веб-сервер разработки на 0.0.0.0, чтобы служба прослушивала все настроенные сетевые интерфейсы и следила за тем, чтобы порт был открыт снаружи (проверьте настройки Rackspace).

Когда вы закончите разработку своего приложения или изучаете существующий, вы должны развернуть его в надежном ключе. Тогда, пулемёт за nginx является вариантом.

Я буду грубо обсуждать ваши вопросы. Похоже, вам нужно прочитать немного больше: -)

  • Nginx упоминается под "развертыванием" на веб-сайте пушки. Похоже, что Nginx - это прокси-сервер, который меня сбивает с толку, потому что я думал, что gunicorn - это сервер. Не знаете, почему мне нужны два сервера?

Nginx - полнофункциональный веб-сервер. Он ценится за его производительность и стабильность. Люди используют его для обслуживания статических файлов (чтобы не обременять динамическое веб-приложение этой задачей), для пересылки запросов к веб-приложениям, когда это необходимо, для SSL-терминации и для балансировки нагрузки. Обратите внимание, что это неполное изображение.

gunicorn - это сервер для обслуживания приложений WSGI. В основном, он управляет рабочими процессами, которые фактически выполняют веб-приложение.

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

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

Однако для игры с WSGI-приложением просто настройте свою структуру разработки правильно, что очень просто в большинстве случаев и убедитесь, что проблем с брандмауэром нет. Это все.