Django+uwsgi+Nginxプロジェクトの導入
プロジェクトの導入:
ここでは、非常にクリーンなubuntu 16.04システム環境を使用しています.クラウドサーバ環境が異なるため、クラウドサーバは使用されていません.ゼロから導入を完了します.
開発機での準備:バグがないことを確認する. ・ dysmsをpythonファイルの準備ができました.メール認証コードのこのパッケージは通らなければならないので サーバ上の/srvディレクトリにアイテムをアップロードする.ここではgitを例に挙げます.gitを使用すると、他のアップロード方法(pycharmを使用するなど)よりも安全です.gitにはバージョン管理の機能があるので、後で前のバージョンに戻りたい場合は、gitは簡単にできます. 在https://git-scm.com/downloadsWindowsバージョンのクライアントをダウンロードします.次にダブルクリックして次のインストールをクリックすればいいです. コードクラウドを使用して、コードクラウド上にアイテムを作成します.コードクラウドアドレス:https://gitee.com/ 次にプロジェクトに進み、以下のコマンドを使用してコードを提出する:
サーバでの準備:ubuntuオープンrootユーザー: sudo passwd rootユーザーのパスワードを入力しますxshellまたはCRT接続サーバを容易にするため、OpenSSHのインストールを推奨する(一般クラウドサーバに既にインストールされている): 取付vim: ubuntuのaptソースを修正する(クラウドサーバには一般的に独自のソースがあり、修正しなくてもよい)、aptソースはソフトウェアをインストールするためのリンクである:先にコピー
次に、ソースを更新します.プロジェクトのインストールに使用するPython:
システムに既にPython 3がある場合は、再インストールする必要はありません.supervisorはPython 3をサポートしていないので、Python 2をインストールする必要があります.もしなければ、インストールします.
そして
これは、pip 10のバグの1つであり、/usr/bin/pipの
変更:virtualenvwrapperをインストールし、プロジェクトで使用する仮想環境を作成する:
virtualenvwrapperをインストールした後、virtualenvwrapperの環境変数を構成する必要があります.virtualenvwrapper.shコマンドでvirtualenvwrapper.shファイルが存在するパスを最初に表示します. 現在のユーザーディレクトリの下に.virtualenvフォルダを作成し、すべての仮想環境ディレクトリを格納します. 現在のユーザーディレクトリの下で.bashrcファイルを編集し、以下のコードを追加する:
そして終了
注意:virtualenvwrapperをpython 2の環境にインストールしているので、仮想環境を作成するときに–pythonパラメータを使用して、どのPythonファイルを使用するかを指定する必要があります.例えば、私のpython 3のパスは/usr/bin/python 3です.サンプルコードは次のとおりです.仮想環境に入り、プロジェクトが存在するディレクトリに入り、コマンドを実行する: mysqlデータベースに入り、プロジェクトのデータベースを作成する. python manage.py makemigrations/migrateを実行してモデルをデータベースにマッピングします. python manage.py runserver 0.0.0.0:8000を実行し、自分のパソコンでこのサイトにアクセスし、BUGがないことを確認します. settings.pyでのALLOWED_HOSTはサイトのドメイン名またはipアドレスを追加します. DEBUG=Falseを設定し、あなたのサイトにエラーが発生した場合、エラーメッセージをユーザーに漏らさないようにします. settings.pyでSTATIC_を設定ROOTは、収集された静的ファイルを格納するために使用されます.静的ファイルを収集するコマンドは、 インストールuwsgi:
uwsgiはアプリケーションサーバであり、非静的ファイルのネットワーク要求は彼によって完了しなければならない.彼は静的ファイルサーバとして機能することもできるが、彼の強みではない.uwsgiはpythonで記述されているのでpip 3 install uwsgiでよい.(uwsgiは、仮想環境にインストールしないでシステムレベルのPython環境にインストールする必要があります).次にuwsgi.iniというプロファイルを作成します.
nginxのインストールと構成:
uwsgiは私たちのプロジェクトを正常に導入することができますが.しかし、私たちは依然としてnginxをwebサーバとして採用しなければなりません.nginxをWebサーバとして使用するメリットは、次のとおりです.uwsgiは、応答速度、キャッシュなどを含む静的ファイルリソースの処理がよくない. nginxはプロのwebサーバとして、uwsgiよりもパブリックネットワークに露出する方が安全です. 運び方が便利.例えば、いくつかのIPをブラックリストに書き込むには、nginxは非常に便利に書くことができます.uwsgiは実装するために大きなコードを書く可能性があります.
インストール:
apt install nginxでインストールできます.
nginx単純操作コマンド:
起動:service nginx start停止:service nginx stop再開:service nginx restartテストプロファイル:service nginx configtest
プロファイルを追加するには
プロファイルを書き終わったら、プロファイルが正常に設定されているかどうかをテストするために、コマンドを実行します:service nginx configtest、エラーが報告されなければ、成功を説明します.プロファイルの変更が完了するたびに、service nginx restartを実行することを忘れないでください.
supervisorを使用してuwsgiプロセスを管理するには、次の手順に従います.
supervisorにuwsgiを管理させると、uwsgiが予期せぬ状況で自動的に再起動できます.
supervisorのインストール:
supervisorはpythonで書かれているのでpipでインストールできます.また、supervisorはpython 3をサポートしていないため、python 2の環境にsupervisorをインストールする必要があります.pip2 install supervisor.
開始:
プロジェクトのルートディレクトリの下にsupervisor.confというファイルを作成し、次のコードをプロファイルに入力します.
次にコマンドsupervisord-c supervisor.confを使用して実行すればいいです.今後uwsgiを起動する場合は、コマンドsupervisorctl-c supervisor.confを使用して管理コンソールにアクセスし、関連するコマンドを実行して管理できます.
status#ステータス表示start program_name#イニシエータrestart program_name#再起動プログラムstop program_name#クローズプログラムreload#再ロードプロファイルquit#終了コンソール
ここでは、非常にクリーンなubuntu 16.04システム環境を使用しています.クラウドサーバ環境が異なるため、クラウドサーバは使用されていません.ゼロから導入を完了します.
開発機での準備:
pip freeze > requirements.txt
現在の環境のパッケージをrequirements.txt
ファイルにエクスポートし、配置が容易な場合にインストールします.#
* git init
#
* git remote add origin xxx.git
#
* git add .
#
* git commit -m 'first commit'
#
* git pull origin master --allow-unrelated-histories
# master
* git push origin master
サーバでの準備:
sudo apt install openssh-server openssh-client
service ssh restart
sudo apt install vim
/etc/apt/sources.list /etc/apt/sources.list.bak
、それからviで編集/etc/apt/sources.list
、削除sources.list
の他の内容をファイルに貼り付ける.そして保存:deb-src http://archive.ubuntu.com/ubuntu xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse
次に、ソースを更新します.
sudo apt update
5.MySQLサーバとクライアントのインストール:sudo apt install mysql-server mysql-client
6.memcachedのインストール:apt install memcachedをコマンドすることでインストールできます.より多くのmemcachedの知識点はmemcachedの章を参照してください.* sudo apt install python3
* sudo apt install python3-pip
* pip install --upgrade pip
システムに既にPython 3がある場合は、再インストールする必要はありません.supervisorはPython 3をサポートしていないので、Python 2をインストールする必要があります.もしなければ、インストールします.
* sudo apt install python2.7
* sudo apt install python-pip
そして
python2.7
と入力して使えます.pipを入力すると、次のエラーが表示されます. Traceback (most recent call last):
File "/usr/bin/pip", line 9, in
from pip import main
ImportError: cannot import name main
これは、pip 10のバグの1つであり、/usr/bin/pipの
from pip import main
if __name__ == '__main__':
sys.exit(main())
変更:
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())
* pip install virtualenvwrapper
virtualenvwrapperをインストールした後、virtualenvwrapperの環境変数を構成する必要があります.
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
そして終了
bashrc
ファイル、コマンド入力source ~/.bashrc
.注意:virtualenvwrapperをpython 2の環境にインストールしているので、仮想環境を作成するときに–pythonパラメータを使用して、どのPythonファイルを使用するかを指定する必要があります.例えば、私のpython 3のパスは/usr/bin/python 3です.サンプルコードは次のとおりです.
mkvirtualenv --python=/usr/bin/python3 xfz-env
9.gitのインストール:sudo apt install git
10.gitを使用してプロジェクトコードをダウンロードする:* git init
* git remote add origin https://gitee.com/hynever/xfz_beike
* git pull origin master
pip install -r requirements.txt
プロジェクト依存パッケージをインストールします.ヒントOSError: mysql_config not found
の場合は、sudo apt install libmysqld-devをインストールします.注意メール認証コードのパッケージは別途インストールする必要があります.dysmsをpythonフォルダをプロジェクトにアップロードし、このフォルダに入ります.命令実行:python setup.py install
.python manage.py collectstatic
uwsgiはアプリケーションサーバであり、非静的ファイルのネットワーク要求は彼によって完了しなければならない.彼は静的ファイルサーバとして機能することもできるが、彼の強みではない.uwsgiはpythonで記述されているのでpip 3 install uwsgiでよい.(uwsgiは、仮想環境にインストールしないでシステムレベルのPython環境にインストールする必要があります).次にuwsgi.iniというプロファイルを作成します.
[uwsgi]
#
#
chdir = /srv/beike/xfz
# Django wsgi
module = xfz.wsgi
# Python
home = /root/.virtualenvs/xfz-env
#
#
master = true
#
processes = 10
http = :8000
# socket
chmod-socket = 666
#
vacuum = true
daemonize = /var/log/xfz_uwsgi.log
uwsgi --ini uwsgi.ini , 。 http://ip :8000, ( ) uwsgi 。
nginxのインストールと構成:
uwsgiは私たちのプロジェクトを正常に導入することができますが.しかし、私たちは依然としてnginxをwebサーバとして採用しなければなりません.nginxをWebサーバとして使用するメリットは、次のとおりです.
インストール:
apt install nginxでインストールできます.
nginx単純操作コマンド:
起動:service nginx start停止:service nginx stop再開:service nginx restartテストプロファイル:service nginx configtest
プロファイルを追加するには
/etc/nginx/conf.d , , zhiliaoketang.conf, :
upstream zhiliaoketang {
server unix:///srv/zhiliaoketang/zhiliaoketang.sock;
}
#
server {
#
listen 80;
#
server_name 192.168.0.101;
charset utf-8;
#
client_max_body_size 75M;
# url
location /static {
#
alias /srv/zhiliaoketang/static_dist;
}
# , django
location / {
uwsgi_pass zhiliaoketang;
# uwsgi_params
include /etc/nginx/uwsgi_params;
}
}
プロファイルを書き終わったら、プロファイルが正常に設定されているかどうかをテストするために、コマンドを実行します:service nginx configtest、エラーが報告されなければ、成功を説明します.プロファイルの変更が完了するたびに、service nginx restartを実行することを忘れないでください.
supervisorを使用してuwsgiプロセスを管理するには、次の手順に従います.
supervisorにuwsgiを管理させると、uwsgiが予期せぬ状況で自動的に再起動できます.
supervisorのインストール:
supervisorはpythonで書かれているのでpipでインストールできます.また、supervisorはpython 3をサポートしていないため、python 2の環境にsupervisorをインストールする必要があります.pip2 install supervisor.
開始:
プロジェクトのルートディレクトリの下にsupervisor.confというファイルを作成し、次のコードをプロファイルに入力します.
# supervisor
[program:mysite]
# supervisor
command=uwsgi --ini zlkt_uwsgi.ini
#
directory = /srv/zhiliaoketang
#
startsecs=0
#
stopwaitsecs=0
#
autostart=true
#
autorestart=true
# log
stdout_logfile=/srv/zhiliaoketang/log/supervisord.log
#
stderr_logfile=/srv/zhiliaoketang/log/supervisord.err
[supervisord]
# log
loglevel=debug
[inet_http_server]
# supervisor
port = :9001
#
username = admin
password = 123
# supervisorctl
[supervisorctl]
# supervisorctl
serverurl = http://127.0.0.1:9001
# supervisorctl
username = admin
password = 123
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
次にコマンドsupervisord-c supervisor.confを使用して実行すればいいです.今後uwsgiを起動する場合は、コマンドsupervisorctl-c supervisor.confを使用して管理コンソールにアクセスし、関連するコマンドを実行して管理できます.
status#ステータス表示start program_name#イニシエータrestart program_name#再起動プログラムstop program_name#クローズプログラムreload#再ロードプロファイルquit#終了コンソール