GitLab详细部署

最近由于开发的需求,需要在公司部署一个git的服务器,在刚开始选择的时候,我打算使用gitolite来管理git,后来发现gitlab这个系统更加方便,它既支持ssh方式,又支持http方式,用户能够通过命令行甚至是web来提交自己的代码,非常的实用。

gitlab是一个基于ruby的开源项目,能够实现git仓库的功能,能够在网页上直接浏览自己的代码,下面主要介绍一下部署的过程,主要分为如下几个大步骤:

1、提供一些必须包,提供epel,关闭防火墙和selinux等操作;
2、gitlab依赖的python功能比较多,需要升级python到2.7.X;
3、安装redis的内存数据库;
4、安装MySQL的关系型数据库;
5、为gitlab提供ruby的环境支持;
6、提供gitlab-shell来管理git仓库;
7、安装gitlab系统;
8、安装nginx的web服务,做反向代理。

1、提供epel源,安装相应包

[[email protected] ~]# rpm -Uvh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
[[email protected] ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

下面提示你安装的包,一定要装,要不然,你会在部署过程中折返回来装的

[[email protected] ~]# yum install -y git gcc-c++ libyaml libicu-devel cmake nodejs

关闭防火墙和selinux,这对你的实验非常重要,要不然,排了半天错,原来是它搞的鬼

[[email protected] ~]# iptables -F
[[email protected] ~]# setenforce 0

2、升级python到2.7.X

查看当前系统中python版本,CentOS6.5的默认是2.6.6

[[email protected] ~]# python -V
Python 2.6.6

到python.org上去下载源代码,进行如下编译安装

[[email protected] ~]# tar Jxf Python-2.7.6.tar.xz 
[[email protected] ~]# cd Python-2.7.6
[[email protected] ~]# ./configure --prefix=/usr/local/python
[[email protected] ~]# make && make install

备份python2.6的版本,并把新的2.7指向到系统中去

[[email protected] ~]# mv /usr/bin/python /usr/bin/python2.6.6 
[[email protected] ~]# ln -sv /usr/local/python/bin/python /usr/bin/python

再次查看当前系统的python版本

[[email protected] ~]# python -V
Python 2.7.6

为了防止yum安装软件出错,将yum的依赖的python指回2.6.6

[[email protected] ~]# vim /usr/bin/yum
#!/usr/bin/python2.6.6

3、安装redis数据库

首先去redis.io上去下载redis的稳定版源码,进行编译安装

[[email protected] ~]# tar zxvf redis-3.0.3.tar.gz
[[email protected] ~]# cd redis-3.0.3
[[email protected] ~]# make
[[email protected] ~]# make install

执行redis的安装脚本

[[email protected] redis-3.0.3]# ./utils/install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]    
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] /etc/redis.conf
Please select the redis log file name [/var/log/redis_6379.log] /var/log/redis.log
Please select the data directory for this instance [/var/lib/redis/6379] /var/lib/redis.pid   
Please select the redis executable path [/usr/local/bin/redis-server]           
Selected config:
Port           : 6379
Config file    : /etc/redis.conf
Log file       : /var/log/redis.log
Data dir       : /var/lib/redis.pid
Executable     : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

更改redis的启动脚本,并启动服务

[[email protected] ~]# mv /etc/init.d/redis_6379 /etc/init.d/redis
[[email protected] ~]# service redis start

4、安装MySQL数据库

MySQL的编译安装文档很多,这里为了方便,我采用的是yum安装过程

[[email protected] ~]# yum install mysql mysql-server mysql-devel -y

为了保证数据的安全,应该数据和二进制日志会放在单独的分区中

[[email protected] ~]# vim /etc/my.cnf
datadir = /data/mysql

对MySQL进行初始化操作

[[email protected] ~]# mysql_install_db --user=mysql --datadir=/data/mysql/

启动MySQL数据库

[[email protected] ~]# service mysqld start

设置root的密码和相关登录信息

[[email protected] ~]# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we‘ll need the current
password for the root user.  If you‘ve just installed MySQL, and
you haven‘t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from ‘localhost‘.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MySQL comes with a database named ‘test‘ that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you‘ve completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

上面对于数据库的部署已经OK了,下面就要为gitlab创建一个库用来存储数据

[[email protected] ~]# mysql -uroot -pgitlab
mysql> CREATE USER ‘gitlab‘@‘localhost‘ IDENTIFIED BY ‘gitlab‘;
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE DATABASE IF NOT EXISTS `gitlab` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
Query OK, 1 row affected (0.01 sec)

mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlab`.* TO ‘gitlab‘@‘localhost‘;
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

5、提供ruby环境

下载ruby的源代码包

[[email protected] ~]# curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
[[email protected] ~]# ./configure --prefix=/usr/local/
[[email protected] ~]# make && make install

由于是在国内,安装gem的相关包会特别的慢,建议换成淘宝的,此处为淘宝点赞

[[email protected] ~]# gem sources --remove https://rubygems.org/
[[email protected] ~]# gem sources -a http://ruby.taobao.org/

安装bundler,它是帮助管理ruby下的所有依赖的包,相当于yum的功能

[[email protected] ~]# gem install bundler

添加一个git用户,作为git服务的授权用户

[[email protected] ~]# useradd git

6、安装gitlab-shell来管理git仓库

[[email protected] ~]# su - git
[[email protected] ~]$ git clone https://github.com/gitlabhq/gitlab-shell.git

将分支切换到2.6.3,有些文档说1.4.0,我建议切到2.6.3,因为版本低了,不支持用户ssh形式的提交代码到git服务中去

[[email protected] ~]$ cd gitlab-shell/
[[email protected] ~]$ git checkout v2.6.3

提供配置文件,修改gitlab的URL地址

[[email protected] ~]$ cp config.yml.example config.yml
[[email protected] ~]$ vim config.yml
gitlab_url: "http://192.168.190.138/"

进行安装操作

[[email protected]~ gitlab-shell]$ ./bin/install 
mkdir -p /home/git/repositories: true
mkdir -p /home/git/.ssh: true
chmod 700 /home/git/.ssh: true
touch /home/git/.ssh/authorized_keys: true
chmod 600 /home/git/.ssh/authorized_keys: true
chmod -R ug+rwX,o-rwx /home/git/repositories: true
find /home/git/repositories -type d -print0 | xargs -0 chmod g+s: true

7、安装gitlab系统

克隆gitlab的代码到git家目录

[[email protected] ~]$ git clone https://github.com/gitlabhq/gitlabhq.git gitlab
[[email protected] ~]$ cd gitlab
[[email protected] ~]$ git checkout 7-10-stable

配置项目,提供配置文件

[[email protected] ~]$ cp config/gitlab.yml.example config/gitlab.yml

将localhost改为本机ip或者是域名

[[email protected] ~]$ sed -i ‘s/localhost/192.168.190.138/g‘ config/gitlab.yml

修改目录的相关权限

[[email protected] ~]$ chown -R git log/
[[email protected] ~]$ chown -R git tmp/
[[email protected] ~]$ chmod -R u+rwx log/
[[email protected] ~]$ chmod -R u+rwx tmp/
[[email protected] ~]$ mkdir /home/git/gitlab-satellites

#可以视为临时目录,通过web ui的提交请求文件以及检出版本库都会存放在这个位置

提供unicorn的配置

[[email protected] ~]$ cp config/unicorn.rb.example config/unicorn.rb

修改unicorn的配置,指明监听的端口和超时时间

[[email protected] ~]$ vim config/unicorn.rb
listen "192.168.190.138:8080", :tcp_nopush => true
timeout 300

配置git的用户和邮件

[[email protected] ~]$ git config --global user.name "GitLab"
[[email protected] ~]$ git config --global user.email "[email protected]"
[[email protected] ~]$ git config --global core.autocrlf input

配置数据库,使gitlab将数据存入到MySQL数据库中

[[email protected] ~]$ cp config/database.yml.mysql config/database.yml
[[email protected] ~]$ vim config/database.yml
production:
  adapter: mysql2
  encoding: utf8
  collation: utf8_general_ci
  reconnect: false
  database: gitlab
  pool: 10
  username: gitlab
  password: "gitlab"

修改其权限,保证其他用户不能访问

[[email protected] ~]$ chmod o-rwx config/database.yml

安装gem的相关包,进行gitlab的初始化操作

切回root操作下面步骤

[[email protected] ~]# gem install charlock_holmes --version ‘0.6.9.4‘

切回git用户

[[email protected] ~]# su - git
[[email protected] ~]$ cd gitlab

修改Gemfile文件,将gem源改成淘宝的源

[[email protected] ~]$ vim Gemfile
source "http://ruby.taobao.org"

安装一些依赖包

[[email protected] ~]$ bundle install --deployment --without development test postgres puma aws
...
Remember to run generator to generate sample file and include mousetrap-rails with Rails Asset Pipeline

    $ rails generate mousetrap:install 

Post-install message from rdoc:
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

当你看到上面这段的时候就成功了

初始化gitlab

[[email protected] ~]$ bundle exec rake gitlab:setup RAILS_ENV=production
...
This will create the necessary database tables and seed the database.
You will lose any previous data stored in the database.
Do you want to continue (yes/no)? yes

Administrator account created:

login.........root
password......5iveL!fe

只要显示上面的管理员账号被创建,就ok了

为gitlab提供启动脚本

切回root用户

[[email protected] ~]# wget -O /etc/init.d/gitlab https://raw.githubusercontent.com/gitlabhq/gitlab-recipes/master/init/sysvinit/centos/gitlab-unicorn --no-check-certificate
[[email protected] ~]# chmod +x /etc/init.d/gitlab 
[[email protected] ~]# chkconfig --add gitlab

启动gitlab服务

[[email protected] ~]# service gitlab start

8、安装nginx做反向代理

配置nginx官方源

[[email protected] ~]# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch
gpgcheck=0
enabled=1

安装nginx包

[[email protected] ~]# yum install nginx -y

为gitlab配置反向代理的虚拟主机

[[email protected] ~]# vim /etc/nginx/conf.d/gitlab.conf
server {
    listen 80;
    server_name 192.168.190.138;

    client_max_body_size 512M;

    access_log  /var/log/nginx/gitlab_access.log;
    error_log   /var/log/nginx/gitlab_error.log;

    location / {
          proxy_pass http://192.168.190.138:8080;
    }
}

启动nginx服务

[[email protected] ~]# service nginx start

为提供服务的可靠性,建议将这些服务都设为开机自启动

在浏览器中访问我们的IP地址

本篇博客的主要目的是为了做个笔记,下次部署时,能更加方便快速一些,如果,大家有需要,也可以借鉴,博客中的错误之处,请帮忙之处,感谢!

时间: 2024-11-16 14:01:42

GitLab详细部署的相关文章

Nessus的详细部署

1.Nessus的概述 Nessus 被认为是目前全世界最多人使用的系统漏洞扫描与分析软件.总共有超过75,000个机构使用 Nessus 作为扫描该机构电脑系统的软件. * 提供完整的电脑漏洞扫描服务, 并随时更新其漏洞数据库. * 不同于传统的漏洞扫描软件, Nessus 可同时在本机或远端上摇控, 进行系统的漏洞分析扫描. * 其运作效能能随着系统的资源而自行调整.如果将主机加入更多的资源(例如加快CPU速度或增加内存大小),其效率表现可因为丰富资源而提高. * 可自行定义插件(Plug-

CloudStack+XenServer详细部署方案创建高级网络资源域

CloudStack+XenServer详细部署方案(5):创建高级网络资源域 本文将根据设计文档结合和之前创建的XenServer 资源池, 介绍CloudStack高级网络资源域的创建过程. Step1. 选择高级网络模式, 单击下一步.   Step2. 配置域信息. 域名称: shenzone DNS: 10.1.1.11 Hypervisor 类型: XenServer 网络域: shenzone.com 来宾网络CIDR: 192.168.100.0/24 公共: 是   注: 此处

CloudStack+XenServer详细部署方案 交换机配置和服务器连线

CloudStack+XenServer详细部署方案(2):交换机配置和服务器连线 本文将根据设计文档, 对交换机进行配置和服务器网络连线方式进行说明. Step1.交换机规划,  根据功能将交换机端口分为三个部分: 管理区域(交换机1 – 16 口):  用于XenServer和CloudStack的管理流量, 和VM 在主机间迁移产生的流量. 工作区域(交换机17 – 32 口):  用于VM之间访问和VM访问外部网络产生的网络流量. 存储区域(交换机33 – 48 口): 用于任何与存储交

CloudStack+XenServer详细部署方案(2):交换机配置和服务器连线

CloudStack+XenServer详细部署方案(2):交换机配置和服务器连线 本文将根据设计文档, 对交换机进行配置和服务器网络连线方式进行说明. Step1.交换机规划,  根据功能将交换机端口分为三个部分: 管理区域(交换机1 – 16 口):  用于XenServer和CloudStack的管理流量, 和VM 在主机间迁移产生的流量. 工作区域(交换机17 – 32 口):  用于VM之间访问和VM访问外部网络产生的网络流量. 存储区域(交换机33 – 48 口): 用于任何与存储交

CloudStack+XenServer详细部署方案 CloudStack管理节点的安装和配置

CloudStack+XenServer详细部署方案 CloudStack管理节点的安装和配置 本文将根据设计文档, 安装和配置CloudStack管理节点. 本文只对配置流程和结果进行举例说明, 具体 细节和配置操作请参考 CloudStack安装文档. 实际部署架构: 管理机柜规划: Step1. 安装和配置MySQL数据库. 根据设计部署2台MySQL数据库服务器, 安装过程和配置过程请参考CloudStack管理文档. 辅DB 对主DB 采用Replication方式进行备份. Step

自动化运维工具Ansible详细部署 (转载)

自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog.51cto.com/353572/1579894 ========================================================================================== 一.基础介绍 ===========================

自动化运维工具SaltStack详细部署【转】

==========================================================================================一.基础介绍==========================================================================================1.简介SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的pupp

超级详细部署java服务器(每个步骤都有截图说明)

此文完全原创,如需转载请说明出处.原文地址http://www.cnblogs.com/yt-Product1203/p/6882440.html  言归正传,下面为我自己总结出来的详细部署步骤,此文中的软件可以对应到官方网站中找到,在这里就不再啰嗦啦. 第一步 :准备需要用到的软件和资源 1.所要部署的项目 2.Tomcat服务器安装包 3.JDK安装包 4.Mysql安装包 5.Navicat安装包(此软件的用处为:方便快捷的操作Mysql数据库) 此说明主要针对win7系统环境.tomca

我不是九爷 带你了解 CloudStack+XenServer详细部署方案(3):CloudStack管理节点的安装和配置

CloudStack+XenServer详细部署方案(3):CloudStack管理节点的安装和配置 本文将根据设计文档, 安装和配置CloudStack管理节点. 本文只对配置流程和结果进行举例说明, 具体 细节和配置操作请参考 CloudStack安装文档. 实际部署架构: 管理机柜规划: Step1. 安装和配置MySQL数据库. 根据设计部署2台MySQL数据库服务器, 安装过程和配置过程请参考CloudStack管理文档. 辅DB 对主DB 采用Replication方式进行备份. S