Re: lauchd and svnserve
Re: lauchd and svnserve
- Subject: Re: lauchd and svnserve
- From: "Kevin McEnhill" <email@hidden>
- Date: Wed, 24 Sep 2008 21:02:57 -0500
I ran svnserve under launchd on 10.4 but found that using the built in
Apache2 and svn_dav mod on 10.5 MUCH easier and less finicky. If
anyone in interested in a crudely assembled document about how I did
it, you are more than welcome to visit
<http://steamcode.com/wiki/index.php?title=Turn_on_the_built-in_Subversion_server>.
I want to eventually turn on https access but I am not there yet.
FYI, this is my wiki that I am using to document everything I seem to forget.
On Wed, Sep 24, 2008 at 6:52 AM, Patrick Mau <email@hidden> wrote:
> I hope you don't mind sharing my plist.
>
> Please note the 'PathState', that avoids the mentioned mount issues.
> In addition, I use User/Group settings and decimal umask 23 ("027" octal).
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
> "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
> <plist version="1.0">
> <dict>
> <key>Debug</key>
> <false/>
> <key>GroupName</key>
> <string>_svn</string>
> <key>KeepAlive</key>
> <dict>
> <key>PathState</key>
> <string>/opt/sw/var/lib/svn</string>
> </dict>
> <key>Label</key>
> <string>local.svnserve</string>
> <key>OnDemand</key>
> <false/>
> <key>ProgramArguments</key>
> <array>
> <string>/opt/sw/bin/svnserve</string>
> <string>--daemon</string>
> <string>--foreground</string>
> <string>--root</string>
> <string>/opt/sw/var/lib/svn</string>
> <string>--listen-host</string>
> <string>0.0.0.0</string>
> </array>
> <key>RunAtLoad</key>
> <true/>
> <key>UserName</key>
> <string>_svn</string>
> <key>Umask</key>
> <integer>23</integer>
> </dict>
> </plist>
>
> On 24.09.2008, at 12:49, Roland King wrote:
>
>> don't run it like that. the 'd' argument means daemon-ize and it's a
>> requirement of launchd that processes do NOT do that. What's happening is
>> the process is starting, it immediately backgrounds itself, which means the
>> process launchd starts dies, then launchd tries to start it up again but it
>> can't because there is a background daemon process (the one you just
>> started) hogging the socket. Eventually launchd gives up trying to respawn
>> it and the error messages in the console stop, and the daemon one is still
>> there. launchd cannot control processes which do that.
>>
>> You're also clearly trying to start it up too early, so the first few
>> really do actually just die and launchd starts them up again, but it doesn't
>> really know what it's doing.
>>
>> You could run it in foreground mode by changing that '-d' to
>> '--foreground'. That will stop launchd going totally nuts trying to keep
>> starting it up again because it will stay up, and if it does fall down,
>> launchd will correctly start it for you again.
>>
>> however a much better idea is to put it into inetd mode and only start up
>> on demand when someone asks for it, I don't know about you but I don't use
>> my repository very much. For that you need the file which follows. That will
>> start one in inetd mode when someone makes a request on the svn port. In
>> that way the process will be down most of the time which is less strain on
>> the server and it won't start until someone asks for it, which means you
>> shouldn't have all those volume mounting issues.
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
>> "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
>> <plist version="1.0">
>> <dict>
>> <key>Disabled</key>
>> <false/>
>> <key>Label</key>
>> <string>org.tigris.subversion.svnserve</string>
>> <key>ProgramArguments</key>
>> <array>
>> <string>/usr/local/bin/svnserve</string>
>> <string>--inetd</string>
>> <string>--root=Volumes/Development_Current/_CodeRepository</string>
>> </array>
>> <key>ServiceDescription</key>
>> <string>Subversion Standalone Server</string>
>> <key>Sockets</key>
>> <dict>
>> <key>Listeners</key>
>> <array>
>> <dict>
>> <key>SockFamily</key>
>> <string>IPv4</string>
>> <key>SockServiceName</key>
>> <string>svn</string>
>> <key>SockType</key>
>> <string>stream</string>
>> </dict>
>> </array>
>> </dict>
>> <key>inetdCompatibility</key>
>> <dict>
>> <key>Wait</key>
>> <false/>
>> </dict>
>> </dict>
>> </plist>
>>
>>
>> On Sep 24, 2008, at 4:24 PM, René v Amerongen wrote:
>>
>>> Dear list
>>>
>>> Not sure where to put this question, but I did see here more of launchd
>>> questions.
>>>
>>> I got svnserve running with the following plist.
>>>
>>> <?xml version="1.0" encoding="UTF-8"?>
>>> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
>>> "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
>>> <plist version="1.0">
>>> <dict>
>>> <key>KeepAlive</key>
>>> <dict>
>>> <key>PathState</key>
>>> <dict>
>>>
>>> <key>/Volumes/Development_Current/_CodeRepository</key>
>>> <true/>
>>> </dict>
>>> </dict>
>>> <key>Label</key>
>>> <string>subversion.svnserve</string>
>>> <key>ProgramArguments</key>
>>> <array>
>>> <string>/usr/local/bin/svnserve</string>
>>> <string>-d</string>
>>> <string>-r</string>
>>>
>>> <string>/Volumes/Development_Current/_CodeRepository</string>
>>> </array>
>>> <key>RunAtLoad</key>
>>> <true/>
>>> <key>StandardErrorPath</key>
>>> <string>/Library/Logs/Subversion_SVNserve.log</string>
>>> </dict>
>>> </plist>
>>>
>>> My Volumes/Development_Current/ volume is a firewire disk and when the
>>> plist get fired the drive isn't ready yet.
>>> But when it comes up the svnserve starts up en works ok. Just a second
>>> but with two or three "does not exist or is not a directory" lines
>>>
>>> Some questions however.
>>>
>>> 1.)While svnserve is running, in my Subversion_SVNserve.log log I see.
>>> svnserve: Root path '/Volumes/Development_Current/_CodeRepository' does
>>> not exist or is not a directory.
>>> svnserve: Root path '/Volumes/Development_Current/_CodeRepository' does
>>> not exist or is not a directory.
>>> svnserve: Can't bind server socket: Address already in use
>>> svnserve: Can't bind server socket: Address already in use
>>> svnserve: Can't bind server socket: Address already in use
>>> ...
>>>
>>> and at the console I see the Launchd log
>>>
>>> 24-09-08 10:06:36 com.apple.launchd[1] (subversion.svnserve[684]) Exited
>>> with exit code: 1
>>> 24-09-08 10:06:36 com.apple.launchd[1] (subversion.svnserve) Throttling
>>> respawn: Will start in 10 seconds
>>> 24-09-08 10:06:46 com.apple.launchd[1] (subversion.svnserve[685]) Exited
>>> with exit code: 1
>>> 24-09-08 10:06:46 com.apple.launchd[1] (subversion.svnserve) Throttling
>>> respawn: Will start in 10 seconds
>>> .....
>>>
>>> Yesterday I did have a huge PID number a little scary.
>>> Why is it trying to start again? How can I stop that? what is wrong with
>>> my plist?
>>>
>>>
>>> 2.) When I unmount the drive, then the svnserve keeps running. I thought
>>> the the daemon will get killed.
>>> However it restart when the drive is mounted back online. But how can I
>>> get this killed when unmounting the drive.
>>>
>>>
>>> 3.) Actualy I would like to have it start at demand and kills after 10
>>> minutes. I notice that the OnDemand key is gone in 10.5. But how should I do
>>> it now?
>>>
>>> 4.) I did see a few sample script with ip socket info in the plist, what
>>> is that for? Do I need that?
>>>
>>> Thanks in advance
>>>
>>> René
>>>
>>> _______________________________________________
>>>
>>> Cocoa-dev mailing list (email@hidden)
>>>
>>> Please do not post admin requests or moderator comments to the list.
>>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>>
>>> Help/Unsubscribe/Update your Subscription:
>>>
>>> This email sent to email@hidden
>>
>> _______________________________________________
>>
>> Cocoa-dev mailing list (email@hidden)
>>
>> Please do not post admin requests or moderator comments to the list.
>> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>>
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
>
--
Kevin McEnhill <mailto:email@hidden>
"You can have my Mac when you pry my cold dead fingers from it"
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden