序文
これは時間のプロセスを構築するために私のDjangoプロジェクト、雨の日のために持ち込ま要約レコードです。
プロジェクトでは、メソッドのnginxの+ uwsgiミックスを使用しています。
プロジェクトの依存関係を採用しrequirements.txt
、ファイル管理の方法を。
ローカルの準備
-
私たちは、プロジェクト稼働は、何があることを確認することはできません
bug
-
輸出環境の現在のパッケージ
pip freeze > requirements.txt
-
項目は、サーバーにアップロード
/srv
ディレクトリ。ここでgit
例えば、ターミナルを開くには、次のコマンドシーケンスを入力し、形式:$ git init $ git remote add origin xxx.git # 替换成你的项目git地址 $ git add . $ git commit -m 'first commit' $ git pull origin master --allow-unrelated-histories $ git push origin master
サーバーにプロジェクトを展開します
pythonをインストールします。
-
インストール済みのプロジェクトが使用します
python
。$ sudo apt install python $ sudo apt install python-pip $ pip install --upgrade pip
-
インストール
virtualenv
とvirutalenvwrapper
仮想環境を作成します。$ pip install virtualenv $ pip install virtualenvwrapper $ sudo apt install vim
-
ファイルを編集します
~/.bashrc
$ vim ~/.bashrc # 添加如下2行代码 export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh # 保存文件,让文件成效 $ source ~/.bashrc
gitのをインストールします。
$ sudo apt install git
# 为了方便XShell或者CRT连接服务器,建议安装OpenSSH
$ sudo apt install openssh-server openssh-client
$ service ssh restart
MySQLをインストールします
$ sudo apt install mysql-server mysql-client
$ sudo apt-get install libmysqld-dev
テスト構成
- 仮想環境に、依存関係をインストールする
workon ***
コマンドを実行し、プロジェクトのルートディレクトリに、pip install -r requirements.txt
- データベースを作成し、新しいターミナルを開き、データベースのログ、
mysql -uroot -p
および適切なデータベースを作成しますCREATE DATABASE IF NOT EXISTS my_db default charset utf8mb4;
- データの移行、
python manage.py migrate
- 収集静的ファイル、
python manage.py collectstatic
- 、サーバを起動し、実行
python manage.py runserver 0.0.0.0:8000
し、コンピュータ上のブラウザに入力してhttp://<your server ip>:8000
、すべてのページにエラーがないことを保証するために、すべてのページでサイトにアクセス。
注意:
- 設定する
ALLOW_HOST
ドメイン名またはip
アドレスを。 - セッティング
DEBUG=False
。
インストールuwsgi
uwsgi
アプリケーションサーバ、ネットワーク要求は非静的ファイルが彼によって完了しなければならないが、彼はまだ彼の強いポイントをファイルサーバとして機能しますが、できません。
uwsgi
使用であるpython
のでによる書き込み、pip install uwsgi
それは。(uwsgi
システムレベルでインストールする必要がありPython
、環境、仮想環境をインストールしないでください)。
-
コマンドラインの開始
uwsgi
:$ uwsgi --http :8000 --module test.wsgi --vritualenv=/root/.virtualenvs/django-env-py36
ブラウザでテストページへのアクセス権を持っている場合は、指示uwsgiプロジェクトをロードすることができます。
-
起動するプロファイル方法
uwsgi
:プロジェクトのルートパスの下に、ファイルを作成し
djangotest.ini
、次のコードを記入:[uwsgi] # Django相关的配置 # 必须全部为绝对路径 # 项目的路径 chdir=/srv/djangotest # Django的wsgi文件 module=djangotest.wsgi # Python虚拟环境的路径 home=/root/.virtualenvs/django-env-py36 # 进程相关的设置 # 主进程 master=true # 最大数量的工作进程 processes=10 # socket文件路径,绝对路径 socket=/srv/djangotest/djangotest.sock # 设置socket的权限 chmod-socket=666 # 退出的时候是否清理环境 vacuum=true 然后使用命令uwsgi --ini djangotest.ini,看下是否还能启动这个项目。
nginxのインストール
nginx
これは、あるweb
サーバー。静的ファイルはロードし、受信するhttp
要求を。
-
コマンド
sudo apt install nginx
インストールします。 -
nginx
よく使用するコマンド:- スタートnginxの:サービスnginxの開始
- 閉じるnginxの:サービスnginxの停止
- 再起動nginxの:サービスnginxの再起動
-
静的ファイルを収集します。
静的ファイルは許されるべき
nginx
ではなく、対処するdjango
ことができません。まず、あなたのことを確認し
settings.py
、ファイルが持つSTATIC_ROOT
設定を、あなたの静的ファイルを指定する必要があります。この設定は、どのカタログの下に置かれます。その後、我々は、以下のコマンドを実行することができます
python manage.py collectstatic
(既に実行、無視してください)すべての静的ファイルを収集します。 -
でnginxの設定ファイル書き込み
/etc/nginx/conf.d
ディレクトリを、新しいファイルを作成djangotest.conf
し、それに次のコードを貼り付けます。upstream djangotest { server unix:///srv/djangotest/djangotest.sock; } # 配置服务器 server { # 监听的端口号 listen 80; # 域名 server_name 192.168.0.101; charset utf-8; # 最大的文件上传尺寸 client_max_body_size 75M; # 静态文件访问的url location /static { # 静态文件地址 alias /srv/djangotest/static_dist; } # 最后,发送所有非静态文件请求到django服务器 location / { uwsgi_pass djangotest; # uwsgi_params文件地址 include /etc/nginx/uwsgi_params; } }
-
コンフィギュレーションテスト
service nginx configtest
ファイルを:。注:各変更後の構成は再起動が必要nginx
:service nginx restart
使用スーパーバイザー
uwsgi管理責任者は、事故、自動再起動の場合にuwsgiことができましょう。
-
インストール
supervisor
:システム・レベルのPython環境でpip install supervisor
。 -
プロジェクトのルートディレクトリにファイルを作成します
my_supervisor.conf
。コンテンツの準備:# supervisor的程序名字 [program:mysite] # supervisor执行的命令 command=uwsgi --ini zlkt_uwsgi.ini # 项目的目录 directory = /srv/djangotest # 开始的时候等待多少秒 startsecs=0 # 停止的时候等待多少秒 stopwaitsecs=0 # 自动开始 autostart=true # 程序挂了后自动重启 autorestart=true # 输出的log文件 stdout_logfile=/srv/djangotest/log/supervisord.log # 输出的错误文件 stderr_logfile=/srv/djangotest/log/supervisord.err [supervisord] # log的级别 loglevel=info # 使用supervisorctl的配置 [supervisorctl] # 使用supervisorctl登录的地址和端口号 serverurl = http://127.0.0.1:9001 # 登录supervisorctl的用户名和密码 username = admin password = 123 [inet_http_server] # supervisor的服务器 port = :9001 # 用户名和密码 username = admin password = 123 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
-
実行し
supervisor
、実行supervisord -c my_supervisor.conf
。 -
supervisor
管理コンソール、supervisorctl -c my_supervisor.conf
-
supervisor
管理コンソールよく使用するコマンド# 查看状态 status # 启动程序 start program_name # 重新启动程序 restart program_name # 关闭程序 stop program_name # 重新加载配置文件 reload # 退出控制台 quit
あなたのコードをお楽しみください!