Rackspace.comでサーバーをセットアップしようとしています。
次のことを行いました。
クイックスタートでは、「helloworld」アプリケーションが初期化されているようです。
ファイル "myapp.py"を作成します:
(チュートリアル)$ vi myapp.py (チュートリアル)$ 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アドレスをブラウザに入力しようとしましたが、タイムアウトが発生したようです。
あるかどうかはわかりません:
次のステップは何ですか?
本当にありがとう!
クイックスタートガイドを見ると、おそらく実行する必要があります
(tutorial) $ ../bin/gunicorn -w 4 myapp:app
これは、次のような行を生成するはずです。
Listening at: http://127.0.0.1:8000
とりわけ。そのアドレスでサイトにアクセスできるかどうかを確認してください。
また、127.0.0.1
はループバックアドレスです。そのホスト自体からのみアクセスできます。 gunicornを別のオプションにバインドするには、それを渡します--bind 0.0.0.0:80
、Jan-Philipが示唆するように。
ラックスペースについて言及しているため、目的のポートへの着信接続を許可するためにファイアウォール設定を調整する必要がある可能性があります。
gunicornはあなたの場合のWebサーバーであるため、NginxはNginxからgunicornにHTTPリクエストを渡すバックプロキシとして機能します。
そこで、同じマシンで実行される単純なNginxとGunicornの構成を実行するための手順をここに示します。
/ etc/nginx/nginx.confに移動し、http {}の下に次のものがあることを確認します。include/ etc/nginx/site-enabled/*;
http{
# other configurations (...)
include /etc/nginx/sites-enabled/*;
}
ここで、/ etc/nginx/sites-enabled/mysite.confにファイルを含めます。このファイルで、リクエストをgunicornアプリにプロキシします。
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
}
}
さて、この時点であなたが持っているのは、127.0.0.1:80に向かうすべてのリクエストが127.0.0.1:8000に渡されるプロキシとして機能するNginxだけです。
通常、私が構成ファイルを使用する方法では、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
OK、すべて設定済みです。これで、サーバーを起動するために必要な作業はすべて完了しました。
Gunicornを起動し、使用するアプリと構成ファイルを指示します。コマンドラインとmyapp.pyファイルが配置されているフォルダーから次のコマンドを実行します。
gunicorn -c /etc/gunicorn/mysite.py mysite:app
ここで、nginxのみを起動します。
/etc/init.d/nginx start
または
service nginx start
お役に立てれば。
これまでに開発されたWebアプリケーションがないようです。ですから、今のあなたの目標は開発環境を整えることだと思います。当面は、ほとんどのフレームワークに含まれている開発Webサーバーを使用してWebアプリケーションを開発してください。フラスコ。
使用しているフレームワークが何であれ、開発Webサーバーが0.0.0.0でリッスンするようにして、サービスが構成済みのすべてのネットワークインターフェイスでリッスンし、ポートが外部に開かれていることを確認します(Rackspace設定を確認してください) )。
アプリケーションの開発が完了したとき、または既存のアプリケーションを検討しているときは、しっかりとデプロイする必要があります。次に、nginxの背後にあるgunicornがオプションです。
私はあなたの質問を大まかに調べます。もう少し読む必要があるようです:-)
Nginxはフル機能のWebサーバーです。その性能と安定性が高く評価されています。人々はこれを使用して、静的ファイルを提供し(このタスクで動的Webアプリケーションに負担をかけないため)、必要に応じてWebアプリケーションに要求を転送し、SSLを終了し、負荷分散を行います。これは不完全な図であることに注意してください。
gunicornは、WSGIアプリを提供するためのサーバーです。主に、Webアプリケーションを実際に実行するワーカープロセスを管理します。
実際には、Linuxボックスを無限の方法で最適化できます(パフォーマンスのため、たとえばファイル記述子の制限を増やしたり、セキュリティのために)。 gunicorn内では、ワーカープロセスの数などを構成できます。フロントエンドまたは別のロードバランサーとしてnginxを使用している場合、これには独自の構成があります。ご覧のとおり、実際のシナリオで実際に展開するには、セットアップが非常に複雑になる可能性があります。これは些細なことではありません。
ただし、WSGIアプリケーションを試してみるには、開発フレームワークを適切にセットアップするだけです。これはほとんどの場合非常に簡単で、ファイアウォールの問題がないことを確認してください。それで全部です。