Ubuntuのnginxのuwsgi httpsの展開に関する問題は、Djangoの遭遇します

ついにジャンゴに成功のUbuntuに配備三日に従事し、それを記録。

より引用バブルティー

詳細にUbuntuの展開プロセスの下でngi​​nxの+ Uwsgi + Djangoプロジェクト

説明前提:

DjangoはHTTPS要求をサポートしなければならないので、Djangoはバックエンドのアプレットとして、原因のバックエンドへのアプレットの要求は、HTTPS要求であります

EDITORIAL:

そうでない場合は、プロジェクト自体が問題を抱えているかもしれないが、それは右の展開につながるものではない、Djangoプロジェクトを展開する前に、Djangoは問題がないかどうかを確認しようとして実行しているサーバーとの最初の、そして展開しています

コマンドを実行します:python manage.pyのrunserverを.....

種々の構成:

1、nginxのサポートHTTPS要求

nginx.conf 1)プロジェクトオブジェクトの設定

上流nginxのはに接続するためのコンポーネント#ニーズ
ジャンゴ{上流
    ///home/breavo/PyWorkSpace/mysite_code_shuffle/config/eshop.sock:#UNIX 
    XX.XX.XX.XXサーバー:8002;#のXX.XX.XX.XX IPはサーバーで、テンセントのクラウドサーバーた場合、サーバはIPアドレスとポートがコミュニケーションとuwsgi実施形態である外部IP、同じプロファイルとuwsgi.iniである
} 


の#サーバ構成
サーバー{ 
    #あなたのポートサイトウィルによって提供される上に
    、SSL 90を聞く;#リスニングポートはどのポートすることができますが、ポートが使用され、競合のないされている
    インクルードが8003を聞く#を、
    ドメイン名で#ITによっては、のために役立つだろう
    サーバー名のindoor.crazymonkey.ml;ここで#は、ドメイン名であるとすることもできます上記XX.XX.XX.XXを持つネイティブIP、
    文字コードUTF-8; 
最大アップロードサイズ
    client_max_body_sizeの75M;#は味わうことADJUST
 
    #SSLの設定を
    上のSSL;#Open SSLの検証、サポートHTTPS要求
    ssl_certificate /root/hewenjuan/Indoor_Localization/2446810_www.preciselocation.top.pem;位置に置か#SSL証明書
    /root/hewenjuan/Indoor_Localization/2446810_www.preciselocation.top.key ssl_certificate_key。 #確かに真の友人は絶対パスを使用して

    #Djangoのメディア
    LOCATION /メディア{ 
        エイリアス/ルート/ hewenjuan / Indoor_Localization /メディア;#あなたのDjangoプロジェクトのメディアファイル- gitのは、必要に応じて修正コミット、写真、などがあり、
    } 

    LOCATION /静的{ 
        #エイリアス/パス/ - gitのコミットとして必要な修正#あなたのDjangoプロジェクトのAPOS静的ファイル;あなた/個人用サイト/静的/へ
        #静的ファイルの場所、Djangoプロジェクト管理静的ファイル、エイリアスを/ルート/ hewenjuan / Indoor_Localization /静的
    } 

    #は最後にすべての非メディア要求を送信しますDjangoのサーバー。
    位置/ {  
        ジャンゴuwsgi_pass、これは上流のDjangoの上述した構成を参照している#
        #含む/ホーム/ breavo / PyWorkSpace / mysite_code_shuffle /設定/ uwsgi_params。#uwsgi_paramsあなたがインストールされたファイル
        は/ etc / nginxの/ uwsgi_paramsが含まれます。
    } 
}

  

  注意:nginxのnginxの-tコマンドを使用して、上記のファイルの正確さを確認してください

2)項目に対応して配置さuwsgi.ini

Mysite_uwsgi.iniファイル番号
[uwsgiに】
#8002テンセント雲内部IP、ポート部とDjango同じ構成nginx.conf:ソケット= XX.XX.XX.XX 
#ジャンゴに関する設定
#ザ・ベース・ディレクトリ(フルパス)
CHDIR = / Indoor_Localization#Djangoプロジェクトは、ディレクトリ/ルート/ hewenjuan 
#DjangoのWSGIのファイル
・モジュール= Indoor_Localization.wsgi# モジュール=のconfig / hello.py:アプリケーション
/ wsgi.py位置がwsgi_file = Indoor_Localization#Djangoプロジェクトのwsgi.pyトップに比べ、位置しますCHDIRカタログ
#wsgi_file = /root/hewenjuan/Indoor_Localization/config/hello.py:application 
virtualenvの(フルパス)で#
virtualenvの= /root/.pyenv/versions/indoorLocation/bin/python3.6#Pythonの仮想環境の絶対位置
#ホーム= /root/.pyenv 
ホーム= /root/.pyenv/versions/indoorLocation

#プロセス関連設定
#マスタ
マスタ=真の
労働者の#最大数は、処理
プロセスを= 10 
#ソケットは(安全のために完全なパスを使用
= /root/hewenjuan/Indoor_Localization/Indoor_Localization.sock#ソケット
#...適切な権限を持ちます-必要とされるかもしれない
chmodのソケット= 666 
出口に#クリア環境
真空= TRUE 

統計=%(CHDIR)/config/uwsgi.status            

PIDファイル=%(CHDIR)/config/uwsgi.pid  
#デーモン化=%(CHDIR)/config/uwsgi.log#はフィールドを開き、uwsgiはバックグラウンドで実行され、フィールドがオンにされていない場合はフォアグラウンドで実行し、ログファイルに保存し、ログが(画面上に表示されますデバッグの利便性)
#pidファイル=%(CHDIR)/ configと/uwsgi.pid 
#plugins = /root/.pyenv/versions/indoorLocation/bin/python3.6

  3)あなたはDjangoのプロジェクトファイルのコードを変更するたびに、我々はuwsgiとnginxのを再起動する必要があるので、彼はブートファイルstart.shを書きました

killallは-9 uwsgi#、時には最後uwsgiプロセスをオフに切り替えることなく、すべてのuwsgiプロセスを閉じ、新しいエラーやその他の問題を開始します
-9 uwsgi#金額killallを、状況はオフになりませんでしたら、時々そこに閉じられます
uwsgi --iniをmysite_uwsgi.ini#は、プロセスuwsgi開始mysite_uwsgi.iniファイル起動
、再起動/etc/init.d/nginx#nginxの再起動プロセスを

  説明:start.shコマンドを起動します。sh start.sh

 

2、uwsgiサポートHTTPS要求

 1)uwsgi.ini配置

#mysite_uwsgi.iniファイル
[uwsgi] 
#2446810_www.preciselocation.top.pem、2446810_www.preciselocation.top.key是SSL证书 HTTPS = XX.XX.XX.XX:443,2446810_www.preciselocation.top.pem、2446810_www.preciselocation .top.key#XX.XX.XX.XX是腾讯云内部IP #ジャンゴ関連の設定 #ベースディレクトリ(フルパス) のchdir = /ルート/ hewenjuan / Indoor_Localization #DjangoのWSGIファイル モジュール= Indoor_Localization.wsgiの #モジュール=設定/ hello.py:アプリケーション wsgi_file = Indoor_Localization / wsgi.py #wsgi_file = /root/hewenjuan/Indoor_Localization/config/hello.py:application #virtualenvの(フルパス) virtualenvの= /root/.pyenv/versions/indoorLocation/ビン/ python3.6 #ホーム= /root/.pyenvの ホーム= /root/.pyenv/versions/indoorLocation #プロセス関連の設定 #マスタ マスタ=真の 労働者の#最大数は、処理 プロセスを= 10 #ソケットは(安全のために完全なパスを使用 #ソケット= /root/hewenjuan/Indoor_Localization/Indoor_Localization.sock #...適切な権限を持つ-必要とされるかもしれない chmodのソケット= 666 出口に#クリア環境 真空= TRUE 統計=%(CHDIR)/config/uwsgi.status PIDファイル= %(CHDIR)/config/uwsgi.pid #デーモン化=%(CHDIR)/config/uwsgi.log #pidファイル=%(CHDIR)/config/uwsgi.pid #plugins = /root/.pyenv/versions/indoorLocation/bin/python3.6

  

問題が発生しました:

1、あなたがアカウントを終了するたびに再度ログインするように求められます、pyenv存在しません。

 

理由:

方法:コマンドライン:ソース〜/ .bashrcに、すなわち.bashrcのファイルの実行文(初期設定ステートメントがpyenvを含めます)

2、nginxの権利の問題:表示されません。管理者の背景スタイルをDjangoは、nginxのエラーログを表示(所在地:/var/log/nginx/error.log)、拒否されたアクセス許可を表示するためのパーミッションを拒否しました

Djangoプロジェクトの権限に静的ファイルを実行するだけでは十分ではありません:理由

方法:ファイル/etc/nginx/nginx.confを開き、ユーザーroot用のユーザWWW-データを変更(ルート:アカウントの名前は現在ログインしている、それは他のUbuntuすることができます)

参考qingspacehttps://www.cnblogs.com/qingspace/p/6838747.html

3、使用できない修飾子は、要求します

原因:仮想環境がアクティブのpythonではありません

方法:次のコマンドを入力します。pyenvアクティブXX、XX環境をアクティブ、xxは、プロジェクトがどこにあるのpython仮想環境

 4、インストールプロジェクトの依存関係:ピップは、-r requirements.txtをインストールするには、問題が発生しました:インストールが失敗し、インタフェースは失敗した表示されません。

成功しました...次に示すインストールが成功したことを表しているのみ表示されます

 理由:requirements.txtファイルはwin_xxインストールパッケージを持って、それを除去することができるものを使用したインストールパッケージのpythonアクセスウィンドウシステム、同様のWin32のなど、です。

Linuxシステム上で展開する場合には、ウィンドウシステムを使用してコードを記述することが可能であるので、

回避策:ウィンドウシステムのWin32およびその他のインストールパッケージを削除します

おすすめ

転載: www.cnblogs.com/heiao10duan/p/11159524.html