CentOS nginx+uwsgi+Django環境導入


CentOS+nginx+uwsgi+Django環境導入
もと
最近、主業androidはあまり忙しくないので、会社が使っているバックグラウンドやapiが使っている関連技術を見てみました.バックエンド開発を専門としているわけではありませんが、後の原理とメカニズムを知ることは自分の主業技術の向上に役立ちます.
備蓄する必要がある知識
pythonは現在2.Xバージョン&3.Xバージョンは自分のニーズに合わせて選択することができます.こちらの文章では2.7を使っています.初心者は廖雪峰のブログの下で彼のチュートリアルを学ぶことができます.助けがあれば、お金を使ってサポートすることができます.
nginxは高性能のwebサーバであり、逆エージェントサーバでもある.具体的にはグーグルでいろいろな文章を読むことができるが、以前よく見ていなかったときもapache tomcatなどとの違いが分からず、時間をかけてよく見てみると一目瞭然だった.
uWSGI(ははは)この部分の関係は少し迂回して、2つのプロトコルがあります:WSGI&uwsgi、WSGIはwebサーバ(文章の中で使うのはnginx)とアプリケーションサーバの通信用で、uwsgiも同様に1つの通信プロトコルで、uWSGIサーバの独自のプロトコルで、それは情報を伝送するタイプ(type of information)を定義するために使用して、各uwsgi packetの最初の4 byteは、WSGIと比較して2つのものである伝送情報タイプの記述である.UWSDIはアプリケーションサーバです
Djangoはpythonで開発された無料のオープンソースサイトのフレームワークで、うん、このフレームワークをマスターするのも役に立ち、サイトを作るだけでなくrestful apiを作ることができ、小さな会社はそれを使ってバックグラウンドを迅速に構築するのが極めて便利で速い.
CentOSはもちろん、linuxの知識やコマンドなどを理解しなければなりません.
一歩一歩構築を始めましょう(血を吐いた経験は、ネット上では簡単すぎると感じている人が多いかもしれませんが、初心者にとっては細かい情報を省略しています)
CentOSのインストール
仮想マシンにをインストールできます.
私はアリ雲で買った低配合版ECSの実例で、主に後で自分で何かを作りたいと思っています.システムバージョンはCentOS 6.5 pythonのアップグレード
アリクラウドのCentOS 6.5システムは2.6バージョンを使用しており、2.7バージョンのにアップグレードする必要があります.
ここには2つの接続しか貼らないでしょう.この2つの接続はどのようにアップグレードするかを教えてくれます.アクセスできなければ、チュートリアルを貼ります.http://ruiaylin.github.io/2014/12/12/python%20update/http://blog.csdn.net/highball/article/details/10103909
アップグレードが完了したら、yumがpython 2に依存しているため、バージョンによる問題に注意してください.6、上の2つのリンクにはが記載されています.
nginxのインストール
インストールyum install nginx 次のコマンドは、ディレクトリwhich nginx起動を表示する方法を知っていればwhich nginxを直接使用して返される結果例/usr/sbin/nginx再起動例/usr/sbin/nginx-s reload停止例/usr/sbin/nginx-s stop を表示します.
インストールpip
pipをインストールし、次の2つのコマンドを実行します:wgethttps://bootstrap.pypa.io/get-pip.py —no-check-certificatepython get-pip.py
uWSDIのインストール
yum updateyum install python-devel mysql-devel sqlite-devel libxml 2 libxml 2-devel python-setuptools zlib-devel wget openssl-devel pcre pcre-devel sudo gcc make autoconf automake libxslt-devel をインストール
インストールuWSGItar-zxvf uwsgi-0.9.6.5.tar.gzmv uwsgi-0.9.6.5/uwsgi/cd uwsgi/sudo python setup.py buildmakeテストuwsgi-help virtualenvのインストール
pip install virtualenv
ディレクトリの作成
私は/usr/local/apps に置いています.
仮想環境を上のディレクトリの下に作成
virtualenv envfortest
仮想環境の起動/usr/local/apps/envfortest/binの下でsource activate を実行
仮想環境でpipに依存してインストールされているものもあれば、使えないものもあります.主に私のプロジェクトで使われています.
pip installDjango=1.8.2 MySQL-python=1.2.5 Pillow=2.8.2 Fabric=1.10.2 python-memcached=1.54 BeautifulSoup=3.2.1 requests=2.7.0 qiniusinaweibopydjango-ckeditorlxml(libxslt-devel依存、これは私のコメント情報で、主にインストール時に遭遇したピット)Django新規プロジェクト
/usr/local/appsディレクトリの下でdjango-admin startproject mysiteを実行し、/usr/local/apps/mysiteの下でpython manageを実行します.py migrate nomodule named sqlite 3リファレンスが表示されたらhttp://www.cnblogs.com/BlueBreeze/p/4234364.html2つのpythonバージョンがインストールされているためです.
プロジェクトにuwsgiを構成する
ポートを1つだけ指定する場合は、uwsgi-http:8002-module mysiteというコマンドを使用します.wsgiまたはpython manage.py runserver 0.0.0.0:8002このコマンドはブラウザで表示され、ポートはを任意に指定します.
構成iniのようなファイルで、appアドレスポートなどの情報が入っている起動時にuwsgi uwsgiを使う.iniuwsgi.iniの構成は、[uwsgi]vhost=falseplugins=pythonsocket=127.0.0.1:9001 master=trueenable-threads=trueworkers=2 wsgi-file=/usr/local/apps/FutuureCareer/FutuureCareer/wsgi.pyvirtualenv =/usr/local/apps/envfortestchdir =/usr/local/apps/FutureCareer
気をつけて!上のディレクトリFutureCareerは私のプロジェクトで、実はコマンドで作成したmysiteと何の違いもありません.類比すればいいです.FutureCareer付きのディレクトリを変更すればいいです.
nginxエージェントを使用してリクエストを配布する
nginxディレクトリの下に、私の環境では/etc/nginxにnginxがあります.confの中のhttpの中で1つのserverが転送する上で設定したuwsgiアドレスの中であるいはディレクトリ/etc/nginx/conf.dの下で1つのconfのファイルを追加して、serverの配置を中に書いてnginx(再起動コマンドは上)serverの配置を再起動する例.
server {
        listen 80;
        server_name host;
        location / {
            uwsgi_pass 127.0.0.1:9001;
            include /etc/nginx/uwsgi_params;
        }
        
        location /static {
            root /usr/local/apps/FutureCareer;
        }
        access_log off;
    }

hostは自分のサーバipアドレスまたはドメイン名に構成すればよいので、80ポートから傍受されたリクエストの一部が9001ポートのサービスに転送され、処理されます.
nginx配布を構成すると、Djangoプロジェクトスタイルに問題が発生する可能性があります.
解決策の参考:http://wangyongbin.blog.51cto.com/8964308/1633660
ええと、ここまで来ればサーバー上でプロセス全体を走ることができるはずですが、まだ分からない場合は伝言を残して相談してもいいです.