Once per server:
apt-get update && apt-get upgrade
apt-get install libapache2-mod-wsgi
apt-get install python-setuptools python-dev build-essential
easy_install -U pip
pip install virtualenv
Per project:
cd /home
mkdir fotomono && cd fotomono
virtualenv --no-site-packages venv
source venv/bin/activate
pip install django
django-admin.py startproject fotomono
cd fotomono
python manage.py runserver 0.0.0.0:8080
mkdir -p media/css
mkdir media/js
mkdir media/img
For sqlite3:
mkdir db
touch db/sqlite.db
chown -R www-data:www-data db
For msyql:
apt-get install libmysqlclient-dev
apt-get install python-dev
pip install MySQL-python
pip freeze > ../requirements.txt
python manage.py startapp app (creates app/models.py views.py skeleton)
nano fotomono/settings.py
DATABASES =
STATIC_URL = '/media/'
STATICFILES_DIRS = (full path of above)
TEMPLATE_DIRS = (full path)
INSTALLED_APPS = (app, needed if syncdb)
mkdir app/templates
mkdir apache
cp fotomono/wsgi.py apache/django.wsgi
nano apache/django.wsgi
site.addsitedir('path to/venv/lib/python2.7/site-packages')
path
nano /etc/apache2/sites-available/fotomono
WSGIScriptAlias / /home/ubuntu/fotomono/apache/django.wsgi
Alias /media/ /home/ubuntu/fotomono/media/
<Directory /home/ubuntu/fotomono/media>
Order allow,deny
Allow from all
</Directory>
<Location "/media/">
SetHandler None
#Header set Cache-Control "max-age=290304000, public"
Options -Indexes +FollowSymLinks
allow from all
</Location>
for version control: cp /etc/apache2/sites-available/fotomono apache/virtualhost
a2ensite fotomono
nano fotomono/urls.py
nano app/views.py
nano app/templates/index.html
/etc/init.d/apache2 restart
nano app/models.py
python manage.py syncdb
nano .gitignore
pip freeze > requirements.txt
git init
git add .
git commit -m "initial commit"
git remote add origin ssh://[email protected]/fduran/fotomono.git
git push -u origin --all
git push (master origin)
Admin:
ln -s /home/ubuntu/venvmono/lib/python2.7/site-packages/django/contrib/admin/static/admin media/admin
add rule in urls.py
enable as INSTALLED_APPS in settings.py
create app/admin.py
python manage.py syncdb
DB backup:
python manage.py dumpdata > db_backup.json
drop app_ tables;
make changes to models.py
syncdb
python manage.py loaddata db_backup.json