Re: [gitorious] Re: How to run git-proxy on reboot.
Artem, Since you're running Ubuntu, you should really use Upstart for controlling the git-daemons and git-proxy processes on your server (shameless self promotion: I have written an article about Upstart on my personal blog: http://zmalltalker.com/linux/init-scripts-part-1.html) Assuming you're running the latest version of Gitorious, you should create an Upstart recipe for your Git daemons and make it look like this: # /etc/init/git-daemons.conf description Native git daemons on port 9400 author Marius Mårnes Mathiesen mar...@gitorious.com script /usr/bin/git daemon --listen=0.0.0.0 --port=9400 --syslog --export-all --base-path=PATH TO YOUR REPOSITORIES --verbose --reuseaddr --user=git --group=git PATH TO YOUR REPOSITORIES end script start on started rc RUNLEVEL=[35] stop on runlevel [06] Next, you should set up your git-proxy process to start whenever git-daemons is started. It should look like this: # /etc/init/git-daemons.conf description Git proxy on 9418 to 9400 author Marius Mårnes Mathiesen mar...@gitorious.com start on started git-daemons stop on stopped git-daemons env RAILS_ENV=production # If your Ruby is not in PATH, add it to PATH here: env PATH=/opt/ruby-enterprise/bin:$PATH exec PATH TO YOUR GITORIOUS INSTALLATION/script/git-proxy -h 127.0.0.1 Insert the correct paths in the two files above (anything in UPPERCASE between brackets). After you have added these two files, let Upstart know about them: % initctl reload-configuration And then start the git daemons: % start git-daemons This should first start your git daemons, and once they are started start the git proxy. Both processes should be started when the machine starts and stop when it shuts down. To see the status: % initctl list | grep git Cheers, - Marius On Thu, Nov 29, 2012 at 04:47:20AM -0800, Artem Silenkov wrote: Good day! We have a problem with git-proxy init script. Git-proxy run fine with it and daemonize but after few minutes stop to do any work. With error in log Looking up /project/repo.git IOError - closed stream So no client could push-pull with fatal: The remote end hung up unexpectedly Process is in working state even could strace it but brocken somehow. I'm not ruby programmer but guess that it is logger problem after daemonizing like here. http://stackoverflow.com/questions/1711603/ruby-daemons-causing-activerecord-logger-ioerror We tried to hack git-proxy script with no success. This is our init script under ubuntu 12.04 #! /bin/sh ### BEGIN INIT INFO # Provides: git-proxy # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: GIT-proxy server daemon # Description: Starts the GIT-proxy needed by Gitorious ### END INIT INFO # Author: Fabio Akita ***@gmail.com # adapted for git-proxy by 2gis team RUBY_HOME=/opt/ruby-enterprise GITORIOUS_HOME=/var/www/gitorious RETVAL=0 PROG=git-proxy PID_FILE=$GITORIOUS_HOME/log/git-proxy.pid GIT_DAEMON=$RUBY_HOME/bin/ruby $GITORIOUS_HOME/script/git-proxy --pid=$PID_FILE LOCK_FILE=/var/lock/git-proxy export RAILS_ENV=production do_check_pid() { if [ -f $PID_FILE ]; then PID=`cat $PID_FILE` RUNNING=`ps --pid $PID | wc -l` else PID=0 RUNNING=0 fi } runlevel=`runlevel | awk '{print $2}'` start() { do_check_pid if [ $RUNNING != 2 ] ; then echo -n Starting $PROG /bin/su - git -c export RAILS_ENV=production;$GIT_DAEMON 21 /dev/null sleep 1 if [ -f $PID_FILE ] ; then echo . RETVAL=0 else echo : FAILURE!!! RETVAL=1 fi else echo $PROG already running RETVAL=1 fi [ $RETVAL = 0 ] touch $LOCK_FILE } stop() { do_check_pid if [ $RUNNING != 2 ] ; then echo $PROG not running else echo -n Stopping $PROG PROGPID=`cat $PID_FILE` kill -TERM $PROGPID echo . fi RETVAL=0 # if we are in halt or reboot runlevel kill all running sessions # so the TCP connections are closed cleanly if [ x$runlevel = x0 -o x$runlevel = x6 ] ; then PROGPID=`cat $PID_FILE` kill -9 $PROGPID /dev/null fi [ $RETVAL = 0 ] { rm -f $LOCK_FILE rm -f $PID_FILE } } case $1 in start) start ;; stop) stop ;; restart) stop start ;; condrestart) if [ -f $LOCK_FILE ] ; then if [ $RETVAL = 0 ] ; then stop # avoid race sleep 10 start fi fi ;; *) echo Usage: $0 {start|stop|restart|condrestart} RETVAL=1 esac exit $RETVAL #EOF When git-proxy started in console or with cron as described above there were no errors only when daemonized. No matter how much users try to pushpull. We need more knowledge to investigate further )) вторник, 11 сентября 2012 г., 20:47:27 UTC+7 пользователь Marius Mårnes Mathiesen написал: On Fri, Aug 17, 2012 at 6:25 PM, Austin
Re: [gitorious] Re: How to run git-proxy on reboot.
Good day! We have a problem with git-proxy init script. Git-proxy run fine with it and daemonize but after few minutes stop to do any work. With error in log Looking up /project/repo.git IOError - closed stream So no client could push-pull with fatal: The remote end hung up unexpectedly Process is in working state even could strace it but brocken somehow. I'm not ruby programmer but guess that it is logger problem after daemonizing like here. http://stackoverflow.com/questions/1711603/ruby-daemons-causing-activerecord-logger-ioerror We tried to hack git-proxy script with no success. This is our init script under ubuntu 12.04 #! /bin/sh ### BEGIN INIT INFO # Provides: git-proxy # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: GIT-proxy server daemon # Description: Starts the GIT-proxy needed by Gitorious ### END INIT INFO # Author: Fabio Akita ***@gmail.com # adapted for git-proxy by 2gis team RUBY_HOME=/opt/ruby-enterprise GITORIOUS_HOME=/var/www/gitorious RETVAL=0 PROG=git-proxy PID_FILE=$GITORIOUS_HOME/log/git-proxy.pid GIT_DAEMON=$RUBY_HOME/bin/ruby $GITORIOUS_HOME/script/git-proxy --pid=$PID_FILE LOCK_FILE=/var/lock/git-proxy export RAILS_ENV=production do_check_pid() { if [ -f $PID_FILE ]; then PID=`cat $PID_FILE` RUNNING=`ps --pid $PID | wc -l` else PID=0 RUNNING=0 fi } runlevel=`runlevel | awk '{print $2}'` start() { do_check_pid if [ $RUNNING != 2 ] ; then echo -n Starting $PROG /bin/su - git -c export RAILS_ENV=production;$GIT_DAEMON 21 /dev/null sleep 1 if [ -f $PID_FILE ] ; then echo . RETVAL=0 else echo : FAILURE!!! RETVAL=1 fi else echo $PROG already running RETVAL=1 fi [ $RETVAL = 0 ] touch $LOCK_FILE } stop() { do_check_pid if [ $RUNNING != 2 ] ; then echo $PROG not running else echo -n Stopping $PROG PROGPID=`cat $PID_FILE` kill -TERM $PROGPID echo . fi RETVAL=0 # if we are in halt or reboot runlevel kill all running sessions # so the TCP connections are closed cleanly if [ x$runlevel = x0 -o x$runlevel = x6 ] ; then PROGPID=`cat $PID_FILE` kill -9 $PROGPID /dev/null fi [ $RETVAL = 0 ] { rm -f $LOCK_FILE rm -f $PID_FILE } } case $1 in start) start ;; stop) stop ;; restart) stop start ;; condrestart) if [ -f $LOCK_FILE ] ; then if [ $RETVAL = 0 ] ; then stop # avoid race sleep 10 start fi fi ;; *) echo Usage: $0 {start|stop|restart|condrestart} RETVAL=1 esac exit $RETVAL #EOF When git-proxy started in console or with cron as described above there were no errors only when daemonized. No matter how much users try to pushpull. We need more knowledge to investigate further )) вторник, 11 сентября 2012 г., 20:47:27 UTC+7 пользователь Marius Mårnes Mathiesen написал: On Fri, Aug 17, 2012 at 6:25 PM, Austin Montgomery mont...@gmail.comjavascript: wrote: So I have come up with a solution. I added the following line to my git users crontab and it has the git-proxy up and running without a hitch on reboot. * * * * * cd /var/www/gitorious env RAILS_ENV=production bundle exec script/git-proxy 21 /dev/null Austin, Glad to hear you got it working. A couple of alternatives: - Use a process monitoring tool like Monit (apt-get install monit). By writing a small recipe you can have monit ensure your process (identified by a pid file, which the git-proxy script will create) is running. It will even make sure the proxy is available on a specific port and can be set up to restart the service if it consumes too much resources - Create a script in /etc/init.d like you suggested - Even better, as Ubuntu has moved from /etc/init.d scripts to Upstart, place a script in eg. /etc/init/git-proxy.conf - my Upstart knowledge is a little rusty, but I'm sure someone on the list can share something... Cheers, - Marius -- To post to this group, send email to gitorious@googlegroups.com To unsubscribe from this group, send email to gitorious+unsubscr...@googlegroups.com
Re: [gitorious] Re: How to run git-proxy on reboot.
Good day! Ouh. correction here. forget about -d option. GIT_DAEMON=$RUBY_HOME/bin/ruby $GITORIOUS_HOME/script/git-proxy -d --pid=$PID_FILE четверг, 29 ноября 2012 г., 19:47:20 UTC+7 пользователь Artem Silenkov написал: Good day! We have a problem with git-proxy init script. Git-proxy run fine with it and daemonize but after few minutes stop to do any work. With error in log Looking up /project/repo.git IOError - closed stream So no client could push-pull with fatal: The remote end hung up unexpectedly Process is in working state even could strace it but brocken somehow. I'm not ruby programmer but guess that it is logger problem after daemonizing like here. http://stackoverflow.com/questions/1711603/ruby-daemons-causing-activerecord-logger-ioerror We tried to hack git-proxy script with no success. This is our init script under ubuntu 12.04 #! /bin/sh ### BEGIN INIT INFO # Provides: git-proxy # Required-Start: # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: GIT-proxy server daemon # Description: Starts the GIT-proxy needed by Gitorious ### END INIT INFO # Author: Fabio Akita ***@gmail.com # adapted for git-proxy by 2gis team RUBY_HOME=/opt/ruby-enterprise GITORIOUS_HOME=/var/www/gitorious RETVAL=0 PROG=git-proxy PID_FILE=$GITORIOUS_HOME/log/git-proxy.pid GIT_DAEMON=$RUBY_HOME/bin/ruby $GITORIOUS_HOME/script/git-proxy --pid=$PID_FILE LOCK_FILE=/var/lock/git-proxy export RAILS_ENV=production do_check_pid() { if [ -f $PID_FILE ]; then PID=`cat $PID_FILE` RUNNING=`ps --pid $PID | wc -l` else PID=0 RUNNING=0 fi } runlevel=`runlevel | awk '{print $2}'` start() { do_check_pid if [ $RUNNING != 2 ] ; then echo -n Starting $PROG /bin/su - git -c export RAILS_ENV=production;$GIT_DAEMON 21 /dev/null sleep 1 if [ -f $PID_FILE ] ; then echo . RETVAL=0 else echo : FAILURE!!! RETVAL=1 fi else echo $PROG already running RETVAL=1 fi [ $RETVAL = 0 ] touch $LOCK_FILE } stop() { do_check_pid if [ $RUNNING != 2 ] ; then echo $PROG not running else echo -n Stopping $PROG PROGPID=`cat $PID_FILE` kill -TERM $PROGPID echo . fi RETVAL=0 # if we are in halt or reboot runlevel kill all running sessions # so the TCP connections are closed cleanly if [ x$runlevel = x0 -o x$runlevel = x6 ] ; then PROGPID=`cat $PID_FILE` kill -9 $PROGPID /dev/null fi [ $RETVAL = 0 ] { rm -f $LOCK_FILE rm -f $PID_FILE } } case $1 in start) start ;; stop) stop ;; restart) stop start ;; condrestart) if [ -f $LOCK_FILE ] ; then if [ $RETVAL = 0 ] ; then stop # avoid race sleep 10 start fi fi ;; *) echo Usage: $0 {start|stop|restart|condrestart} RETVAL=1 esac exit $RETVAL #EOF When git-proxy started in console or with cron as described above there were no errors only when daemonized. No matter how much users try to pushpull. We need more knowledge to investigate further )) вторник, 11 сентября 2012 г., 20:47:27 UTC+7 пользователь Marius Mårnes Mathiesen написал: On Fri, Aug 17, 2012 at 6:25 PM, Austin Montgomery mont...@gmail.comwrote: So I have come up with a solution. I added the following line to my git users crontab and it has the git-proxy up and running without a hitch on reboot. * * * * * cd /var/www/gitorious env RAILS_ENV=production bundle exec script/git-proxy 21 /dev/null Austin, Glad to hear you got it working. A couple of alternatives: - Use a process monitoring tool like Monit (apt-get install monit). By writing a small recipe you can have monit ensure your process (identified by a pid file, which the git-proxy script will create) is running. It will even make sure the proxy is available on a specific port and can be set up to restart the service if it consumes too much resources - Create a script in /etc/init.d like you suggested - Even better, as Ubuntu has moved from /etc/init.d scripts to Upstart, place a script in eg. /etc/init/git-proxy.conf - my Upstart knowledge is a little rusty, but I'm sure someone on the list can share something... Cheers, - Marius -- To post to this group, send email to gitorious@googlegroups.com To unsubscribe from this group, send email to gitorious+unsubscr...@googlegroups.com
Re: [gitorious] Re: How to run git-proxy on reboot.
On Fri, Aug 17, 2012 at 6:25 PM, Austin Montgomery montg...@gmail.comwrote: So I have come up with a solution. I added the following line to my git users crontab and it has the git-proxy up and running without a hitch on reboot. * * * * * cd /var/www/gitorious env RAILS_ENV=production bundle exec script/git-proxy 21 /dev/null Austin, Glad to hear you got it working. A couple of alternatives: - Use a process monitoring tool like Monit (apt-get install monit). By writing a small recipe you can have monit ensure your process (identified by a pid file, which the git-proxy script will create) is running. It will even make sure the proxy is available on a specific port and can be set up to restart the service if it consumes too much resources - Create a script in /etc/init.d like you suggested - Even better, as Ubuntu has moved from /etc/init.d scripts to Upstart, place a script in eg. /etc/init/git-proxy.conf - my Upstart knowledge is a little rusty, but I'm sure someone on the list can share something... Cheers, - Marius -- To post to this group, send email to gitorious@googlegroups.com To unsubscribe from this group, send email to gitorious+unsubscr...@googlegroups.com
[gitorious] Re: How to run git-proxy on reboot.
So I have come up with a solution. I added the following line to my git users crontab and it has the git-proxy up and running without a hitch on reboot. * * * * * cd /var/www/gitorious env RAILS_ENV=production bundle exec script/git-proxy 21 /dev/null I just wanted to follow up on my post in case anybody else runs across this issue in the future. -Austin On Thursday, August 16, 2012 2:52:05 PM UTC-6, Austin Montgomery wrote: Hello Group, I have a self hosted version of Gitorious running on ubuntu 12.04. Everything is humming right along but I am looking for tips on getting the git-proxy script to run on startup. Things work perfectly if sudo to my 'git' user cd into my gitorious directory located at /var/www/gitorious and then run the command env RAILS_ENV=production bundle exec script/git-proxy The proxy starts right up and works great, so I'm looking for tips on the best way to run the proxy script on startup. Just to give this post some color I'm a SCM guy that has recently moved over from a .NET shop to a linux/mac shop. I know my way around linux but I'm pretty new to Ubuntu. Before I write a little script to run in /etc/init.d I wanted to see of you guys had any better solutions on how to insure the git-proxy script runs reliably when the box is rebooted. Any advice is greatly appreciated. Thanks, Austin -- To post to this group, send email to gitorious@googlegroups.com To unsubscribe from this group, send email to gitorious+unsubscr...@googlegroups.com