Install Apache WSGI - jordy33/turbogears_tutorial GitHub Wiki

How to Install Apache WSGI with Turbo Gears

  1. Install Apache2
    https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-16-04

  2. In the server install mod WSGI

    Install APX sudo apt install apache2-dev

    To find new releases: https://github.com/GrahamDumpleton/mod_wsgi/releases

    sudo apt-get install libtool    
    cd /tmp    
    wget https://github.com/GrahamDumpleton/mod_wsgi/archive/4.5.15.tar.gz    
    tar xvzf 4.5.15.tar.gz    
    cd mod_wsgi-4.5.15/
    ./configure    
    make    
    sudo cp /tmp/mod_wsgi-4.5.15/src/server/.libs/mod_wsgi.so /usr/lib/apache2/modules/.   
    
  3. Create a virtualenvironment with the specific TurboGears version your application depends on installed

    virtualenv /var/tg2env
    /var/tg2env/bin/pip install  tg.devtools
    
  4. Activate the virtualenvironment

    source /var/tg2env/bin/activate
    (tg2env)$ #virtualenv now activated
    
  5. Install your TurboGears application.

    cd /var/www/gpscontrol
    python setup.py develop
    
  6. Within the application director, create a script named app.wsgi. Give it these contents:

    import os
    os.environ['PYTHON_EGG_CACHE'] = '/home/jorge/.python-eggs'
    APP_CONFIG = "/var/www/gpscontrol/production.ini"
    import logging.config
    logging.config.fileConfig(APP_CONFIG)
    from paste.deploy import loadapp
    application = loadapp('config:%s' % APP_CONFIG)
    
  7. Change permisions

    sudo usermod -g www-data jorge
    sudo mkdir  /home/jorge/.python-eggs/
    sudo chmod g-wx,o-wx ~/.python-eggs
    sudo chown www-data:www-data /home/jorge/.python-eggs/
    
    sudo chown -R www-data:www-data /var/www
    sudo chmod go-rwx /var/www
    sudo chmod go+x /var/www
    sudo chgrp -R www-data /var/www
    sudo chmod -R go-rwx /var/www
    sudo chmod -R g+rx /var/www
    sudo chmod -R g+rwx /var/www
    
  8. Edit your Apache configuration and add some stuff.

    vim /etc/hosts
    

    Add The following line 138.68.26.230 venus.gpscontrol.com.mx

    cd /etc/apache2
    vim apache2.conf
    

    Add the Following line: ServerName venus.gpscontrol.com.mx

    cd /etc/apache2/sites-enabled
    rm *    
    sudo vim venus.gpscontrol.com.mx.conf
    

    Insert the following lines:

     <VirtualHost *:80>
     ServerName venus.gpscontrol.com.mx
    
     WSGIProcessGroup venus.gpscontrol.com.mx
     WSGIDaemonProcess venus.gpscontrol.com.mx user=www-data group=www-data threads=4 python-path=/var/tg2env/lib/python2.7/site-packages
     WSGIScriptAlias / /var/www/gpscontrol/app.wsgi
     #Serve static files directly without TurboGears
     Alias /images /var/www/gpscontrol/gpscontrol/public/images
     Alias /css /var/www/gpscontrol/gpscontrol/public/css
     Alias /js /var/www/gpscontrol/gpscontrol/public/js
    
     ErrorLog ${APACHE_LOG_DIR}/error.log
     CustomLog ${APACHE_LOG_DIR}/access.log combined
     </VirtualHost>
    
  9. Start the Service

    sudo a2enmod wsgi  
    sudo service apache2 restart
    
  10. Give access to users to /var/log/apache2

    adduser maria
    sudo usermod -aG sudo maria
    sudo usermod -aG adm maria