服务器用的是 DS 的 年付 15$ 512内存,256 交换空间的这款。貌似我的系统是 Ubuntu 12.10 。因为 Gitlab 官方推荐是 1GB 内存,所以这个稍微显得有点危险,尝试了大概一个星期,最后终于安装成功了。下面说说我遇到的坑。

其实官方的安装文档蛮详细的,按照官方文档一步一步来,应该不会出问题。但是出了问题的话,还是不知道去哪里找解决方案,我就出了这两个问题,经过坚持不懈的搜索和尝试,最后终于解决了这个错误,因为几乎每次重新安装,都会出现这个错误,所以还是写在这里,一方面大家可以看看,一方面自己也做一个记录。

主要是两个地方,

一个是安装完成之后,执行 service gitlab start 的时候报错,并且启动不成功,可以通过 service gitlab status 来查看状态,如果启动成功了,就会看到 pid 等信息,访问网页版的会提示 502,在

cat /var/log/nginx/gitlat_error.log
 
2013/08/09 10:42:17 [crit] 32573#0: 30 connect() to unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket failed (2: No such file or directory) while connecting to upstream, client: **********, server: **********, request: "GET / HTTP/1.1", upstream: "http://unix:/home/gitlab/gitlab/tmp/sockets/gitlab.socket:/", host: "*******"

查看日志,会出现此问题。

如果遇到这个问题,尝试重启服务器,然后在启动 gitlab 尝试多试几次,如果还是不行的话,再尝试执行下面几行代码,记得先 cd /home/git/gitlab

sudo -u gitlab -H bundle exec rake assets:precompile RAILS_ENV=production

这样我是可以了,但是不知道你的问题解决没有。

然后就是 url 跳转到了 /user/sign_in 登录页面,但是此时我还是 502 了,此时说明 gitlab 执行成功了,但是 还是有问题,经过搜索,在这篇博文中发现同样的错误,然后想起来,在按教程安装的时候,提示这步有错误,代码如下。

cp config/unicorn.rb.example config/unicorn.rb

执行这句的时候,提示没有此文件,但是在,config 目录下,发现了 unicorn.rb 文件,只不过是空的 0KB 大小,然后尝试再次执行此命令,一直都是提示 没有此文件,
此时尝试执行下,

sudo -u git -H bundle install --deployment --without development test postgres aws

以安装 unicorn ,但是官方文档是不安装这个的,不知道为什么,反正我是安装了。可以和官方的文档对比下(在 Install Gems 这节),多安装了一个unicorn。不过这个应该不是必须的。

此时再次执行

cp config/unicorn.rb.example config/unicorn.rb

如果还是提示没有此文件,那么就大杀器来了。

将 config/unicorn.rb 拷贝一份到本地,将这个文件中的内容全部复制近本地的 unicorn.rb 中,然后将其上传到 config 中。然后再执行

bundle exec unicorn_rails -c config/unicorn.rb -E production -D

重启下 gitlab 再试试。然后我就解决了这个问题。

卡号 密码 面值 余额 到期时间 状态 备注
1SCM132W0042 49033682 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W0049 29233728 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004D 18303170 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004J 36138961 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004L 35550492 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004N 96763893 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004P 19477642 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004R 49544034 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004T 38516776 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.
1SCM132W004X 43521716 ¥35 ¥35 2013-08-31
(将在 22 天内过期)
可用 网站任何促销活动不可使用此礼品卡,有效期至2013.08.31.

如果使用了,请在底下留言注明下。谢谢。

jQuery 中 mouseout() 和 mouseleave() 的触发时机,都是在鼠标离开匹配的元素时被触发,在他俩之间的不同,主要就是在子元素上“事件冒泡”处理方式上的区别。

1. 没有子元素的情况下。

如果匹配的元素没有子元素的情况下,这两者之间是没有区别的。

2. 匹配的元素还有子元素。

如果匹配元素有子元素,那么这两者之间的区别主要来自于对“事件冒泡”时候的处理。

例如,下面的结构:

    <div id="outerBox">OuterBox
	<div id="innerBox">InnerBox
	</div>
    </div>

P.S 确保给 outerBox 和 innerBox 都绑定某些事件。

mouseout()
当鼠标进入 “outerBox” ,没有事件被触发。
当鼠标离开 “outerBox” ,并且进入 “innerBox” , “outerBox” 上绑定的事件被触发。
当鼠标离开 “innerBox” , 并且进入 “outerBox” , 紧随着 “outerBox” 的事件,“innerBox” 上绑定的事件被触发。
当鼠标离开 “outerBox”, “outerBox” 上绑定的事件被触发。

mouseleave()
当鼠标进入 “outerBox” ,没有事件被触发。
当鼠标离开 “outerBox” ,并且进入 “innerBox” , 没有事件被触发。
当鼠标离开 “innerBox” , 并且进入 “outerBox” ,“innerBox” 上绑定的事件被触发。
当鼠标离开 “outerBox”, “outerBox” 上绑定的事件被触发。

为了更好地理解,下面给出一个例子。

    <html>
<head>
 
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
 
<style type="text/css">
	#mouseout-outerBox1, #mouseleave-outerBox1,
	#mouseout-outerBox2, #mouseleave-outerBox2{
		margin:8px;
		border:1px groove #999966;
		background-color : #999966;
		width:150px;
		height:150px;
		color:white;
	}
	#mouseout-innerBox2, #mouseleave-innerBox2{
		margin:8px 8px 8px 16px;
		border:1px groove #0000FF;
		background-color : #0000FF;
		width:100px;
		height:100px;
		color:white;
	}
	span{
		padding:8px;
	}
	.content{
		width:500px;
		height:250px;
	}
	.container1{
		float:left;
		padding-right:16px;
	}
</style>
 
</head>
<body>
  <h1>jQuery mouseout() vs mouseleave() example</h1>
 
<div class="content">
  <div class="container1">
	  <span>mouseout() - no child element</span>
	  <div id="mouseout-outerBox1">OuterBox
	  </div>
	  <span id="mouseout-msg1">#mouseout is fired : 0</span>
  </div>
 
  <div class="container1">
  	  <span>mouseleave() - no child element</span>
	  <div id="mouseleave-outerBox1">OuterBox
	  </div>
	  <span id="mouseleave-msg1">#mouseleave is fired : 0</span>
  </div>
</div>
 
 
 
<div class="content">
  <div class="container1">
	  <span>mouseout() - with child elements</span>
	  <div id="mouseout-outerBox2">OuterBox
	  	<div id="mouseout-innerBox2">InnerBox
	  	</div>
	  </div>
	  <span id="mouseout-outer-msg2">#mouseout outer is fired : 0</span>
          <br/>
	  <span id="mouseout-inner-msg2">#mouseout inner is fired : 0</span>
  </div>
 
  <div class="container1">
  	  <span>mouseleave() - with child elements</span>
	  <div id="mouseleave-outerBox2">OuterBox
	  	<div id="mouseleave-innerBox2">InnerBox
	  	</div>
	  </div>
	  <span id="mouseleave-outer-msg2">#mouseleave outer is fired : 0</span>
          <br/>
	  <span id="mouseleave-inner-msg2">#mouseleave inner is fired : 0</span>
  </div>
</div>
 
<script type="text/javascript">
 
//example 1
var mouseout1=1;
$('#mouseout-outerBox1').mouseout(function(event) {
  $('#mouseout-msg1').text('#mouseout is fired : ' + mouseout1++)
});
 
var mouseleave1=1;
$('#mouseleave-outerBox1').mouseleave(function(event) {
  $('#mouseleave-msg1').text('#mouseleave is fired : ' + mouseleave1++)
});
 
//example 2
var mouseoutouter2=1;
$('#mouseout-outerBox2').mouseout(function(event) {
  $('#mouseout-outer-msg2').text('#mouseout outer is fired : ' + mouseoutouter2++)
});
 
var mouseoutinner2=1;
$('#mouseout-innerBox2').mouseout(function(event) {
  $('#mouseout-inner-msg2').text('#mouseout inner is fired : ' + mouseoutinner2++)
});
 
var mouseleaveouter2=1;
$('#mouseleave-outerBox2').mouseleave(function(event) {
  $('#mouseleave-outer-msg2')
         .text('#mouseleave outer is fired : ' + mouseleaveouter2++)
});
 
var mouseleaveinner2=1;
$('#mouseleave-innerBox2').mouseleave(function(event) {
  $('#mouseleave-inner-msg2')
         .text('#mouseleave inner is fired : ' + mouseleaveinner2++)
});
 
</script>
</body>
</html>

或者点击这里看看这个例子.