最近正在使用Git这个版本管理工具,不得不说习惯了以后确实比SVN好用得多了,同时结合github这样的网站一起使用,更是让团队开发的效率得到很大的提升。但github有一个不爽的地方就是private项目要收费,想免费使用的只能创建public项目,而且有时候在国内访问又会被HX了......

正好到公司上班的时候发现了一神器:gitlab,可以说是github的完美私人版本,经过许多尝试后,终于配置成功。

安装gitlab其实还算挺简单的,在官网上按照教程yum | rpm安装就可以了。但有一个让我很头疼的问题,因为gitlab的安装包默认会包含ruby、nginx、postgres等一些套件,官网推荐的方式是一起安装,然后自成一体就可以直接使用。但我的服务器上面已经安装了nginx,而且还挂了几个网站。这种情况下可以有两个选择:一是把/etc/gitlab/gitlab.rb配置中把它默认的nginx服务停掉,使用已经安装的nginx服务作为web server,具体可以参考官方文档:aaa。二就是把以前安装的nginx废掉,使用bundled里面的nginx版本。

一开始我用的是方案一,但进行得却很不顺利:配置server节点的时候总提示messager错误,原来是ruby想着的配置找不到,这点我的理解应该是类型于php-fpm的fastcgi没配置好一样。由于自己对ruby不了解,最终只能放弃而改用方案二了。

方案二配置要点:

1. 主要的配置文件:

      a. /etc/gitlab/gitlab.rb  

    gitlab的主配置文件,大部分gitlab相关配置都在里面修改。记得改完后执行gitlab-ctl reconfigure才能生效。

  b. /var/opt/gitlab/nginx/conf/   

    这个相当于nginx的配置,但和标准版本的nginx还是有些不一样。

2. 卸载原有的nginx。

  可直接通过 yum remove命令完成。

3. 修改/etc/gitlab/gitlab.rb,去掉nginx['custom_nginx_config']和ci_nginx['custom_nginx_config']前面的注释,同时把它们的值设置成自己的.conf文件路径。注意,修改后记得运行gitlab-ctl reconfigure重新生成配置文件,这一步同时也会将/var/opt/gitlab/nginx/conf/nginx.conf这个nginx的主要配置覆盖掉。所以如果你有多个网站需要配置到ng中的话就得想想办法了,要么在custom_nginx_config配置中通过通过符的方式加载全部ng的.conf文件(custom_nginx_config只能设置一个),要么每次覆盖掉nginx.conf文件后再手动写入include内容,然后gitlab-ctl restart。

4. 如果还需要fastcgi运行php-fpm,刻检查/var/opt/gitlab/nginx/conf/下面是否有fastcgi_params这个文件,如果没有则server节点中“include        fastcgi_params;”一定会报错。

另附一个fastcgi_params文件:

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

 

 

 

 

 

posted on 2015-09-11 22:23  demin7926  阅读(197)  评论(0)    收藏  举报