Welcome to DjConChart’s documentation!¶
DjConChart is a Django statistic process control (SPC) server for small and middlesized companys.It allows you to create interactive control charts for the browser and to manage your measurement data. In the next releases an easy to use report generation for each measurement and for the process will be added. DjConChart is easy to integrate into your measurement software to automated the measurement analysis.
Features¶
- Storing of measurement data in a database
- Easy, django like filtering of the measurement data
- Creation of interactive control chart
- Calculation of characteristic values for the control chart out of raw data
- Version control of the calculation rules for the characteristic data
- Dashboard show always the latest measurements
- Geo tagging of measurment values
Following Features¶
- Cross language API for importing measurement data
- Advanced reporting possibilities
- Cookbooks
- And many more
Overview¶
Getting started¶
First download the source code and unzip to your test dir
- Install and create a virual enviroment with the following commands
$ pip install --upgrade virtualenv $ virtualenv env $ source env/bin/activate
- Create the the database and admin user
$ python manage.py makemigrations $ python manage.py migrate $ python manage.py createsuperuser
- Create test data
$ python manage.py createtestdata
- Start the django development server
$ python manage.py runserver
Goto Dashboard and login as one of the following users
- Admin user which you have created with createsuperuser
- Viewer (password: test) a readonly user
- Examiner (password: test) a user which is allowed to save new raw datas
- Manager (password: test) is allowed to add and change all objects
- Administrator (password: test) is allowed to add, change and delete all objects
Attention
The django development server is NOT for productive use. Use it only to DjConChart. Have a look into django documentation for how to deploy DjConChart to a real server.
Deployment¶
To use DjConChart in production you have to deploy it on a server. You can use every WebServer and database which Django works with. As an Example I used the combination of nginx and Postgresql on an ubuntu linux server. But I should also work an every other linux distribution as well as on MacOs or Windows. For a deployment tutorial for MacOs or Windows I would be really thankful.
Installing requirements¶
First all requiered software packages have to be install. On ubuntu I used apt-get to install none python software and pip to install python software. Of course pip is avaiable on all plattform but for installing the none python software use the package manager of your system. Replace the version of the postgresql-server-dev-X.Y to the one which is avaiable on your system.
$ sudo apt-get install python-dev python-pip nginx postgresql postgresql-server-dev-X.Y
Configure database¶
After installing postgresql we have to create a database and a datebase user for DjConchart. Therefore execute the following command in the terminal. Replace DJCONCHART_USER with the your user which runs DjConChart.
$ sudo su - postgres $ psql $ CREATE DATABASE djconchart; $ CREATE USER djconchart_user WITH PASSWORD 'password'; $ GRANT ALL PRIVILEGES ON DATABASE djconchart TO djconchart_user; $ \q $ exit
Installing DjConChart¶
The easiest way to install the latest version of DjConChart is to clone the github repository. Therefore you need to install git.
$ sudo apt-get install git $ git clone https://github.com/RedBeardCode/DjConChart.git $ cd DjConChart/
You also can download a zip archive of the latest version from the github page and unpack it in your working directory. After you got the source code of DjConChart you have to install the required python packages with pip.
$ sudo pip install -r requirements.txt
Add the IP address of your server to the ALLOWED_HOSTS in the djconchart/settings.py file.
ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'SERVER_IP']
Set the some environment variables to define your instance.
SECRET_KEY="YourSecurityKey" DB_USER="Username of your db user" DB_PASS="Password of your db user" DB_NAME="Database name" DB_SERVICE="Hostname of the db" DB_PORT="DB Port"
If the database is configured correct you can create the database tables for the project with the following commands.
python manage.py makemigrations control_chart python manage.py migrate
Configure webserver¶
To inform all server components about the url of your server we simply set the hostname of the machine to the used url.
sudo hostnamectl set-hostname yourdjconchart.com
Uwsgi provides the DjConChart to nginx over a socket and writes a log file in /var/log/uwsgi/. To make this possible we have to set some user permissions.
sudo adduser www-data DJCONCHART_USER sudo mkdir /var/log/uwsgi sudo chown DJCONCHART_USER /var/log/uwsgi/
Nginx is configured over the /etc/nginx/site-avaible/djconchart config file. Replace PATH_TO_DJCONCHART with your working directory.
server { listen 80; server_name $hostname; location /static/ { root PATH_TO_DJCONCHART; } location / { include uwsgi_params; #Replace with your DjConChart directory uwsgi_pass unix:PATH_TO_DJCONCHART/djcon_chart.sock; } location /bokeh/ { proxy_pass http://127.0.0.1:5006; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $server_name/bokeh; proxy_buffering off; rewrite /bokeh/(.*) /$1 break; } location /ws { proxy_pass http://127.0.0.1:5006; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; } location /bokeh/static/ { #Location of the static files of the bokeh server. This can differ on your system alias /usr/local/lib/python2.7/dist-packages/bokeh/server/static/; } }
And to enable the site you have to set the following symbolic link.
sudo ln -s /etc/nginx/sites-avaible/djconchart /etc/nginx/sites-enabled/default
Configure uwsgi with uwsgi.ini file in your DjConChart directory. Replace PATH_TO_DJCONCHART with your working directory.
[uwsgi] chdir=PATH_TO_DJCONCHART module=djcon_chart.wsgi:application master=True pidfile=/tmp/project-master.pid vacuum=True max-requests=5000 daemonize=/var/log/uwsgi/djcon_chart.log socket=PATH_TO_DJCONCHART/djcon_chart.sock chmod-socket = 664 uid=www-data gid=www-data
Now you can start uwsgi.
$ uwsgi --ini uwsgi.ini
~