[Django]Anaconda で本番環境を構築する

Django Logo プログラミング

Django の本番環境構築した時にかなりハマってしまったので、その時のハマりどころなども含めて手順をまとめました。

本番環境

以下の構成で本番環境を構築しました。

  • CentOS : 6系
  • Apache : 2.2
  • Python : 3.5.2
  • Django : 1.10.5
  • pyenv : 1.1.1-5
  • Anaconda : 4.2.0(64bit)
  • mod_wsgi : 4.5.15

前提として、 Django のソースコードは既に配置済みで、 DB もマイグレーション完了しているものとします。

この辺りは開発環境で開発している時と手順は変わらないので・・・。

今回は ApacheDjango をのせることがメインです。

Django と mod_wsgi について

Djangomod_wsgi 利用する方法については、こちらも参考になると思います。

Django を Apache と mod_wsgi とともに使うには? | Django ドキュメント
The web framework for perfectionists with deadlines.

Anaconda とは

Anaconda | The Operating System for AI
Democratize AI innovation with the world’s most trusted open...

AnacondaPython 本体と、 Python でよく利用されるライブラリをセットにした Python パッケージです。

Anaconda をインストールすると、 Python 本体とライブラリがインストールされるため、環境構築が非常に楽になります。

本番環境構築の流れ

本番環境構築の大まかな流れは下記の通りです。

  1. pyenv のインストール
  2. Anaconda のインストール
  3. conda コマンドで Python の環境を構築する
  4. mod_wsgi のインストール
  5. Apache の設定

pyenv のインストール

pyenv をインストールします。

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

インストールが完了したら PATH の設定を行います。

pyenv PATH の設定

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc

$ source ~/.bashrc

Anaconda のインストール

Anaconda をインストールします。

# インストール可能なAnacondaを確認します。
$ pyenv install -l | grep ana

# 自身の環境に応じたAnacondaをインストールしてください。
$ pyenv install anaconda3-4.2.0
$ pyenv rehash
# グローバル設定
$ pyenv global anaconda3-4.2.0

今回は本番環境なので、 Python の 2系 と 3系 の共存などは特に考えていないため、 Python の 3系の Anacondapyenv のグローバルに設定しています。

インストールが完了したら PATH の設定を行います。

Anaconda PATH の設定

$ echo 'export PATH="$PYENV_ROOT/versions/anaconda3-2.5.0/bin/:$PATH"' >> ~/.bashrc
$ source ~/.bashrc

インストールした Anaconda に付随している conda をアップデートしておきます。(念のため)

conda アップデート

$ conda update conda

conda コマンドで Python の環境を構築する

仮想環境を構築します。

# conda create -n <環境名> python=<バージョン> <スペース区切りでライブラリ名>

$ conda create -n python3.5.2 python=3.5.2

PYTHONPATHPYTHONHOME を設定します。

PYTHONPATH, PYTHONHOME 設定

$ echo 'export PYTHONHOME=/home/hoge/.pyenv/versions/anaconda3-4.2.0' >> ~/.bashrc
$ echo 'export PYTHONPATH=/home/hoge/.pyenv/versions/anaconda3-4.2.0/bin:/home/hoge/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages' >> ~/.bashrc
$ source ~/.bashrc

この状態で Python のバージョンを確認します。

$ python --version
Python 3.5.2 :: Anaconda 4.2.0 (64-bit)

このように表示されれば成功です!

mod_wsgi のインストール

ApacheDjango を動かすには mod_wsgi が必要なので、 pip を利用してインストールします。

$ pip install mod_wsgi

インストールが完了すると下記のパスにモジュールが配置されます。

/home/hoge/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so

ただ、このモジュールは /home/hoge というユーザのパスの中に存在しているので、そのままだと Apache ユーザはモジュールにアクセスすることができません。

なので、このモジュールにアクセスできるようにしてあげる必要があります。

mod_wsgi へのアクセス権変更

$ chmod 755 -R /home/hoge

pyenv のインストール先を Apache がアクセスできるところに変更してあげても良いと思います。

Apache の設定

Apache の設定ファイルを作成します。

wsgi.conf

LoadModule wsgi_module /home/hoge/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/mod_wsgi/server/mod_wsgi-py35.cpython-35m-x86_64-linux-gnu.so

python.conf

# 静的ファイルへアクセスするための設定
Alias /static/ /documentroot/project_name/staticfiles/

<Directory /documentroot/project_name/staticfiles>
    Order deny,allow
    Allow from all
</Directory>

# ファイルストレージなどの保管場所へアクセスするための設定
Alias /media/ /documentroot/project_name/media/

<Directory /documentroot/project_name/media>
    Order deny,allow
    Allow from all
</Directory>

# wsgi関連の設定
WSGIScriptAlias /app_name /documentroot/project_name/app_name/wsgi.py
WSGIPythonPath /documentroot/project_name:/home/hoge/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages

# Djangoアプリケーションの設定
<Directory /documentroot/project_name/app_name>
    Order allow,deny
    Allow from all
</Directory>

documentrootproject_nameapp_name は環境に合わせて変更してください。

設定が完了したら Apache を再起動します。

Apache 再起動

$ sudo /etc/init.d/httpd restart

ブラウザでアクセスして画面が表示されたら成功です!

最後に

Django は開発環境はすぐに構築できたのですが、本番環境構築では、必要なソフトのインストールや設定が必要なため、環境構築できるまでに思った以上に時間がかかってしまいました。

やはり、 runserver で簡単に動かすのと、 Apache にのせて動かすのではかなり勝手が違いますね・・・。

Django の本番環境構築で困ってるのであれば、今回ご紹介した手順を参考にしてみてください。

コメント

  1. […] AnacondaでDjangoの本番環境を構築する http://43.206.46.12/anaconda-django/ […]

  2. […] はじめての Django アプリ作成、その 1[Django]Anacondaで本番環境を構築する […]

モバイルバージョンを終了
タイトルとURLをコピーしました