weatherbox:dashboard:start

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
weatherbox:dashboard:start [2017/05/01 07:28]
tbyers
weatherbox:dashboard:start [2021/09/19 21:59] (current)
Line 4: Line 4:
 **Dashboard Repository**:​ **Dashboard Repository**:​
   * [[https://​github.com/​scel-hawaii/​dashboard]]   * [[https://​github.com/​scel-hawaii/​dashboard]]
 +
 ---- ----
  
Line 36: Line 37:
 ---- ----
 ===== Dashboard Testing/​Development ===== ===== Dashboard Testing/​Development =====
-**Testing ​Dashboard ​with Database Connection** +==== Working on Dashboard ​Development WITHOUT ​Database Connection ​==== 
-  ​* Instructions ​for testing ​the Dashboard on a VM with database+  - Install Python 
 +  - Install pip 
 +  - Clone git repository at http://​github.com/​scel-hawaii/​dashboard 
 +  - pip install plotly 
 +  - pip install numpy 
 +  - pip install django 
 +  - Verify dashboard is working by running the following command on master branch: python manage.py runserver 
 +  - On web browser go to 127.0.0.1:​8000 to view the dashboard 
 +  - If you don't see it or get an error, something went wrong 
 +  * **You can also use a virtualenvironment for the Python packages if you wish** 
 +==== Working on Dashboard Development WITH Database Connection ==== 
 +  ​- Launch a virtual machine of your choice (I chose Ubuntu on VirtualBox) 
 +  - Follow the instructions ​for '​Working on Dashboard Development WITHOUT Database Connection'​ on your virtual machine 
 +  - Outside of the dashboard project directory, clone the git repository at http://​github.com/​scel-hawaii/​control_tower 
 +  - Run control_tower/​sample_data/​setup_sample_tables.sh to setup database and tables with sample weatherbox data 
 +  - Switch to psql branch of dashboard (in Dashboard ​project enter command git checkout psql) 
 +  - Run dashboard with following command: python manage.py runserver 
 +  - Should generate graphs with database data instead of csv 
 + 
 +---- 
 +===== Dashboard Deployment ===== 
 +====Deploying the Dashboard on Server==== 
 +**Follow the following steps to for deploying the dashboard ​on a server** 
 +    - Install and Configure VirtualEnv and VirtualEnvWrapper 
 +      - sudo apt-get install python-pip (skip this if pip already installed) 
 +      - sudo pip install virtualenv virtualenvwrapper 
 +      - echo "​export WORKON_HOME=~/​Env"​ >> ~/.bashrc 
 +      - echo "​source /​usr/​local/​bin/​virtualenvwrapper.sh"​ >> ~/.bashrc 
 +      - source ~/.bashrc 
 +    - Setup Dashboard Django Project 
 +      - sudo apt-get install git (skip this if git already installed) 
 +      - cd ~ 
 +      - mkvirtualenv dashboard 
 +      - git clone http://​github.com/​scel-hawaii/​dashboard (provide credentials to access private dashboard repo)  
 +      - cd Dashboard/​Dashboard 
 +      - pip install django psycopg2 plotly numpy 
 +      - python manage.py collectstatic 
 +      - test django app working properly ​with: python manage.py runserver 127.0.0.1:​8080 
 +      - exit virtualenv with: deactivate 
 +    - Setup uWSGI Application Server 
 +      - sudo apt-get install python-dev 
 +      - sudo pip install uwsgi 
 +      - quickly test uWSGI with: uwsgi --http :8080 --home /​home/​**user**/​Env/​dashboard --chdir /​home/​**user**/​dashboard/​dashboard -w dashboard.wsgi (in the currently deployed dashboard, **user** is replaced with **control_tower**) 
 +      - sudo mkdir -p /​etc/​uwsgi/​sites 
 +      - cd /​etc/​uwsgi/​sites 
 +      - create file called dashboard.ini with your favorite editor (ex: vim) and insert the following contents: <​code>​[uwsgi] 
 +project = dashboard 
 +base = /​home/​**user** 
 + 
 +chdir = %(base)/​%(project)/​%(project) 
 +home = %(base)/​Env/​%(project) 
 +module = %(project).wsgi:​application 
 + 
 +master = true 
 +processes = 5 
 + 
 +socket = %(base)/​%(project)/​%(project)/​%(project).sock 
 +chmod-socket = 666 
 +vacuum = true</​code>​ 
 +       - create file at /​etc/​systemd/​system/​uwsgi.service with editor (ex: vi /​etc/​systemd/​system/​uwsgi.service) and insert the following contents: <​code>​[Unit] 
 +Description=uWSGI Emperor service 
 +After=syslog.target 
 + 
 +[Service] 
 +ExecStart=/​usr/​local/​bin/​uwsgi --emperor /​etc/​uwsgi/​sites 
 +Restart=always 
 +KillSignal=SIGQUIT 
 +Type=notify 
 +StandardError=syslog 
 +NotifyAccess=all 
 + 
 +[Install] 
 +WantedBy=multi-user.targetr.target</​code>​ 
 +       - sudo systemctl daemon-reload 
 +     - Configure Nginx 
 +       - create file at /​etc/​nginx/​sites-available/​dashboard with your favorite editor (ex: vi /​etc/​nginx/​sites-available/​dashboard) and insert the following contents:<​code>​server { 
 +    listen 80; 
 +    server_name dashboard.scel-hawaii.org www.dashboard.scel-hawaii.org;​ 
 + 
 +    location = /​favicon.ico { access_log off; log_not_found off; } 
 +    location /static/ { 
 +        root /​home/​**user**/​dashboard/​dashboard;​ 
 +    } 
 + 
 +    location / { 
 +        include ​        ​uwsgi_params;​ 
 +        uwsgi_pass ​     unix:/​home/​**user**/​dashboard/​dashboard/​dashboard.sock;​ 
 +    } 
 +}</​code>​ 
 +       - sudo ln -s /​etc/​nginx/​sites-available/​dashboard /​etc/​nginx/​sites-enabled 
 +       - Check syntax with: sudo service nginx configtest (if errors exist, fix before proceeding) 
 +       - sudo service nginx restart 
 +       - sudo systemctl start uwsgi 
 +       - To start uWSGI on reboot: sudo systemctl enable uwsgi 
 +    * Resources used: 
 +      * [[https://​www.digitalocean.com/​community/​tutorials/​how-to-serve-django-applications-with-uwsgi-and-nginx-on-ubuntu-14-04|How To Serve Django Applications with uWSGI and Nginx on Ubuntu]] 
 +      * [[https://​serverfault.com/​questions/​775965/​wiring-uwsgi-to-work-with-django-and-nginx-on-ubuntu-16-04|Wiring uWSGI to work with Django and nginx on Ubuntu 16.04]] 
 + 
  
 ---- ----
Line 44: Line 143:
     * Utilize separate process to handle plot generation     * Utilize separate process to handle plot generation
     * Load the plots with HTTP Request to specific url     * Load the plots with HTTP Request to specific url
 +
 ---- ----
  • weatherbox/dashboard/start.1493623709.txt.gz
  • Last modified: 2021/09/19 21:59
  • (external edit)