CentOS 7.3 に nginx、Python3.6、django、uwsgi をインスト-ルして django アプリケ-ションを配備する。
nginx と uwsgi は、ソケットを介して接続させる。
手順は下記の通り。
- 必要なモジュ-ル をインスト-ル
- nginx、uwsgi をセットアップ
1.必要なモジュ-ル をインスト-ル
1.Python 3.6 インスト-ル
1.下記コマンドを実行して、IUS リポジトリを追加。
yum install https://centos7.iuscommunity.org/ius-release.rpm
2.下記コマンドを実行して、Python 3.6 をインスト-ル。
yum install -y python36u python36u-libs python36u-devel python36u-pip gcc
*
gcc は、後でインスト-ルする uwsgi で必要となる為。
2.Python パッケ-ジ一式インスト-ル
1.下記コマンドを実行して、インスト-ルした python36u-pip を探す。
find / -name pip
*
以降『/usr/lib/python3.6/site-pakages/pip』として示す。
2.下記コマンドを実行して、django をインスト-ル。
python3.6 /usr/lib/python3.6/site-packages/pip install django --proxy http://プロキシサ-バのIPアドレス 又は ホスト名:ポ-ト番号
*
他に利用しているフレ-ムワ-クがあれば、同様にインスト-ルする。
3.必要に応じて下記コマンドを実行して、setuptools をアップデ-ト。
python3.6 /usr/lib/python3.6/site-packages/pip install -U setuptools --proxy http://プロキシサ-バ-のIPアドレス 又は ホスト名:ポ-ト番号
*
django 実行環境試作で、実施したので一応記載…不要かも。
4.下記コマンドを実行して、uwsgi をインスト-ル。
python3.6 /usr/lib/python3.6/site-packages/pip install uwsgi --proxy http://プロキシサ-バ-のIPアドレス 又は ホスト名:ポ-ト番号
3.nginx インスト-ル
1.『/etc/yum.repos.d/nginx.repo』を作成。
[nginx] name=nginx repo baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/ gpgcheck=0 enabled=1
2.下記コマンドを実行して、nginx をインスト-ル。
yum install nginx
4.django アプリケ-ション動作確認
django アプリケ-ションを実行環境に配備して django の 開発サ-バで動作確認をする場合は、下記コマンドを実行する。
python3.6 配備したdjangoプロジェクトのmanage.py runserver 実行環境のIPアドレス:適当なポ-ト番号
2.nginx、uwsgi をセットアップ
1.『/etc/nginx/conf.d/django アプリケ-ション向け設定ファイル.conf』を下記の通り作成。
server { listen 80; location / { try_files $uri @uwsgi; } location /static/ { root static ファイル群のパス; } location @uwsgi { include uwsgi_params; uwsgi_pass unix:/var/tmp/uwsgi.sock; } }
2.uwsgi 設定ファイルを下記の通り作成。
[uwsgi] # django config base = django プロジェクトディレクトリの絶対パス app = wsgi (※1) module = %(app) # python config # to set the python --prefix to home home = /usr (※2) pythonpath = %(base) # nginx <=> uwsgi config socket = /var/tmp/uwsgi.sock chmod-socket = 666
*1
django プロジェクトの wsgi.py を指定する (.pyは不要)。
*2
下記コマンド実行結果で出力される –prefix を設定する。
python3.6 >>> import sysconfig >>> sysconfig.get_config_vars('CONFIG_ARGS')
3.uwsgi サ-ビス化
Unit定義ファイルを作成し、『/etc/systemd/system/』へ配備。
『uwsgi.service』
[Unit] Description=uwsgi After=syslog.target [Service] ExecStart=/usr/bin/uwsgi --master --emperor 設定ファイル格納ディレクトリ絶対パス --die-on-term Restart=always KillSignal=SIGQUIT + "die-on-term" Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target
4.SELinux ポリシ-追加
『SELinux の ポリシ-を追加する』を参考にポリシ-を追加。
*
django アプリケ-ションによってポリシ-が変わるので、本記事では記載しない。
但し、『/var/tmp/uwsgi.sock』の読み書きに関するポリシ-追加は必須。
5.nginx、uwsgi サ-ビスの起動設定
下記コマンドを実行して、各サ-ビスの起動設定。
systemctl start nginx.service systemctl start uwsgi.service systemctl enable nginx.service systemctl enable uwsgi.service
6.Firewalld をセットアップ。
下記コマンドを実行して Firewalld 設定。
firewall-cmd --add-service=http --permanent firewall-cmd --reload
色々試作したから、どっか漏れてるかも…。
参考元
- WEB ARCH LABO
- 侍エンジニア塾ブログ
- django
- CentOS7 に nginx導入
- python2.7.10でpip:command not foundになる。
- pipを用いてPythonのフレームワークdjangoをインストール
- Proxy環境下での pip install (Windows)
- 目の前に僕らの道がある
- in my 雑記
- ちゃんと運用するときのuWSGI設定メモ
- Flask + uWSGI + Nginx でハローワールドするまで @ さくらのVPS (CentOS 6.6)
- unching-starのブログ