[ckan-dev] Issues with Deploying Source Install on Vagrant VM

Jason Tan jason.tan at ersa.edu.au
Fri Mar 14 02:21:29 UTC 2014


On 13/03/2014 6:52 AM, "Sean Baskin" <seanbaskin at gmail.com> wrote:
Upon disabling the default Apache site and reloading Apache + Nginx, I
visit the root domain and am presented with a HTTP 404 response stating
"The requested URL / was not found on this server".
>

Often,(but not always) there is a notation st the notion of the error page
indicating if the page is coming from apache (or not).

> From my understanding, the Apache config file is redirecting HTTP
requests to my WSGI application (CKAN). It would appear that CKAN is not
actually running. I understand this problem has more to do with Apache +
Nginx + WSGI and less to do with Vagrant + Ansible, but I'm including the
relevant portions in this email. I was under the impression that serving
the site with paster is not best practice, so there is something here I'm
missing. Any help would be greatly appreciated!

My understanding is that wsgi executes within apache.
I don't believe there is a separate process.

That being the case a look st the apache and nginx logs is probably worth a
look.

Hopefully it will identify both  which piece of software is returning the
404 and possibly some further hints as to why.

More concrete suggestion is the name opendata.chattlibrary.dev set up in
the hosts file or end of the vm.

Regards
Jason

> ---
>
> [/etc/ckan/default/apache.wsgi]
>
> import os
> activate_this = os.path.join('/usr/lib/ckan/default/bin/activate_this.py')
> execfile(activate_this, dict(__file__=activate_this))
>
> from paste.deploy import loadapp
> config_filepath =
os.path.join(os.path.dirname(os.path.abspath(__file__)), 'production.ini')
> from paste.script.util.logging_config import fileConfig
> fileConfig(config_filepath)
> application = loadapp('config:%s' % config_filepath)
>
> ---
>
> [/etc/apache2/sites-available/ckan_default]
>
> <VirtualHost 0.0.0.0:8080>
>     ServerName opendata.chattlibrary.dev
>     ServerAlias www.opendata.chattlibrary.dev
>     WSGIScriptAlias / /etc/ckan/default/apache.wsgi
>
>     # Pass authorization info on (needed for rest api).
>     WSGIPassAuthorization On
>
>     # Deploy as a daemon (avoids conflicts between CKAN instances).
>     WSGIDaemonProcess ckan_default display-name=ckan_default processes=2
threads=15
>
>     WSGIProcessGroup ckan_default
>
>     ErrorLog /var/log/apache2/ckan_default.error.log
>     CustomLog /var/log/apache2/ckan_default.custom.log combined
> </VirtualHost>
>
> ---
>
> [/etc/nginx/sites-available/ckan_default]
>
> proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache:30m
max_size=250m;
> proxy_temp_path /tmp/nginx_proxy 1 2;
>
> server {
>     client_max_body_size 100M;
>     location / {
>         proxy_pass http://127.0.0.1:8080/;
>         proxy_set_header Host $host;
>         proxy_cache cache;
>         proxy_cache_bypass $cookie_auth_tkt;
>         proxy_no_cache $cookie_auth_tkt;
>         proxy_cache_valid 30m;
>         proxy_cache_key $host$scheme$proxy_host$request_uri;
>         # In emergency comment out line to force caching
>         # proxy_ignore_headers X-Accel-Expires Expires Cache-Control;
>     }
>
> }
>
> ---
>
> [site.yml] This is my main playbook. It's ugly, but it gets the job done
for the moment.
>
> ---
> - hosts: all
>   user: vagrant
>   sudo: true
>
>   tasks:
>
>   - name: General | Copy SSH Keypair
>     copy: src=/home/sean/.ssh/{{ item }} dest=/home/vagrant/.ssh/{{ item
 }} owner=vagrant
>     with_items:
>     - id_rsa_vagrant
>     - id_rsa_vagrant.pub
>
>   - name: General | Install Required Packages
>     apt: pkg={{ item }} state=present update_cache=yes
>     with_items:
>     - apache2
>     - git-core
>     - libapache2-mod-wsgi
>     - libpq-dev
>     - nginx
>     - openjdk-6-jdk
>     - postgresql
>     - python-dev
>     - python-pip
>     - python-psycopg2
>     - python-virtualenv
>     - solr-jetty
>
>   - name: CKAN | Install CKAN source to virtualenv
>     pip: name='git+https://github.com/ckan/ckan.git@ckan-2.2#egg=ckan'
virtualenv=/usr/lib/ckan/default virtualenv_site_packages=no
>
>   - name: CKAN | Install Python Requiements
>     pip: requirements=/usr/lib/ckan/default/src/ckan/requirements.txt
virtualenv=/usr/lib/ckan/default virtualenv_site_packages=no
>
>   - name: PostgreSQL | Start DB Cluster
>     command: /etc/init.d/postgresql start
>
>   - name: CKAN | Create DB
>     sudo_user: postgres
>     postgresql_db: name=ckan_default
>                    encoding='UTF-8'
>                    lc_collate='en_US.UTF-8'
>                    lc_ctype='en_US.UTF-8'
>                    template='template0'
>                    login_password=pass
>
>   - name: CKAN | Create Database User
>     sudo_user: postgres
>     postgresql_user: db=ckan_default user=ckan_default password=pass
>
>   - name: CKAN | Create site directory
>     file: path=/etc/ckan/default state=directory owner=vagrant
>
>   - name: CKAN | Create CKAN config file
>     command: /usr/lib/ckan/default/bin/paster make-config ckan
/etc/ckan/default/development.ini
>
>   - name: CKAN | Copy Jetty configuration to remote host
>     copy:
src=/home/sean/projects/github/open-data-portal/provisioning/roles/common/files/jetty
dest=/etc/default/jetty
>
>   - name: CKAN | Start Jetty Server
>     service: name=jetty state=started
>
>   - name: CKAN | Backup Solr schema
>     command: mv /etc/solr/conf/schema.xml /etc/solr/conf/schema.xml.bak
>
>   # Update to use file module
>   - name: CKAN | Replace Solr schema.xml with symlink to CKAN schema file
>     command: ln -s
/usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml
/etc/solr/conf/schema.xml
>
>   - name: CKAN | Restart Jetty Server
>     service: name=jetty state=restarted
>
>   - name: CKAN | Initialize CKAN database
>     command: chdir=/etc/ckan/default /usr/lib/ckan/default/bin/paster
--plugin=ckan db init
>
>   # Update to use file module
>   - name: CKAN | Link to who.ini
>     command: ln -s /usr/lib/ckan/default/src/ckan/who.ini
/etc/ckan/default/who.ini
>
>   - name: CKAN | Create production.ini
>     command: cp /etc/ckan/default/development.ini
/etc/ckan/default/production.ini
>
>   - name: CKAN | Copy Apache WSGI file
>     copy:
src=/home/sean/projects/github/open-data-portal/provisioning/roles/common/files/apache.wsgi
dest=/etc/ckan/default/apache.wsgi
>
>   - name: CKAN | Copy Apache configuration file
>     copy:
src=/home/sean/projects/github/open-data-portal/provisioning/roles/common/files/ckan_default
dest=/etc/apache2/sites-available/ckan_default
>
>   - name: CKAN | Copy Nginx configuration file
>     copy:
src=/home/sean/projects/github/open-data-portal/provisioning/roles/common/files/ckan_default_nginx
dest=/etc/nginx/sites-available/ckan_default
>
>   - name: CKAN | Enable CKAN site
>     command: a2ensite ckan_default
>
>   - name: CKAN | Enable CKAN
>     command: ln -s /etc/nginx/sites-available/ckan_default
/etc/nginx/sites-enabled/ckan_default
>
>   - name: CKAN | Reload Apache2
>     service: name=apache2 state=reloaded
>
>   - name: CKAN | Reload Nginx
>     service: name=nginx state=reloaded
>
>   # This is a long running process and only for development purposes
>   # - name: CKAN | Serve CKAN
>   #   command: /usr/lib/ckan/default/bin/paster serve
/etc/ckan/default/production.ini
>
>
> _______________________________________________
> ckan-dev mailing list
> ckan-dev at lists.okfn.org
> https://lists.okfn.org/mailman/listinfo/ckan-dev
> Unsubscribe: https://lists.okfn.org/mailman/options/ckan-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/ckan-dev/attachments/20140314/b1dcade5/attachment-0003.html>


More information about the ckan-dev mailing list