GitLab,是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。
它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
系统需求与安装前的准备
操作系统
Gitlab 官方提供支持的操作系统有:
- Ubuntu Linux
- Debian/GNU Linux
需要给官方支付费用而支持的操作系统有:
- Red Hat Enterprise Linux (RHEL)
- CentOS
- Oracle Linux
官方不提供支持,但是可以已经得到第三方支持的操作系统有:
其它的如 FreeBSD 、Mac OS X等操作系统现在已经有成功配置的案例了,但是在BSD或者Unix系统上的安装配置流程相当的繁琐,如果你确定要在这些操作系统上面安装的话,请一定要做好耐心的准备。
Ruby
GitLab 是基于 Ruby on Rails 开发的程序,至本文撰写止(2014/01/12),GitLab最新版本要求Ruby 的版本达到 1.9.3 或者 2.0+ ,对于类似 JRuby 或者 Rubinius 等非原生的 Ruby 版本,也有安装成功的案例,但是同样需要你做大量的工作,因为 GitLab 使用了大量的原生 Gem。
硬件要求
CPU 要求
- __100__用户以下,单核心CPU即可满足要求
- 超过__100__用户,推荐至少使用双核心CPU
- 超过__1000__用户,推荐至少使用4核心CPU
- 超过__10000__用户,推荐至少使用8核心CPU
内存要求
- GitLab最低要求(运行缓慢) 512MB 内存,同时还需要 250MB swap
- 768MB 的内存能保证 GitLab 刚刚可以以正常的速度运行,但是不推荐
- 1GB 内存 + 250MB swap 可以支持约100个用户的使用
- 2GB 内存可以支持约1000名用户的使用
- 4GB 内存可以支持约 10000名用户的使用
存储
可用存储空间的大小最终取决于你的项目大小与多少,但是要GitLab正常使用,你至少需要保证可用磁盘空间是你项目所占用空间的两倍,考虑到Git是一个只增不减的体系,所以建议你对磁盘使用LVM架构,以方便后期增加更多的磁盘。
依赖包
在Debian中, sudo 默认是没有安装的,这需要你手工安装,然后更新并升级系统至最新版本(以 root 帐户运行):
apt-get update -y
apt-get upgrade -y
apt-get install sudo -y
在整个 GitLab 的安装过程中,有一些文件需要编辑,所以你还需要带一个你熟悉的编辑器,比如你习惯使用 vim ,那么可以使用下面的命令安装它(安装并设置为默认编辑器):
sudo apt-get install -y vim
sudo update-alternatives --set editor /usr/bin/vim.basic
接下来安装必要的依赖包:
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate
安装成功之后,我们需要您确定安装了正确的 Python 版本(要求 Python 2.5+ ,3.0 还没有被支持):
sudo apt-get install -y python
python --version
sudo apt-get install -y python2.7
python2 --version
sudo ln -s /usr/bin/python /usr/bin/python2
sudo apt-get install -y python-docutils
确定你的系统上已经安装了正确版本的 Git (GitLab要求Git的版本为 1.7.10 或者更高,比如 1.7.12 或者 1.8.4):
sudo apt-get install -y git-core
git --version
如果系统上安装的Git版本过低,请按下面的操作移除老版本的 Git ,并安装新版本的:
sudo apt-get remove git-core
sudo apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev build-essential
cd /tmp
curl --progress https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz | tar xz
cd git-1.8.4.1/
make prefix=/usr/local all
sudo make prefix=/usr/local install
注意: ,如果要让系统可以接收邮件通知,你需要安装一个邮件服务器,默认的,不管是 Ubuntu 还是 Debian 都没有提供这样的软件,如果你需要安装,推荐你使用Postfix,你可以使用下面的命令它:
sudo apt-get install -y postfix
Ruby
移除老版本的 Ruby 1.8(如果存在的话):
sudo apt-get remove ruby1.8
下载并安装新的Ruby:
mkdir /tmp/ruby && cd /tmp/ruby
curl --progress ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar xz
cd ruby-2.0.0-p353
./configure --disable-install-rdoc
make
sudo make install
然后安装 Bundler Gem:
sudo gem install bundler --no-ri --no-rdoc
系统用户
创建一个名为 git 的系统用户,GitLab 将以它来运行:
sudo adduser --disabled-login --gecos 'GitLab' git
GitLab shell
GitLab Shell 是专门为 GitLab 开发的用来进行SSH访问与项目仓库管理的软件,我们通过下面的方式安装它:
# 进入Git的家目录
cd /home/git
# 克隆GitLab Shell
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0
cd gitlab-shell
sudo -u git -H cp config.yml.example config.yml
# 编辑配置文件,修改 gitlab_url
# 比如: 'http://git.ofsz.com/'
sudo -u git -H editor config.yml
# 安装
sudo -u git -H ./bin/install
数据库
GitLab 支持以下数据库:
你可以任选其一为 GitLab 使用,它们的配置方式如下:
使用 MySQL
# 如果服务器上还没有安装 MySQL,使用下面这一行命令安装它
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
# 运行MySQL安全安装脚本,为数据库 root 帐户设置一个密码
# 然后再一次输入你设置的密码以验证其正确性
sudo mysql_secure_installation
# 以 root 身份登陆数据库
mysql -u root -p
# 为 GitLab 创建一个新的用户
# 在运行下面的命令时,请将 $password 修改成为你真正的密码
mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY '$password';
# 数据GitLab的产品环境数据库
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
# 为 Gitlab 的数据库用户设定必须的权限
mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost';
# 退出MySQL
mysql> \q
# 尝试连接
sudo -u git -H mysql -u git -p -D gitlabhq_production
# 如果你看到下面这样的提示符则表示你的数据库配置是正确的
mysql> \q
# 现在可以进入GitLab的下一步安装了
使用PostgreSQL
# 如果服务器还没有安装 PostgreSQL,使用下面的命令安装
sudo apt-get install -y postgresql-9.1 postgresql-client libpq-dev
# 登陆至 PostgreSQL
sudo -u postgres psql -d template1
# 创建一个Gitlab使用的PostgreSQL用户
template1=# CREATE USER git;
# 创建GitLab使用的数据库,并为用户设定必须的权限
template1=# CREATE DATABASE gitlabhq_production OWNER git;
# 退出PostgreSQL命令行
template1=# \q
# 尝试连接是否正确
sudo -u git -H psql -d gitlabhq_production
GitLab
我们可以将 GitLab 安装至使用一个你想安装的目录下,推荐你安装在 /home/git/ 目录:
cd /home/git
克隆 GitLab 源代码
# 克 GitLab 代码
sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-4-stable gitlab
# 进入 Gitlab 目录
cd /home/git/gitlab
配置 GitLab
cd /home/git/gitlab
# 复制 Gitlab 的示例配置文件
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
# 注意修改 `localhost` 至你真正的域名
# 如果你是从 Git 源代码安装的 Git,请修改 bin_path 至 /usr/local/bin/git
sudo -u git -H editor config/gitlab.yml
# 确定 Gitlab 可以写入 log/ 与 tmp/ 目录
sudo chown -R git log/
sudo chown -R git tmp/
sudo chmod -R u+rwX log/
sudo chmod -R u+rwX tmp/
# 为 satellites 创建目录
sudo -u git -H mkdir /home/git/gitlab-satellites
# 为 sockets/pids 创建目录,并且确定 GitLab 可以写入这些目录
sudo -u git -H mkdir tmp/pids/
sudo -u git -H mkdir tmp/sockets/
sudo chmod -R u+rwX tmp/pids/
sudo chmod -R u+rwX tmp/sockets/
# 创建 public/uploads 目录
sudo -u git -H mkdir public/uploads
sudo chmod -R u+rwX public/uploads
# 复制 Unicorn 示例配置文件
sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
# 开启集群模式,如果你需要一个支持高并发量的GitLab应用
# 比如在 2GB 内存的服务器上可以修改为 3
sudo -u git -H editor config/unicorn.rb
# 复制示例的 Rack attack 配置文件
sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
# 配置 git 用户的全局设置,这对于你通过Web编辑的时候是十分有用的
# 编辑 user.email 为你在 gitlab.yml 中设置的邮箱地址
sudo -u git -H git config --global user.name "GitLab"
sudo -u git -H git config --global user.email "gitlab@localhost"
sudo -u git -H git config --global core.autocrlf input
__重要提示__: 确定 gitlab.yml 与 unicorn.rb 中的配置都是一样的。
配置 GitLab 数据库设置
使用 MySQL 数据库
sudo -u git cp config/database.yml.mysql config/database.yml
sudo -u git -H editor config/database.yml
使用 PostgreSQL 数据库
sudo -u git cp config/database.yml.postgresql config/database.yml
sudo -u git -H chmod o-rwx config/database.yml
安装 Gems
cd /home/git/gitlab
# 使用 MySQL 数据库
sudo -u git -H bundle install --deployment --without development test postgres aws
# 使用 PostgreSQL
sudo -u git -H bundle install --deployment --without development test mysql aws
在这一步骤中,如果出现以下错误:
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
很有可能是 MySQL 的开发包不存在,使用下面的命令安装一般都能解决问题:
sudo apt-get install mysql-client libmysqlclient-dev
初始化数据库,并激活高级功能
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
脚本运行完成之后,会得到如下的登陆帐户与密码:
login.........admin@local.host
password......5iveL!fe
安装 Init 脚本
下载 init 脚本(保存至 /etc/init.d/gitlab):
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
sudo cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
让 GitLab 随系统启动而启动:
sudo update-rc.d gitlab defaults 21
设置 Logrotate
sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
检测应用状态
sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
启动 GitLab 实例
sudo service gitlab start
# 或者
sudo /etc/init.d/gitlab restart
编辑静态文件
sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production
Nginx
Nginx 默认受GitLab官方支持。
安装 Nginx
如果你还没有安装 Nginx,可以使用以下命令直接安装它:
sudo apt-get install -y nginx
网站配置
下载 Nginx 默认配置文件
sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/git.ofsz.com
sudo ln -s /etc/nginx/sites-available/git.ofsz.com /etc/nginx/sites-enabled/git.ofsz.com
编辑 配置文件以使得它符合你的配置
sudo editor /etc/nginx/sites-available/git.ofsz.com
重启Nginx
sudo service nginx restart
完成
至现在为止,所有的安装已经完成,我们使用下面命令再一次检测安装运行环境是否正确:
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
初始化登陆
登陆你设置的网络地址,使用下面的用户名与密码登陆:
admin@local.host
5iveL!fe
登陆成功之后,请立马访问你的个人资料页面修改这些信息。
说明
关于智者科技
智者科技是一家专业从事于基于最选进的互联网技术的一站式解决方案供应商,我们向客户提供网站建设、SEO优化、移动应用开发、电子商务平台开发、品牌网站建设、微信二次开发等。
智者的每一位成员都有着超过五年的行业从业经验,或是来自大型企业的优秀设计师,或是在行业内有很高名望的怪才,我们因爱好而组合到一起,我们的理想是在这杂乱无章的互联网技术环境下,为企业带来真正能提升自身品牌形象、帮助自身成长的互联网产品。
联系方式
- 网站地址:http://www.ofsz.com
- 电话号码:18374888188 / 13973333488
- QQ号码:54778899 / 425602
- 邮箱地址:54778899 [at] qq.com