Graham Dumpleton
grahamd at dscpl.com.au
Fri Jan 19 16:45:17 EST 2007
Followups to the mailing list please. On 19/01/2007, at 9:55 PM, Thiago Comicio wrote: > On 1/18/07, Graham Dumpleton <grahamd at dscpl.com.au> wrote: >> What version of mod_python are you using, is it an older version? At >> least upgrade to mod_python 3.2.10 if you haven't already. There are >> certainly bugs in mod_python 3.1.X which may cause this. > > I'm using the version 3.2.8-3.1 fo Fedora 6. I've tried to run this > boot script with mod_python 3.2.10 without success. > >> Also, what >> Apache configuration do you use for enabling mod_python for that >> part of the URL namespace? Do you use PythonPath or PythonImport >> directives? > > I didn't understand very well your question, but the PYTHONPATH is > used to run ZODB, which is part of ZOPE (zope-2.9.6-1.fc6). > My Apache configuration to access the directory with the python > scripts is: > > <Directory /var/www/html/indico> > AddHandler python-program .py > PythonHandler mod_python.publisher > PythonDebug On > </Directory> The PYTHONPATH setting if required has to be duplicated with equivalent in mod_python. Ie., add: PythonPath "sys.path+['/usr/lib/zope/lib/python']" Read the documentation for information about the PythonPath directive. > When I boot the computer it doesn't work, but when I restart Apache, > without changing any configuration, it works. It works when you do a restart as it is probably inheriting PYTHONPATH from your user account. The Apache startup script will not have this on a reboot, so you need to set it up in Apache configuration file. > I made some tests. > When I initialize ZODB at the startup and start Apache after logging > in, it works. Or, after logging in, I initialize ZODB and Apache, it > works too. The problem is when I initialize both at the startup, first > ZODB and then Apache. > > Thanks, > > Thiago Comicio > >> >> Graham >> >> Thiago Comicio wrote .. >> > On 1/17/07, Graham Dumpleton <grahamd at dscpl.com.au> wrote: >> > > Thiago Comicio wrote .. >> > > > Hi, >> > > > >> > > > I'm trying to install a program that needs mod_python and >> ZODB. The >> > > > program is not running, so I tried to connect to the >> database through >> > > > this script: >> > > > >> > > > from ZODB import FileStorage, DB >> > > > >> > > > def index(req, **params): >> > > > storage = FileStorage.FileStorage('mydatabase.fs') >> > > > db = DB(storage) >> > > > connection = db.open() >> > > > root = connection.root() >> > > > return TestPage().getHTML() >> > > > >> > > > And I received the error below. >> > > > Does anybody know how to fix it? >> > > >> > > A couple of things to be aware of. >> > > >> > > 1. The Apache web server generally runs as a special user and >> thus that >> > user >> > > must have write access to the directory where you are wanting >> to create >> > the >> > > database. >> > > >> > > 2. The current working directory is normally '/' for the >> Apache processes >> > and >> > > thus if you do not specify an absolute path to where you want >> to store >> > the >> > > database, it will try and store it in '/' where you are >> unlikely to have >> > permissions >> > > to write. You should not change the working directory as if >> every handler >> > did >> > > that they would all interfere with each other. >> > > >> > > Graham >> > >> > >> > Thanks Graham, this solved my initial problem, now I have another. >> > >> > I created a simple script to run when I boot my system. >> > >> > #main part of the script >> > PYTHONPATH=/usr/lib/zope/lib/python >> > >> > zope=$PYTHONPATH/ZEO/runzeo.py >> > python=/usr/bin/python >> > zopeconf=$PYTHONPATH/ZEO/zeo.config >> > >> > start() { >> > echo -n $"Starting $prog1: " >> > $python $zope -C $zopeconf & >> > } >> > >> > I put a symbolic link at /etc/rc5.d with the name S50myscript and a >> > symbolink link to http like S85http. >> > When I try to access a page that needs ZEO I receive the error >> below, >> > that disappears when I restart apache. >> > How can I fix this new problem? >> > >> > Thanks, >> > >> > Thiago >> > >> > ---------------------------------------- >> > >> > Mod_python error: "PythonHandler mod_python.publisher" >> > >> > Traceback (most recent call last): >> > >> > File "/usr/lib/python2.4/site-packages/mod_python/apache.py", >> line >> > 299, in HandlerDispatch >> > result = object(req) >> > >> > File "/usr/lib/python2.4/site-packages/mod_python/publisher.py", >> > line 204, in handler >> > module = page_cache[req] >> > >> > File "/usr/lib/python2.4/site-packages/mod_python/cache.py", line >> > 82, in __getitem__ >> > return self._checkitem(name)[2] >> > >> > File "/usr/lib/python2.4/site-packages/mod_python/cache.py", line >> > 124, in _checkitem >> > value = self.build(key, name, opened, entry) >> > >> > File "/usr/lib/python2.4/site-packages/mod_python/publisher.py", >> > line 77, in build >> > return ModuleCache.build(self, key, req, opened, entry) >> > >> > File "/usr/lib/python2.4/site-packages/mod_python/cache.py", line >> > 371, in build >> > exec opened in module.__dict__ >> > >> > File "/var/www/html/indico/index.py", line 1, in ? >> > import MaKaC.webinterface.rh.welcome as welcome >> > >> > File "/usr/lib/python2.4/site-packages/MaKaC/webinterface/rh/ >> welcome.py", >> > line 1, in ? >> > import MaKaC.webinterface.rh.base as base >> > >> > File "/usr/lib/python2.4/site-packages/MaKaC/webinterface/rh/ >> base.py", >> > line 13, in ? >> > from ZODB.POSException import ConflictError >> > >> > ImportError: No module named ZODB.POSException >> > _______________________________________________ >> > Mod_python mailing list >> > Mod_python at modpython.org >> > http://mailman.modpython.org/mailman/listinfo/mod_python >>
|