このチュートリアル に続いて、Django、Gunicorn&nginx invirtualenvをAWS EC2インスタンス(Ubuntu 16.04を実行)に設定し、Upstartの作成に進むことができましたファイル全体を「デーモン化」します。
Virtualenvをアクティブにした後、私はそれを確認しました:
_./manage.py runserver 0.0.0.0:8000
_
_mydomain.com:8000
_にアクセスすると、デフォルトのDjangoページが表示されました。
projectname
を実際のプロジェクト名に置き換えます):_gunicorn --bind 0.0.0.0:8000 projectname.wsgi:application
_
今回は_mydomain.com:8000
_にアクセスすると、ウェルカムページが再び表示され、URLの末尾に_/admin
_を追加すると、ログイン画面minusCSS(Gunicornは静的CSSファイルを認識しないため、チュートリアルでは今のところ問題ありません)。
ここから次のsystemdファイルを作成しました(masterfolder
を使用してすべてのアクションが実行されるフォルダーを表示している場合、myuser
は私のシステムユーザー(ubuntu
、これはUbuntuインスタンスなので):
_[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=myuser
Group=www-data
WorkingDirectory=/home/myuser/masterfolder
ExecStart=/home/myuser/masterfolder/myvirtualenv/bin/gunicorn --workers 3 --bind unix:/home/myuser/masterfolder/projectname.sock$
[Install]
WantedBy=multi-user.target`
_
2つの問題が発生しました:
2017/01/17 15:12:43 [crit] 12403#12403: *3 connect() to unix:/home/myuser/masterfolder/projectname.sock failed (2: No such file or directory) while connecting to upstream
ここで、masterfolder
がstartproject
を実行したときに_Django-admin
_が作成するフォルダー階層と一貫していることに注意してください。
_masterfolder/ ├── manage.py └── projectname ├── __init__.py ├── settings.py ├── urls.py └── wsgi.py
_
masterfolder
の中を見ると、確かにno .sockファイルはまったくありませんです。_projectname.sock
_という名前のファイルを気にしないでください。
これは、私の_etc/nginx/sites-availabe/projectname
_ファイルが次のようになっている方法です。
_server {
listen 80;
server_name www.mydomain.com mydomain.com MYIPADDRESS;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/masterfolder/projectname;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/myuser/mastefolder/projectname.sock;
}
}
_
もちろん、正しくシンボリックリンクされており、変更を加えた後、それを実行して修正するために実行します。
_Sudo systemctl daemon-reload
Sudo systemctl start gunicorn
Sudo systemctl enable gunicorn
Sudo systemctl restart nginx
_
このインフラストラクチャのすべてがどのように連携して機能するかを理解する上で、ここでは基本的なものが欠けているように感じます。もちろん、プロセスの私の理解の誤りを遠慮なく指摘してください。
masterfolder
ディレクトリの権限を確認しましたか?
権限はmyuser:www-data
。
また、nginx構成ファイルにスペルミスがあります。それがタイプミスであることを願っています:)