User Tools

Site Tools


remotedjangositedevelopment

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

remotedjangositedevelopment [2015/06/09 15:23] (current)
Line 1: Line 1:
 +[[:​[PageOutline]]]
 +
 +DjangoSiteDevelopment
 +
 +====== Remote Development ====== ​
 +
 +Remote development refers to development on your own computer, not "​tux"​ the
 +machine serving the OCLUG web site.  Developing remotely allows experimentation
 +with the site without broadcasting your changes to everyone. ​ It also allows
 +users without accounts on tux to work on the site.
 +
 +
 +====== Required Software ======
 +
 +For remote development of the OCLUG web site you will need the following:
 +
 +  * Apache 2.x with mod_wsgi
 +  * Python, python-markdown and python-imaging
 +  * Subversion
 +  * Sqlite (or PostgreSQL or MySQL if you prefer)
 +  * [[http://​www.djangoproject.com/​|Django]] 1.4
 +
 +===== Virtualenv/​pip packages =====
 +
 +If you prefer you may use the requirements.txt to install the python requirements
 +into a virtualenv. ​ Setting up a virtualenv is outside the scope of this document.
 +
 +===== Debian/​Ubuntu packages =====
 +
 +Everything can be installed on recent Debian or Ubuntu systems with this command
 +run as root (or with `sudo`):
 +<​code>​
 +sudo apt-get install apache2 libapache2-mod-wsgi subversion \
 +python python-markdown python-imaging python-pysqlite2 \
 +python-django ​
 +</​code>​
 +
 +
 +===== RedHat packages =====
 +
 +or on Ret Hat/Fedora systems you will first have to download python-markdown by following
 +the link from http://​www.freewisdom.org/​projects/​python-markdown/​ then do the following:
 +<​code>​
 +cd python-markdown-*
 +python setup.py install
 +yum install httpd mod_wsgi subversion python python-imaging python-sqlite
 +</​code>​
 +
 +
 +You can verify your installation by running:
 +<​code>​
 +python -c '​import django; print django.VERSION'​
 +</​code>​
 +
 +
 +It should print something like `(1, 4, 1, '​final',​ 0)`.
 +
 +====== Setting up the Working Directory ======
 +
 +These instructions suggest installing the code in a regular user account'​s home direcory.  ​
 +Make sure the user account'​s home directory is accessible by apache by running:
 +<​code>​
 +ls -ald $HOME
 +</​code>​
 +
 +
 +If the set of characters printed starting with `drwx` ends with a `-` instead of an `x`
 +then you need to change the default permissions.  ​
 +If you do not want to make your home directory world-traversable
 +you may want to create a separate user account at this time.
 +This command will make the home directory world-traversable:​
 +<​code>​
 +chmod a+x $HOME
 +</​code>​
 +
 +
 +====== Downloading the Code and Site data ======
 +
 +Run these commands starting from your home directory to create an `oclug_site` directory ​
 +and download the OCLUG site code and data:
 +<​code>​
 +cd
 +mkdir oclug_site
 +cd oclug_site
 +svn co http://​devel.oclug.on.ca/​svn/​oclug_django_site/​trunk oclug_django_site
 +svn co http://​devel.oclug.on.ca/​svn/​site_data/​trunk site_data
 +</​code>​
 +
 +
 +====== Site Configuration ======
 +
 +You will need to create a settings file called `local_settings.py` in your `oclug_django_site` directory:
 +<​code>​
 +cd $HOME/​oclug_site/​oclug_django_site
 +sed "​s/​PUT-RANDOM-STUFF-HERE/​$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM$RANDOM/;​
 +s{USERS-HOME-DIRECTORY{$HOME{;"​ < local_settings.sample.py > local_settings.py
 +</​code>​
 +
 +
 +Next set up a database and a writable directory for Apache:
 +<​code>​
 +sudo mkdir -p /​var/​local/​apache_writable/​oclug_uploaded/​
 +sudo cp -r $HOME/​oclug_site/​site_data/​uploaded/​* /​var/​local/​apache_writable/​oclug_uploaded/​
 +cd $HOME/​oclug_site/​oclug_django_site
 +sudo python manage.py syncdb ​ # this will let you create an admin account
 +sudo python manage.py loaddata $HOME/​oclug_site/​site_data/​db.xml
 +sudo chown -R www-data: /​var/​local/​apache_writable/ ​ # use "​apache"​ instead of www-data on Red Hat systems
 +</​code>​
 +
 +
 +The account you created will be used to access the `/admin/` pages on the web site.
 +
 +We also need to create two symlinks to allow Apache to find some of the media files.
 +The first one lets Apache find the uploaded files in the directory writable by
 +Apache, which we created above. ​ The second allows the admin site to be displayed
 +with all its images and formatting:
 +<​code>​
 +ln -s /​var/​local/​apache_writable/​oclug_uploaded/​ $HOME/​oclug_site/​uploaded
 +ln -s `python -c'​import django, os; print os.path.dirname(django.__file__)'​`/​contrib/​admin/​media/​ \
 +$HOME/​oclug_site/​admin
 +</​code>​
 +
 +
 +====== Apache Configuration ======
 +
 +General apache configuration is covered in
 +[[https://​docs.djangoproject.com/​en/​dev/​howto/​deployment/​wsgi/​|"​How to deploy with WSGI"​]].
 +
 +If your apache is configured to use virtual hosts with a `NameVirtualHost *`
 +directive then your configuration for the
 +OCLUG Django site would look something like:
 +<​code>​
 +<​VirtualHost *>
 +    WSGIScriptAlias / /​home/​(MY-USER-NAME)/​oclug_site/​oclug_django_site/​apache/​oclug.conf
 +    Alias /images/ /​home/​(MY-USER-NAME)/​oclug_site/​oclug_django_site/​docroot/​images/​
 +    Alias /media/ /​home/​(MY-USER-NAME)/​oclug_site/​oclug_django_site/​docroot/​media/​
 +    Alias favicon.ico /​home/​(MY-USER-NAME)/​oclug_site/​oclug_django_site/​docroot/​favicon.ico
 +</​VirtualHost>​
 +</​code>​
 +
 +
 +The `/images/`, `/media/` and `/​favicon.ico` location blocks allow images and files to be served by Apache.
 +All other URLs are handled by the Django site.
 +
 +Restart apache and browse to `http://​localhost/​` to see if everything worked.  ​
 +You can browse to `http://​localhost/​admin/​` to use the site administration interface
 +with the account created above.
 +
 +====== Making Changes ======
 +
 +You can make changes to the files in the `oclug_django_site` directory and restart
 +Apache to test your changes. ​ When you are happy with you change you can post the
 +patch containing your changes to the oclug-www mailing list.  To create a patch use
 +this command from the `oclug_django_site` directory:
 +<​code>​
 +svn diff > my_changes.patch
 +</​code>​
 +
 +
 +Your patch will be reviewed on the mailing list by the web site maintainers.
 +
 +Changes made through the administration page on the web site exist in your local
 +copy of the database and can't be moved to the OCLUG site as a patch. ​ If you
 +want to suggest that sort of change, just post your request to the oclug-www mailing
 +list.
 +
 +====== Updating Your Copy ======
 +
 +You can use `svn update` to update your `oclug_django_site` directory.
 +
 +To update your `site_data` and reset your local copy of the database, use these
 +commands:
 +<​code>​
 +cd oclug_site/​site_data
 +svn update
 +sudo cp -r $HOME/​oclug_site/​site_data/​uploaded/​* /​var/​local/​apache_writable/​oclug_uploaded/​
 +cd ../​oclug_django_site
 +sudo python manage.py loaddata ../​site_data/​db.xml
 +</​code>​
 +
  
remotedjangositedevelopment.txt ยท Last modified: 2015/06/09 15:23 (external edit)