aliyun的網絡訪問有時會有問題,pip有問題的時候使用豆瓣源html
pip install $apptoinstall$ -i http://pypi.douban.com/simple
sudo easy_install pip # no pip in ubuntu < 10, make sure sudo pip install --upgrade virtualenv virtualenvwrapper sudo pip install --upgrade 'fabric>=1.0'
sudo apt-get --yes install build-essential python-setuptools python-dev \ python-software-properties
這個是爲mezzanine準備的,Pillow自動安裝的時候不會自動裝,mezzanine的上傳功能不能使用。python
sudo apt-get install --yes libtiff4-dev libjpeg8-dev zlib1g-dev libfreetype6-dev \
liblcms1-dev libwebp-dev python-dev
0.perpare foldsnginx
mkdir -p /srv/www/open-ivi.org/public_html/static mkdir /srv/www/open-ivi.org/application mkdir /srv/www/open-ivi.org/logs
1. create virtualenvweb
export WORKON_HOME=/srv/www/open-ivi.org/
mkdir $WORKON_HOME
source /usr/local/bin/virtualenvwrapper.shsql
cd $WORKON_HOMEdjango
mkvirtualenv open-ivi.orgubuntu
#rmvirtualenv open-ivi.org # use this command to remove the env if you are in trouble網絡
######################################################################session
# How to enter this virtual env again app
cd /srv/www/open-ivi.org/
source /srv/www/open-ivi.org/open-ivi.org/bin/activate
######################################################################
2.install packages
pip install pillow -------------------------------------------------------------------- *** TKINTER support not available --- JPEG support available --- ZLIB (PNG/ZIP) support available --- LIBTIFF support available --- FREETYPE2 support available *** LITTLECMS2 support not available --- WEBP support available *** WEBPMUX support not available -------------------------------------------------------------------- pip install mezzanine south django-compressor
3. try to work with sqlite3
mezzanine-project siteroot chmod 777 -R *.py #make it as exe cd siteroot ./manage.py createdb --noinput # usrname:admin pwd:default ./manage.py runserver 0.0.0.0:9999 #then check it with your browser
So great! It works.Then let's create the server stack .
0.Make Sure django works with the deploy env
#go there to find a key :http://www.miniwebtool.com/django-secret-key-generator/
#edit siteroot/deploy/live_setting.py
SECRET_KEY =
1.install gunicorn
gunicorn18.0 droped gunicorn_django so let's use old version.
pip install gunicorn==17.5
#make www-data own the folder
chown -R www-data:www-data /srv/www
2.test gunicorn
gunicorn siteroot.wsgi:application --bind 0.0.0.0:80
3.add gunicorn conf to project root
#we use the code from deploy/gunicorn.conf.py from __future__ import unicode_literals import os import multiprocessing bind = "127.0.0.1:8023" workers = multiprocessing.cpu_count() * 2 + 1
#old method have problem with the system use multiprocessing class for replacement
#workers = (os.sysconf("SC_NPROCESSORS_ONLN") * 2) + 1 loglevel = "error" proc_name = "openivi"
4. install supervisor
apt-get install supervisor ngnix
5.make gunicorn run while reboot
vi /etc/supervisor/conf.d/openivi.conf #add codes below
[group:openivi]
programs=gunicorn_openivi
[program:gunicorn_openivi]
command=/datadsk/siteroot/bin/gunicorn_django -c gunicorn.conf.py -p gunicorn.pid
directory=/datadsk/siteroot/openivi
user=root
autostart=true
autorestart=true
redirect_stderr=true
environment=PATH="/datadsk/siteroot/bin"
6.try it!
supervisorctl reload
CSS won't be found when we use gunicorn, let nginx do with the statics.
we already installed ngnix in step3
1.config it! Add file to /ete/nginx/sites-enabled/openivi.conf as below.
upstream openivi { server 127.0.0.1:8023; } server { listen 80; # listen 443 ssl; server_name localhost; client_max_body_size 10M; keepalive_timeout 15; # ssl_certificate conf/%(proj_name)s.crt; # ssl_certificate_key conf/%(proj_name)s.key; # ssl_session_cache shared:SSL:10m; # ssl_session_timeout 10m; # ssl_ciphers RC4:HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; location / { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Protocol $scheme; proxy_pass http://openivi; } location /static/ { root /datadsk/siteroot/openivi; access_log off; log_not_found off; } location /robots.txt { root /datadsk/siteroot/openivi/static; access_log off; log_not_found off; } location /favicon.ico { root /datadsk/siteroot/openivi/static/img; access_log off; log_not_found off; } }
@we used nginx for static pass-though, don't forget to collect all static file to the root folder. manage.py have this feature which provided by django framework.
Test it ,Shoud be works.