とびさんのブログ

技術チョッピリ 格闘ガッツリ その他フンワリ

django 本番環境構築からリリースまで(django1.8.7 + Apache + mod_wsgi)

3か月ぶりです。ご無沙汰してます。

本番環境でも下のコマンドをバックグラウンドに放っておけば行けると思ってましたw

python manage.py runserver 0.0.0.0:8000


本番環境(django1.8.7 + Apache + mod_wsgi)作るのに結構時間かかったので、メモ。
あと、開発環境で作ったアプリをどう入れるのか意外とWebに載ってなかったので書くわ。

◆環境
ローカルユーザ:marrsan
プロジェクト名:webapp
アプリ名:test
プロジェクト自体は、/var/www/cgi-bin直下に入れてます。


◆事前準備
開発環境にてプロジェクトをtarで固めておいて

$ cd /home/marrsan/
$ sudo tar cvf webapp.tar webapp

開発環境から本番環境にscp等でコピーしとく


◆手順
必要なものyumで入れるよ

$ sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel vim gcc git wget httpd httpd-devel mod_wsgi -y

pipいれよか

$ sudo easy_install pip

virtualenv入れて

$ sudo pip install virtualenv

ENVつー環境作ってー

$ cd /home/marrsan
$ virtualenv ENV

環境読み取りー

$ . ENV/bin/activate

django入れよ

$ pip install django 

bootstrap入れるわ

$ pip install django-bootstrap-form

Apache起動と自動起動設定

$ sudo systemctl start httpd
$ sudo systemctl enable httpd

selinuxオフ

$ sudo setenforce 0

mod_wsgi周り。

$ sudo vi /etc/httpd/conf.d/python.conf

# mod_wsgiの読み込み
LoadModule wsgi_module modules/mod_wsgi.so

WSGIScriptAlias / /var/www/cgi-bin/webapp/webapp/wsgi.py
#WSGIScriptAlias /webapp /var/www/cgi-bin/webapp/webapp/wsgi.py

Alias /static/ /var/www/cgi-bin/webapp/static/
<Directory /var/www/cgi-bin/webapp/static>
Order deny,allow
Allow from all
</Directory>

<Directory /var/www/cgi-bin/webapp/webapp>
Order deny,allow
Allow from all
</Directory>

confファイル読み込ませるので、Apache再起動

$ sudo systemctl restart httpd

cgi-bin直下権限変更(777やな人は、別なやり方もあるでよ。ぐぐって)

$ sudo chmod 777 /var/www/cgi-bin

プロジェクトとアプリケーション作るよ

$ cd /var/www/cgi-bin/
$ django-admin.py startproject webapp
$ cd webapp
$ python manage.py startapp test

事前準備で、scpでコピーしたtarファイルを展開

$ sudo /var/www/cgi-bin
$ sudo tar xvf webapp_new.tar

wsgi書き換えるぜ

vi /var/www/cgi-bin/webapp/webapp/wsgi.py

import os
import site
import sys

site.addsitedir("/home/marrsan/ENV/lib/python2.7/site-packages")

sys.path.append('/var/www/cgi-bin/webapp')
#sys.path.append('/var/www/cgi-bin/webapp/webapp')

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "webapp.settings")

activate_env = os.path.expanduser("/home/marrsan/ENV/bin/activate_this.py")
execfile(activate_env, dict(__file__=activate_env))

from django.core.wsgi import get_wsgi_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "webapp.settings")

application = get_wsgi_application()


ENV環境のディレクトリ権限変えるよ

$ chmod 775 /home/marrsan

DBファイルの権限変更

sudo chmod 777 /var/www/cgi-bin/webapp
sudo chmod 777 /var/www/cgi-bin/webapp/db.sqlite3

DB migrate

$ cd /var/www/cgi-bin/webapp
$ python manage.py makemigrations test
$ python manage.py sqlmigrate test 0001

ブラウザでアクセスすると見れるよ。