training
training copied to clipboard
Can not *start* instance in vagrant, only fg
If I try start
ing the instance installed in vagrant following http://training.plone.org/5/plone_training_config/instructions.html, I get the following error:
vagrant@training:/vagrant/buildout$ bin/instance start
. Traceback (most recent call last):
File "/vagrant/buildout/parts/instance/bin/interpreter", line 286, in <module>
exec(compile(__file__f.read(), __file__, "exec"))
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 745, in <module>
main()
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 742, in main
d.main(args)
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 241, in main
self.run()
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 245, in run
self.opensocket()
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 267, in opensocket
sock.bind(tempname)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 1] Operation not permitted
. . . . . . . . . .
daemon manager not running
In fg
it works fine.
So I added the following two import
and print
lines in /usr/lib/python2.7/socket.py
at line 224:
def meth(name,self,*args):
import os
print "%s: %s %s" % (os.getpid(), name, args)
return getattr(self._sock,name)(*args)
Now notice the difference between start
and fg
:
vagrant@training:/vagrant/buildout$ bin/instance fg
24463: connect ('/vagrant/buildout/var/instance/zopectlsock',)
24463: connect ('/vagrant/buildout/var/instance/zopectlsock',)
24466: setblocking (0,)
24466: fileno ()
24466: fileno ()
24466: getsockopt (1, 2)
24466: setsockopt (1, 2, 1)
24466: bind (('0.0.0.0', 8080),)
24466: listen (1024,)
24466: getsockname ()
2015-10-03 14:31:05 INFO ZServer HTTP server started at Sat Oct 3 14:31:05 2015
Hostname: 0.0.0.0
Port: 8080
vagrant@training:/vagrant/buildout$ bin/instance start
24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24473: bind ('/vagrant/buildout/var/instance/zopectlsock.24473',)
Traceback (most recent call last):
File "/vagrant/buildout/parts/instance/bin/interpreter", line 286, in <module>
exec(compile(__file__f.read(), __file__, "exec"))
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 745, in <module>
main()
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 742, in main
d.main(args)
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 241, in main
self.run()
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 245, in run
self.opensocket()
File "/home/vagrant/buildout-cache/eggs/zdaemon-2.0.7-py2.7.egg/zdaemon/zdrun.py", line 267, in opensocket
sock.bind(tempname)
File "/usr/lib/python2.7/socket.py", line 227, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 1] Operation not permitted
24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
. 24470: connect ('/vagrant/buildout/var/instance/zopectlsock',)
daemon manager not running
One possible fix is to change the CLIENTHOME
definition in parts/instance/etc/zope.conf
:
%define CLIENTHOME /home/vagrant/var/instance
Doing this will allow bin/instance start
to work.