GitlabをDebian squeezeにインストールして動かすまで
基本この記事の通りに進める
- Ruby 1.9.3 p194のインストール手順でcheckinstallでdebを作る場合、「sudo checkinstall --fstrans=no -D make install」のように「--fstrans=no」をつけないとインストールできなかった
- 「Do you want me to list them? [n]:」→y
- 「Should I exclude them from the package? (Saying yes is a good idea) [n]:」→y
- 「Configure」の項で「Make sure you fill in the database details under the production section.」と書いてある通り、mysql-serverをインストールしてconfig/database.ymlのproductionの通りに設定
- Debianの場合、apt-get installする際にユーザ名とパスワード訊かれた気がする(よく覚えてない)ので、aptで入れれば終わる(はず)
- 以下2つの設定のためにconfig/database.ymlを編集
- SSL証明書とnginxの項が順番的に逆(いきなりnginxのパス /opt/nginx/conf がSSL証明書の項に出てくる)なので気を付ける
- /etc/init.d/nginxを置いて起動時にデーモンが起動するように
/opt/gitlabhq/config/database.yml
# Gitlab application config file # Email used for notification # about new issues, comments email: from: gitlab@localhost to: admin@localhost host: localhost # Protocol used for links in email letters # Value can be http or https #protocol: http # or https protocol: https # Git Hosting congiguration git_host: system: gitolite admin_uri: gitolite@localhost:gitolite-admin #admin_uri: ssh://gitolite@localhost:ポート番号/gitolite-admin.git base_path: /var/lib/gitolite/repositories/ host: localhost git_user: gitolite port: ポート番号 # Git settings # Use default values unless you understand it git: # Max size of git object like commit, in bytes # This value can be increased if you have a very large commits git_max_size: 5242880 # 5.megabytes # Git timeout to read commit, in seconds git_timeout: 10
/etc/init.d/nginx
#! /bin/sh ### BEGIN INIT INFO # Provides: nginx # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: starts the nginx web server # Description: starts nginx using start-stop-daemon ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON_OPTS="-c /opt/nginx/conf/nginx.conf" DAEMON=/opt/nginx/sbin/nginx NAME=nginx DESC=nginx test -x $DAEMON || exit 0 # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then . /etc/default/nginx fi set -e . /lib/lsb/init-functions test_nginx_config() { if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1 then return 0 else $DAEMON -t $DAEMON_OPTS return $? fi } case "$1" in start) echo -n "Starting $DESC: " test_nginx_config start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; stop) echo -n "Stopping $DESC: " start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; restart|force-reload) echo -n "Restarting $DESC: " start-stop-daemon --stop --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON || true sleep 1 test_nginx_config start-stop-daemon --start --quiet --pidfile \ /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS || true echo "$NAME." ;; reload) echo -n "Reloading $DESC configuration: " test_nginx_config start-stop-daemon --stop --signal HUP --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON || true echo "$NAME." ;; configtest) echo -n "Testing $DESC configuration: " if test_nginx_config then echo "$NAME." else exit $? fi ;; status) status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $? ;; *) echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2 exit 1 ;; esac exit 0
diffのみ
--- /etc/init.d/nginx.bak 2010-05-07 01:39:45.000000000 +0900 +++ /etc/init.d/nginx 2012-07-14 20:21:19.300706966 +0900 @@ -11,7 +11,9 @@ ### END INIT INFO PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/sbin/nginx +DAEMON_OPTS="-c /opt/nginx/conf/nginx.conf" +DAEMON=/opt/nginx/sbin/nginx NAME=nginx DESC=nginx
ssh: connect to host localhost port 22: Connection refused
sshのポートを変えていると
$ sudo -u gitolite bundle exec rake gitlab:app:status RAILS_ENV=production
すると22に接続しようとするので
Starting diagnostic
config/database.yml............exists
config/gitlab.yml............exists
/home/git/repositories/............exists
/home/git/repositories/ is writable?............YES
ssh: connect to host localhost port 22: Connection refused
fatal: The remote end hung up unexpectedly
Can clone gitolite-admin?............YES
UMASK for .gitolite.rc is 0007? ............YESFinished
こんな風に言われる。(その割にはちゃんとgitolite-adminをcloneできてるとか表示されてるけど)
config/gitlab.ymlのgit_host.portを変更してみたけど相変わらず22に接続しようとする。
見たらこのgit_host.portが使われてるメソッド((GitHost#url_to_repo()))が使われてないような気がしたので、
git_host.admin_uriをlib/gitlab/git_host.rbのGitHost#url_to_repo()を参考にして
admin_uri: gitolite@localhost:gitolite-admin
から
admin_uri: ssh://gitolite@localhost:ポート番号/gitolite-admin.git
に変えると無事pullできている様子。
lib/gitlabhq/gitolite.rbの22行目を
git clone #{GitHost.admin_uri} #{@local_dir}/gitolite
から
`git clone #{GitHost.url_to_repo} #{@local_dir}/gitolite`
に変えてやれば直るような気もしたけどまた22に接続するようになった。
別の場所かな?
とりあえず設定ファイルのgit_host.admin_uri書き換えで正常なステータスが出力されてることを確認したのでよしとする。