Meaningless Notebook

我輩は雑記帖である。名はまだない。


CentOS 7.3 に nginx、Python3.6、django、uwsgi をインスト-ルして django アプリケ-ションを配備する。

nginx と uwsgi は、ソケットを介して接続させる。

手順は下記の通り。

  1. 必要なモジュ-ル をインスト-ル
  2. 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

色々試作したから、どっか漏れてるかも…。

参考元

  1. WEB ARCH LABO
  2. 侍エンジニア塾ブログ
  3. django
  4. CentOS7 に nginx導入
  5. python2.7.10でpip:command not foundになる。
  6. pipを用いてPythonのフレームワークdjangoをインストール
  7. Proxy環境下での pip install (Windows)
  8. 目の前に僕らの道がある
  9. in my 雑記
  10. ちゃんと運用するときのuWSGI設定メモ
  11. Flask + uWSGI + Nginx でハローワールドするまで @ さくらのVPS (CentOS 6.6)
  12. unching-starのブログ

Amazon