Search code examples
apachemod-wsgirhelckan

CKAN distribution not found error while trying to serve CKAN from apache


I am trying to configure datapusher for ckan 2.7 and as a prerequisite i have installed datastore and apache http server.

apache httpd version: Apache/2.4.25 (Unix) mod_wsgi package installed 4.5.15 the permissions for the conf files are as specified in the ckan documentation http://docs.ckan.org/en/latest/maintaining/installing/deployment.html

contents of ckan_default.conf are

WSGIScriptAlias / /etc/ckan/default/apache.wsgi

WSGIPassAuthorization On

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

contents of apache.wsgi file:

import os
ckan_home = os.environ.get('CKAN_HOME', '/usr/lib/ckan/default')

activate_this = os.path.join(ckan_home, '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)

when i start the apache httpd server I see the following error in logs.

[Tue May 02 17:39:23.953718 2017] [wsgi:error] [pid 24744:tid 140135528146688] mod_wsgi (pid=24744): Target WSGI script '/etc/ckan/default/apache.wsgi' cannot be loaded as Python module.

[Tue May 02 17:39:23.953836 2017] [wsgi:error] [pid 24744:tid 140135528146688]  mod_wsgi (pid=24744): Exception occurred processing WSGI script '/etc/ckan/default/apache.wsgi'.

[Tue May 02 17:39:23.953875 2017] [wsgi:error] [pid 24744:tid 140135528146688]  Traceback (most recent call last):

[Tue May 02 17:39:23.953912 2017] [wsgi:error] [pid 24744:tid 140135528146688] File "/etc/ckan/default/apache.wsgi", line 10, in <module>
[Tue May 02 17:39:23.954043 2017] [wsgi:error] [pid 24744:tid 140135528146688] application = loadapp('config:%s' % config_filepath)

[Tue May 02 17:39:23.954067 2017] [wsgi:error] [pid 24744:tid 140135528146688] File "/usr/lib/ckan/default/lib/python2.7/site-packages/paste/deploy/loadwsgi.py", line 247, in loadapp

[Tue May 02 17:39:23.955927 2017] [wsgi:error] [pid 24744:tid 140135528146688] DistributionNotFound: The 'ckan' distribution was not found and is required by the application

Could anyone please help me resolve this issue? Thanks in advance

PS : CKAN site loads fine when using paster serve


Solution

  • Thank you Graham Dumpleton.The link helped. The problem was due to different versions of pythons installed and virtual environment paths. I added and set the path of appropriate virtual environment.

    step 1) activate the virtual environment

    step 2) execute below command to know the path of virtual env

        python -c 'import sys; print(sys.prefix)'
    

    step 3) add the below line in ckan_default.conf file (before virtual hosts)

        WSGIPythonHome <path you got in step 2>
    

    step 4 ) restart apache