如何在 CentOS 上安装 Gitlab
首先安装 EPEL 和编译依赖库
$ rpm -ivh http://dlfedoraprojectorg/pub/epel/6/x86_64/epel-release-6-8noarchrpm
如果你是非 64 位,去上面的网址找到适合你发行版的最新版本的 epel rpm
$ yum -y update
$ yum -y install gcc gcc-c++ make autoconf libyaml-devel gdbm-devel ncurses-devel openssl-devel zlib-devel readline-devel curl-devel expat-devel gettext-devel tk-devel libxml2-devel libffi-devel libxslt-devel libicu-devel sendmail patch libyaml pcre-devel sqlite-devel vim
安装 Python 27+
Gitlab 要求 Python 255+ 以及 Ruby 19+
系统 Python 默认是 26x,如果你想把 Python 升级到目前比较流行的 27x 就参照下面步骤,否则直接跳过。(Gitlab 目前不支持 Python 30)
$ mkdir /tmp/gitlab && cd /tmp/gitlab
$ curl --progress http://pythonorg/ftp/python/275/Python-275tgz | tar xvf
$ cd Python-275
$ /configure --prefix=/usr/local
$ make && make altinstall
安装好之后,需要做两件事情,替换默认 python 的版本至最新版本,
$ sudo ln -s /usr/local/bin/python27 /usr/local/bin/python
因为系统默认 PATH 的寻址路径是 /usr/local/bin
最后看下 Python 版本是否是刚刚安装的版本:
$ python --version
由于 yum 是 python 的一个 module,所以这块修改可能会引起无法调用 yum 脚本,所以需要修改这个文件 /usr/bin/yum 的第一行为 !#/usr/bin/python26
安装 Ruby 20
Ruby 19 和 20 的特性差别不大,索性升级至最新 20 版本即可
$ cd /tmp/gitlab
$ curl --progress http://cacheruby-langorg/pub/ruby/20/ruby-200-p247targz | tar xz
$ cd ruby-200-p247
$ /configure
$ make
$ make install
ruby 20 已经内置 gem (v203),只需要安装 bundler
$ gem install bundler
若在执行 sudo ruby 或 sudo gem 找不到命令,因为编译的路径配置到了 /usr/local/bin,我们只需要做下软链接到 root 用户可以找到的 $PATH 路径:
$ ln -s /usr/local/bin/ruby /usr/bin/ruby
$ ln -s /usr/local/bin/gem /usr/bin/gem
$ ln -s /usr/local/bin/bundle /usr/bin/bundle
安装 Git 和 Gitolite
$ yum -y install git-all gitolite
安装 Nginx
$ yum -y install nginx
$ service nginx start
nginx 需要从 EPEL 中安装,默认系统没有 nginx 包。
安装 Mysql 和 Redis
Gitlab 要求强制安装 redis 处理一些数据,另外支持 MySQL 和 PostgreSQL,这里主要以 MySQL 为例
$ yum -y install mysql mysql-devel mysql-server redis
配置 Mysql 和 gitlab 需要的用户和数据库
$ service mysqld start
$ mysql -u root
$ mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY 'gitlab';
$ mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
$ mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production` TO 'gitlab'@'localhost';
$ mysql> \q
Redis 使用默认配置即可,直接启动
$ service redis start
添加 Gitlab 用户
$ useradd -c 'GitLab' git
CentOS 的命令没有办法直接禁止用户的访问的参数,需要用下面命令:
$ passwd -l git
安装 Gitlab-shell
使用 root 账户切换到 git 账户下操作,可以比官方教程省去一些麻烦的输入
$ su git && cd /home/git
$ git clone https://githubcom/gitlabhq/gitlab-shellgit
$ cd gitlab-shell
通过 git tag 查看最新版本并切换之
$ git checkout v171
编辑配置文件修改你要设定的域名(domain),比如 http://gitlabdev/
$ vim configyml
完成之后执行安装脚本
$ /bin/install
安装 Gitlab
$ cd /home/git
$ git clone https://githubcom/gitlabhq/gitlabhqgit gitlab
$ cd /home/git/gitlab
通过 git tag 查看最新版本并切换之
$ git checkout 601
这里需要配置的东西多一些,这里参考官方的文档,也可以安装我下面的步骤来:
$ cd /home/git/gitlab
复制配置文件,修改 host 相关的配置项,主要是 domain 要和上面的 http://gitlabdev
$ cp configyml{example,}
$ vim config/gitlabyml
确认 gitlab 以下目录的权限是否正确
$ mkdir tmp/pids/
$ mkdir tmp/sockets/
$ chown -R git log/
$ chown -R git tmp/
$ chmod -R u+rwX log/
$ chmod -R u+rwX tmp/
$ chmod -R u+rwX tmp/pids/
$ chmod -R u+rwX tmp/sockets/
创建 satellites 目录,这个目录是保存各个用户的仓库
$ mkdir /home/git/gitlab-satellites
创建 uploads 目录(为什么 gitlab 不在项目中创建呢= =!)
$ mkdir public/uploads
$ chmod -R u+rwX public/uploads
复制 unicorn 配置文件
$ cp config/unicornrb{example,}
设置 ruby web 容器的参数,比如 2GB RAM 服务器可以设置 3 个 worker。
如果系统其他服务占用了 unicorn 的端口,记得改名。
$ vim config/unicornrb
设置一些 git 全局参数
$ git config --global username "GitLab"
$ git config --global useremail "gitlab@localhost"
$ git config --global coreautocrlf input
配置 gitlab 数据库设置
$ cp config/databaseyml{mysql,}
$ vim config/databaseyml
$ chmod o-rwx config/databaseyml
安装必需的 Ruby Gems
$ cd /home/git/gitlab
$ [sudo] gem install charlock_holmes --version '0694'
$ bundle install --deployment --without development test postgres aws
初始化数据库数据(执行输入 Yes 继续创建)
$ bundle exec rake gitlab:setup RAILS_ENV=production
设置 init 脚本
$ sudo cp lib/support/initd/gitlab /etc/initd/gitlab
$ sudo chmod +x /etc/initd/gitlab
检查 Gitlab 状态
$ bundle exec rake gitlab:env:info RAILS_ENV=production
启动 gitlab 服务
$ sudo service gitlab start
再起检查,保证所有项目都是绿色
$ bundle exec rake gitlab:check RAILS_ENV=production
配置 nginx
根据 nginx 的安装路径适当修改下面的路径即可,我们先把 gitlab 提供的配置文件拷贝过去
$ sudo mkdir -p /etc/nginx/conf/sites/
$ sudo cp lib/support/nginx/gitlab /etc/nginx/conf/sites/gitlabconf
根据 nginx 版本和不同发行版的不同,配置结构可能不同根据你的实际情况加载 gitlabconf
修改 gitlabconf 的 YOUR_SERVER_FQDN 为上面设置的 domain。
最后修改 nginxconf 或者 defaultconf 加载 /etc/nginx/conf/site 下所有 conf 文件
http {
include /etc/nginx/conf/site/conf;
server {
…
}
}
保存后,重启各个服务
$ sudo service nginx reload
$ sudo service gitlab restart
开始 Gitlab 之旅
配置好 hosts 即可访问 gitlabdev
$ echo "127001 gitlabdev" >> /etc/hosts
默认的用户名密码:
admin@localhost
5iveL!fe
各种坑
1 错误日志报权限错误
2013/11/07 00:42:21 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconicohtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:21 [crit] 15875#0: 2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlabsocket failed (13: Permission denied) while connecting to upstream, client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlabsocket:/faviconico", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public//indexhtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/html" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlabsocket failed (13: Permission denied) while connecting to upstream, client: 3333331, server: gitlabweblo, request: "GET / HTTP/11", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlabsocket:/", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconico" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconico/indexhtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 stat() "/home/git/gitlab/public/faviconicohtml" failed (13: Permission denied), client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", host: "gitlabweblo"
2013/11/07 00:42:31 [crit] 15875#0: 2 connect() to unix:/home/git/gitlab/tmp/sockets/gitlabsocket failed (13: Permission denied) while connecting to upstream, client: 3333331, server: gitlabweblo, request: "GET /faviconico HTTP/11", upstream: "http://unix:/home/git/gitlab/tmp/sockets/gitlabsocket:/faviconico", host: "gitlabweblo"
解决方案:
$ (sudo) chmod o+x /home/git
2 8080 端口被占用
这样主要是因为 nginx 的配置是做 unicorn 的代理转发,实际上 gitlab 是由 unicorn 容器驱动,而在配置里默认绑定的是 8080 端口
$ vim /home/git/gitlab/config/unicornrb
找到 listen "127001:8080", :tcp_nopush => true 修改成其他未占用的端口号即可。
centos安装设置基础软件仓库时出错 是安装错误造成的,解决方法为:
1、首先登陆CentOS服务器,连接上服务器之后我们使用yum remove git 命令删除已安装的Git。
2、若未安装过Git则忽略上一步,使用yum install git 或者yum insall -y git,加了一个-y在之后的安装过程中就全部自动了,不会再有任何需要确认的提示。
3、安装完成后,使用git --version命令查看Git的版本,我们可以看到如下的版本信息,说明Git安装成功了。
4、在CentOS上我们使用Git连接Gitee码云,首先我们需要在服务器上生成公钥,在命令行输入 ssh-keygen -t rsa -C "xxxxx@xxxxxcom"。
5、使用命令cat ~/ssh/id_rsapub查看公钥的内容,并且复制出来,粘贴到码云添加公钥的地方,粘贴后点“确定”按钮,此时会出现弹框,需要输入码云的密码,输入后会提示SSH公钥添加成功。
6、接下来回到CentOS服务器上,输入ssh -T git@giteecom,如果返回success则说明配置成功了。
注意事项:
版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测性、高重复性的 Linux 环境。
扩展参考:Jenkins+Gitlab通过脚本自动部署回滚web项目至集群
1):Gitlab服务器:ubuntu 192168152131 ---参考搭建:Linux安装gitlab,docker安装gitlab教程
2):Jenkins服务器:ubunu 192168152130 ---参考搭建:linux安装Jenkins,或docker安装Jenkins教程
在服务器上生成ssh-keygen,用于配置web服务器和Gitlab服务器。
3):web服务器:centos 192168152150 ---已搭建好LNMP环境
4):开发者电脑:Windows+key密钥 (用于提交代码)
1:在gitlab创建项目Test Project
21): 配置一个开发者电脑的ssh公钥到gitlab
配置一个开发者电脑的ssh公钥到gitlab,这样才能模拟开发上传代码到gitlab。
windows生成key过程及git安装,可参考:Windows下git和github的使用图文详细教程_the丶only的博客-CSDN博客_github win
在windows测试clone,和提交代码。
注:最新版git 已经将默认分支master改为main了。所以看到main,而不是master不要太奇怪
测试成功,在gitlab也显示有indexhtml文件。
22): 配置jenkins公钥到gitlab
同理,同样需要jenkins公钥,因为jenkins也需要拉去gitlab的代码。
在 jenkins服务器 上查看公钥并复制添加到gitlab,并命名为jekins。
1:插件管理,安装插件
jenkins本身没什么功能,主要是依靠插件来实现各种强大的功能。
基本需要添加的插件:Gitlab Hook、Build Authorization Token Root、Publish Over SSH、Gitlab Authentication、Gitlab、Git Parameter
可以在 Manage Jenkins >> Manage Plugins 查看管理插件。在Available 选项搜索安装插件即可。
安装完成后,重启Jenkins。
2:添加需要部署的web主机
在 Manage Jenkins >> Configure System 中往下翻,找到 Publish over SSH 选项,点击add ssh server。
在Jenkins服务器上,查看私钥,注,是私钥,不是公钥。
将私钥填写在key位置,还有添加web服务器相关信息。
注:如果测试报错如下
Failed to connect or change directory
jenkinspluginspublish_overBapPublisherException: Failed to add SSH key Message [invalid privatekey: [B@2e54414f]
是因为默认用ssh-keygen命令,默认生成了OPENSSH 格式密钥。而Jenkins暂时不支持这种私钥,私钥开头结尾如下:
所以,需要生成rsa密钥格式的。用开头说的ssh-keygen加其他参数生成即可。
私钥开头结尾如下:
再次测试,显示success,则成功。然后点击save保存即可。
3:构建任务项目
首页创建任务或者一个项目
命名为web-project,选择为freestyle project 自由项目。然后ok确认。
31):源码管理 Source Code Management
选择源码管理,添加gitlab的项目clone地址。
注:最后路径选择分支,我gitlab主分支名字为main,如果是master,则写master,或者合并的其他分支。
在add添加用户
添加完成后,选择git用户,这时没有红色提醒,说明已成功连接
32):构建触发器 Build Triggers
现在Build Triggers,勾选build when,其他默认,并记下链接 http://192168152130:8080/project/web-project
点击高级 advance 选项。
勾选filter branches regex选择,填写分支,生产token。其他默认
33):构建 Build
选择Build 选项。选择ssh
添加web服务器
添加完毕,最后save保存。
1:添加钩子webhooks
选择自己的项目Test Project,在设置setting里,选择钩子webhooks
填写刚才记下的http://192168152130:8080/project/web-project和token值。
最后Add webhook完成:
2:如添加失败,报错,更改Network
注:如填写失败提示Url is blocked: Requests to the local network are not allowed
还需更改Network选项。
3:测试钩子
添加完成后,下面会出现钩子选择。点击test中的,push event。
出现successful,即添加成功。
在Jenkins也可以看到刚才的测试时间信息。
在开发电脑上测试提交,我这里为Windows电脑测试。
打开Git Bash,输入以下命令:
提交成功,回到Jenkins,查看是否构建成功:
绿色显示构建成功,无错误显示。回到gitlab查看项目。
时间显示刚才也提交成功,无错误。最后在浏览器输入web地址测试,本人配置了web访问端口8082。所以输入IP加端口访问。
内容也已经自动更新成功。
完结撒花!!!
1首先下载git源码2xz文件解压xz-dgit-2014-08-20tarxztar-xvfgit-2014-08-20tar3安装gitcdgit-2014-08-20/autoconf/configure--prefix=/usr/local/git/makemakeinstall如果make的时候报错:/bin/sh:msgfmt:commandno
0条评论