> You should
> be able to add this to options_std.py;  I think you should be able,
> alternatively, to do this
> in your parameters*.py file
> (seehttp://www.web2py.com/book/default/section/4/1?search=environ).
>
> that is, put these lines in either:
>
> import os
> os.environ[PYTHON_EGG_CACHE]=....

I tried this in both files but no luck- It fails the same as if the
variable was never assigned,
both through apache and on the command line.

> >   [Errno 13] Permission denied: '/.python-eggs'
>
> Note:  This is root directory (!) ---  probably the "home" directory
> for the user in question

I'm very green with respect to securing servers, though I know I
shouldn't be runnning things from root.  Apache runs as its own user,
but I'm assuming I then have to set up another user distinct from
root?  (I know this is beyond the scope of this forum- maybe you could
point me to some good resources?)


On Jun 21, 3:33 pm, Yarko Tymciurak <[email protected]>
wrote:
> On Jun 21, 2:01 pm, Yarin <[email protected]> wrote:
>
> > Got it!
> > Stripped the try-catch and let the import fail...
>
> > TICKET:
> > ExtractionError: Can't extract file(s) to egg cache
>
> > The following error occurred while trying to extract file(s) to the
> > Python egg
> > cache:
>
> >   [Errno 13] Permission denied: '/.python-eggs'
>
> Note:  This is root directory (!) ---  probably the "home" directory
> for the user in question
>
>
>
> > The Python egg cache directory is currently set to:
>
> >   /.python-eggs
>
> > Perhaps your account does not have write access to this directory?
> > You can
> > change the cache directory by setting the PYTHON_EGG_CACHE environment
> > variable to point to an accessible directory.
>
> Yes - what you want to do; google on PYTHON_EGG_CACHE and wsgi, for
> example.
> This is a place where python can (if needed) _temporarily_ extract
> eggs.
>
>
>
> > END TICKET
>
> > Solution:
>
> > $ mkdir /var/www/web2py/python-eggs
> > $ sudo chown -R apache:apache python-eggs
>
> It doesn't matter so much you owns this, as long as it's writable and
> readable by your process.
> It could just as logically be in /tmp directory (that way it would
> clean up at system reboot too...)
>
>
>
>
>
> > Then in web2py/gluon/tools.py:
>
> >    3285         try:
>
> > (Inserted)
> > import os
> > os.environ['PYTHON_EGG_CACHE'] = '/var/www/web2py/python-eggs'
>
> >    3286             import pyamf
> >    3287             import pyamf.remoting.gateway
> >    3288         except:
> >    3289             return "pyamf not installed or not in Python
>
> > and it works!
>
> > So my final questions to you is can you think of a more elegant,
> > permanent way of setting this up?  Is it bad practice to repeatedly
> > set environment vars in multi-threaded code?
>
> You probably want to do this at web2py start, for web2py.   You should
> be able to add this to options_std.py;  I think you should be able,
> alternatively, to do this
> in your parameters*.py file
> (seehttp://www.web2py.com/book/default/section/4/1?search=environ).
>
> that is, put these lines in either:
>
> import os
> os.environ[PYTHON_EGG_CACHE]=....
>
> - Yarko
>
> >  And it's probably not
> > wise to assign ownership of the eggs cache to the apache user, as I
> > assume it may be used for other things.  Thoughts?
>
> > On Jun 21, 2:29 pm, Yarko Tymciurak <[email protected]>
> > wrote:
>
> > > On Jun 21, 12:18 pm, Yarin <[email protected]> wrote:
>
> > > > @Yarko
>
> > > > > Try to compare these two:
> > > > > $ python -c 'import sys; print sys.path'
> > > > > and, from your web2py directory:
> > > > > $ python web2py.py -S welcome
> > > > > >>> import sys;  print sys.path
> > > > > Compare the two to see what's missing;
>
> > > > Results, in order:
>
> > > > [
> > > > '',
> > > > '/usr/lib/python2.5/site-packages/PyAMF-0.5.1-py2.5-linux-i686.egg',
> > > > '/usr/lib/python25.zip',
> > > > '/usr/lib/python2.5',
> > > > '/usr/lib/python2.5/plat-linux2',
> > > > '/usr/lib/python2.5/lib-tk',
> > > > '/usr/lib/python2.5/lib-dynload',
> > > > '/usr/lib/python2.5/site-packages',
> > > > '/usr/lib/python2.5/site-packages/gtk-2.0'
> > > > ]
>
> > > > [
> > > > '/var/www/web2py',
> > > > '/usr/lib/python2.5/site-packages/PyAMF-0.5.1-py2.5-linux-i686.egg',
> > > > '/usr/lib/python25.zip',
> > > > '/usr/lib/python2.5',
> > > > '/usr/lib/python2.5/plat-linux2',
> > > > '/usr/lib/python2.5/lib-tk',
> > > > '/usr/lib/python2.5/lib-dynload',
> > > > '/usr/lib/python2.5/site-packages',
> > > > '/usr/lib/python2.5/site-packages/gtk-2.0',
> > > > '../gluon',
> > > > '/var/www/web2py/site-packages'
> > > > ]
>
> > > > I don't see a problem here- do you?
>
> > > No - I do not see this showing the problem - your pyamf installation
> > > appears to be ok.
>
> > > You can do what Massimo suggested to get more detailed info.
>
> > > Also - fedora has a secure kernel which ...  I might suspect some
> > > things because of that.
> > > You might start by looking at the owner/group of your pyamf egg, and
> > > comparing what / who web2py is running (the simple test would be to
> > > run web2py as yourself - you've seen the path is the same;  see if
> > > your imports work from the web2py shell when you are running as
> > > "you" (instead of through apache, as some other process user/group).
>
> > > If the web2py command line import works, then you may have an issue
> > > with the user/group that web2py is running as under apache - or
> > > perhaps even fedora protecting what anything running from apache can
> > > access.
>
> > > After you have tried the import runing from your shell as you (if it
> > > works) you could try as sudo -u www-data (or whatever the web2py
> > > process is running under);  this will help you sort out if it is a
> > > user related constraint, or an apache process constraint that fedora
> > > is putting on you.
>
> > > You may also try what Massimo suggested;
>
> > > Let us know your progress.
>
> > > - Yarko
> > > Also, run
>
> > > > I've even run
>
> > > > $ chmod -R 777 /usr/lib/python2.5/site-packages/PyAMF-0.5.1-py2.5-
> > > > linux-i686.egg
>
> > > > to ensure it's not a permissions issue, but I'm getting the same
> > > > result...
>
> > > > On Jun 21, 12:45 pm, Yarko Tymciurak <[email protected]>
> > > > wrote:
>
> > > > > On Jun 21, 10:57 am, Yarin <[email protected]> wrote:
>
> > > > > > @mdipierro - Do you mean do I have multiple versions of Python on my
> > > > > > system?
>
> > > > > > $ ls usr/bin/ shows ->
> > > > > > ...
> > > > > > -rwxr-xr-x 1 root root         82 Jul 10  2008 pydoc
> > > > > > -rwxr-xr-x 1 root root       3572 Jul 10  2008 python
> > > > > > lrwxrwxrwx 1 root root         16 Nov 27  2009 python-config ->
> > > > > > python2.5-config
> > > > > > lrwxrwxrwx 1 root root          6 Nov 27  2009 python2 -> python
> > > > > > -rwxr-xr-x 1 root root       3572 Jul 10  2008 python2.5
> > > > > > -rwxr-xr-x 1 root root       1418 Jul 10  2008 python2.5-config
>
> > > > > > but all of these refer to version Python2.5.1
>
> > > > > > Moreover, I know that that error is thrown from 
> > > > > > web2py/gluon.tools.py
> > > > > >    3285         try:
> > > > > >    3286             import pyamf
> > > > > >    3287             import pyamf.remoting.gateway
> > > > > >    3288         except:
> > > > > >    3289             return "pyamf not installed or not in Python
> > > > > > sys.path"
>
> > > > > > but when I run from the command line...
>
> > > > > > $ python
>
> > > > > > >>>> import pyamf
> > > > > > >>>> import pyamf.remoting.gateway
>
> > > > > Try to compare these two:
>
> > > > > $ python -c 'import sys; print sys.path'
>
> > > > > and, from your web2py directory:
>
> > > > > $ python web2py.py -S welcome
>
> > > > > >>> import sys;  print sys.path
>
> > > > > Compare the two to see what's missing;
>
> > > > > You can also find where your pyamf was installed -
>
> > > > > If you are not seeing it somewhere like /usr/lib/python2.5/site-
> > > > > packages (use your sys.path as a guide to the correct path), then it
> > > > > is possible you made a local installation of pyamf --- if it appears
> > > > > in somewhere in your $HOME directory, then that is likely your problem
> > > > > - you installed it for yourself as a user, instead of site-wide.
> > > > > Since apache does not run as you, your HOME install of pyamf is not in
> > > > > the sys.path for web2py.
>
> > > > > Hope this is helpful.  Let us know what you find.
>
> > > > > > ...I get no errors
>
> > > > > > I'm stumped- Is this a permissions issue?  What else can I test?
>
> > > > > > My code:
>
> > > > > > rpc.py:
>
> > > > > > # coding: utf8
> > > > > > # try something like
> > > > > > def index(): return dict(message="hello from rpc.py")
>
> > > > > > from gluon.tools import Service
> > > > > > service = Service(globals())
>
> > > > > > def call():
> > > > > >     session.forget()
> > > > > >     return service()
>
> > > > > > @service.amfrpc3("mydomain")
> > > > > > def test():
> > > > > >     return "Test!!!"
>
> > > > > > Flex client code: (Doubt it's helpful as this seems like a server, 
> > > > > > not
> > > > > > client, issue)
>
> > > > > > <mx:RemoteObject
> > > > > >         id="amfService"
> > > > > >         endpoint="http://{myPublicIP}/pyamf_test/rpc/call/amfrpc3";
> > > > > >         destination="mydomain"
> > > > > >         showBusyCursor="true">
> > > > > >         <mx:method name="test"
> > > > > >                 result="resultHandler(event)" 
> > > > > > fault="faultHandler(event)"
> > > > > >                 />
> > > > > > </mx:RemoteObject>
>
> > > > > > And a side question:  What is the purpose of the domain field?  Can 
> > > > > > it
> > > > > > be anything?
>
> > > > > have no idea...
>
> > > > > > @Kuba - How am I supposed to reboot web2py when it's running off of
> > > > > > mod_wsgi?  I haven't figured that out yet- thought that since it was
> > > > > > tied in with Apache an Apache restart would reboot web2py too.
>
> > > > > Apache restart will do it;  depending on the mod_wsgi, there are
> > > > > simpler restarts of the wsgi thread associated with your web2py that
> > > > > do not require a restart of _all_ the sites your apache is running.
> > > > > You probably don't care about that at this point (but if you do, read
> > > > > up on mod_wsgi --- you touch a script to get the wsgi thread only to
> > > > > restart, thus restarting web2py).
>
> > > > > > However, I went so far as to reboot the whole system, so don't think
> > > > > > that's the problem.
>
> > > > > It's not.
>
> > > > > - Yarko
>
> > > > > > Thanks--
>
> > > > > > On Jun 21, 2:26 am, mdipierro <[email protected]> wrote:
>
> > > > > > > On Jun 20, 8:50 pm, Yarin <[email protected]> wrote:
>
> > > > > > > > I set up web2py on a Fedora EC2 server, running with mod_wsgi 
> > > > > > > > and
> > > > > > > > Apache.  Everything was working great with the initial setup.  
> > > > > > > > I then
> > > > > > > > tried to get amf working, by doing the following:
>
> > > > > > > > $
>
> ...
>
> read more »

Reply via email to