2016年7月8日 星期五

Django + apache2 (wsgi) 部署 deploy 粗略筆記

裝Apache
sudo apt-get install apache2
裝WSGI
#Python 2
sudo apt-get install libapache2-mod-wsgi
#Python 3
sudo apt-get install libapache2-mod-wsgi-py3
新增apache2 sites-available (/etc/apache2/ 底下找)
<VirtualHost *:80>
ErrorLog /etc/apache2/error.log
ServerName www.yourdomain.com
ServerAlias otherdomain.com
ServerAdmin youmail@gmail.com 
Alias /media/ /var/www/site/PROJECT/media/
Alias /static/ /var/www/site/PROJECT/static/ 
<Directory /var/www/site/PROJECT/media>
Require all granted
</Directory> 
<Directory /var/www/site/PROJECT/static>
Require all granted
</Directory> 
WSGIScriptAlias / /var/www/site/PROJECT/PROJECT/wsgi.py

<Directory /var/www/site/PROJECT/PROJECT>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>
wsgi.py設定
import os, sys
from os.path import join,dirname,abspath
PROJECT_DIR = dirname(dirname(abspath(__file__)))
sys.path.append('/var/www/site/PROJECT')
#看python版本!!
sys.path.append('/var/www/venv/PROJECT/lib/python2.7/site-packages') 
os.environ["DJANGO_SETTINGS_MODULE"] = 'PROJECT.settings'
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application()
改dir權限 /etc/apache2/envvars 可改使用apache2之用戶,預設www-data
sudo chmod -R 644 PROJECT
sudo find PROJECT -type d -exec chmod 755 \{\} \;
>>改static權限 [settings.py]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
改用戶權限 (有用到upload或db才需要)
sudo chgrp -R www-data uploads
sudo chmod -R g+w uploads

sudo chgrp www-data PROJECT
sudo chmod g+w PROJECT
sudo chgrp www-data PROJECT/db/db.sqlite3
sudo chmod g+w PROJECT/db/db.sqlite3
啟動
sudo a2ensite PROJECT
sudo service apache2 reload

沒有留言:

張貼留言