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
$ 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
ブラウザでアクセスすると見れるよ。