UwsgiとDjangoの成功を記録する


まず私の環境を説明します.
Uwsgiバージョン:2.0.14(yum installインストール)
djangoバージョン:1.10.6(pip installインストール)
pythonバージョン:2.7.5(アリクラウドcentos 7付属)
nginxバージョン:1.10.2(yum installインストール)
にあるhttp://chenx1242.blog.51cto.com/10430133/1904804ここでは、Webページで「good bye,logan」を開く効果を実現しています.Web Client<==>uWSDi<==>Pythonがスムーズであることがわかります.今、djangoとuwsgiがスムーズであるかどうかを調整してみましょう.
まず、/djangoというディレクトリの下で、#django-admin.py startproject loganは、loganというプロジェクトを構築し、/django/logan/loganに自動的に生成されるwsgiがあります.py、開けてみると、中の内容は以下の通りです.
"""
WSGI config for logan project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.10/howto/deployment/wsgi/
"""
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "logan.settings")
application = get_wsgi_application()

私たちの元の目標はdjangoとuwsgiのリンクが正常かどうかをテストすることです.では、/django/loganに戻って、#python manageを使用します.py runserver 0.0.0.0:8000 djangoを起動し、ブラウザを開き、アドレスバーに「外部ネットワークip:8000」と入力すると、次のインタフェースが表示されます.
记录Uwsgi与Django成功勾搭的始末_第1张图片
djangoはすでに起動に成功していることがわかりますが、前に述べたように、この方法は環境の中で小規模な遊びをテストするしかなく、生産化の境に持って行くことを全くお勧めしません.だから今uwsgiで8000でdjangoを起動します.
まず、私たちが起動したdjangoを停止しました.
次に、コマンド#uwsgi-http:8000-wsgi-file loganを使用します.py、フィードバックエラー情報は以下の通りです.
wKioL1jGyjXRPgsdAABpeBjU6Lk540.png
このエラーが発生したら、#yum install uwsgi-plugin-pythonを使用し、#uwsgi--plugin python--http-socket:8001--wsgi-file/django/logan/wsgiを使用します.py、これでまた新しいエラーが発生しました.
记录Uwsgi与Django成功勾搭的始末_第2张图片
ヒント:ImportError:No module named logan.settings.しかし、pythonクライアントを使用して単独でテストする場合、この文は図のように使用できます.
记录Uwsgi与Django成功勾搭的始末_第3张图片
ケンド人はこのような状況に引っかかっているので、この時私たちはコマンドを変える必要があります:#uwsgi--plugin python--http-socket:8001--chdir/django/logan/--wsgi-file/django/logan/wsgi.py.ブラウザのアドレスバーに「外部ネットワークアドレス:8001」と入力すると、次のページが表示されます.
记录Uwsgi与Django成功勾搭的始末_第4张图片
これにより、もともと閉じていたdjangoをuwsgiで起動し、Web Client<===>uWSDi<===>Djangoの目的を達成したことがわかります.
8002ポートが既に使用されているなど、プロセス中にポートが使用されている場合:
1
2 probably another instance of uWSGI is running on the same address (:8002). bind(): Address already in use [core/socket.c line 764]
では、#lsof-i:8002を使って、対応するプロセスを乾かすといいです.
最後にpythonスクリプトを添付します.このスクリプトはpythonのpathを表示します.内容は次のとおりです.
import os
print '===== sys.path / PYTHONPATH ====='
for k in sorted(os.environ.keys()):
    v = os.environ[k]
    print ('%-30s %s' % (k,v[:70]))

参考資料:http://www.python88.com/topic/101/
参考資料:http://www.nowamagic.net/academy/detail/1330334