Epilis version 1 at a glance
Implementation of version 1 and how Epilis is running.
Epilis version 1 implementation was made as an example of what epilis.gr's content wants to inspire.
The basic principles was:
...and all of these at lowest cost possible.
The result is more like a hosting platform for an unlimited number of web sites managed by their owners.
We relied on the excellent djangoCMS software writen in python/django framework and was easy for us to support and maintain. Users (using djangoCMS) can easily create their content from a clear interface that is functional not only from a pc but from portable devices too. The CMS is using custom "plugins" to pin every kind of content inside an available CMS "page". So we wrote our django applications in a "model - view - template" architecture using django ORM for the model, simple python for the views and minimum inherited templates for the content rendering. All this is basicaly a djangoCMS plugin that we can use and re-use inside a djangoCMS page. The environment is open source and has a number of ready to use plugins supported by a large community. It also supports multilingual content.
We used ubuntu 14.04 LTS for the operating system running as instance on Amazon's cloud. We tried to to use only the necessary of Amazon's services in order to be as portable as possible. The basic package installation and configuration was done manually:
- python 3.4 virtual environment [django 1.8 - djangoCMS 3.2 - celery - uwsgi]
- postgre sql
- redis (for celery's message broker)
The following repeatable operations was witten as ansible scripts:
- Add a new site (we are describing this below)
- Renew letsencrypt certificates
- Application checkout from server to local development environment
- Updated version deployment to the server (with all the dependencies)
- Database backup
The most interesting from the above is of course how we add automaticaly a new virtual host. The script is following the tasks:
- amazon's dns configuration (Route 53)
- nginx configuration (add a virtual host)
- django configuration (settings.py, wsgi.py)
- djangoCMS configuration (add a new site)
- new templates upload with all the static files (optional)
After all these we have our new web site in a matter of seconds leaving us with some optional steps -for example- user management, certificate generation if we want https, elasticsearch index creation etc.
There is also an ansible script for development purpose that is using Amazon's api to create a public test environent following the tasks:
- Create an image from the production server
- Launch a new instance with the image just created
- Create the necessary Amazon security groups
- Configure the application to play in the new instance (hostname, etc.)
epilis.gr platform design
We did not make any compromises regarding to what our designer considered beautiful. However we ended up with only three html templates all in twitter's bootstrap 3 framework for responsiveness:
- Base template (contains Navigation bar, social section and footer)
- Homepage template (inheriting base template)
- Secondary page (inheriting base template)
All other artistic creations were done with the CMS application so we stayed minimal in this area too (there will be a post dedicated to epilis.gr graphical design soon).
- Posted by Kostas Koutsogiannopoulos · March 7, 2016