如何在 CentOS 上安装 Gitlab,第1张

首先安装 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

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在 CentOS 上安装 Gitlab

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情