这两天因为项目需求需要搭建一个GitLab服务器,遇到了很多问题,参考了很多网络资料,终于搭建成功,在此把这个过程记录一下,利人利己。
一、最终目的
1,在Linux下创建GitLab服务器,客户端能够完成git 的 clone,pull,commit,push操作。
2,能够通过浏览器访问服务器上的GitLab主页,登录之后能够实现,创建工程,增加用户等操作。
二、准备知识
虽然按照后续过程能够实现最终目的,但本人强烈建议读者大致了解下以下知识点。(本人就是因为事先对有些知识不了解导致搭建过程中困难重重)
1,git的基本用法
2,gitolite和github
3,ssh认证
4,uginx代理服务器
三、搭建环境
服务器: Ubuntu 11.04(本人使用的是虚拟机),需要已经启动了ssh服务。
测试客户端:Win7,需要先安装git
四、开始搭建
平台需求:
此项目被设计用于Linux操作系统。
也许可以工作在 FreeBSD 与 Mac OS 系统,但我们无法保证系统稳定性与功能完整性。
官方支持的 Linux 发行版:
Ubuntu Linux
Debian/GNU Linux
它应该工作于:
Fedora
CentOS
RedHat
你使用这些系统需要些运气,但不保证稳定性:
MacOS X
FreeBSD
GitLab 不能运行于 Windows 并且我们也没有支持的计划。
硬件需求:
我们推荐至少 1GB 内容用于 gitlab 实例。
本安装指南已于 Debian/Ubuntu 测试通过。
安装总共需要6步:
安装依赖包
安装 Ruby
安装 Gitolite
安装与配置 GitLab
启动前端Web服务器
启动Resque进行(用于后台任务)
重要信息
在你发邮件列表询问安装与配置问题之前请确认你已经根据本文完成了所有步骤。
Only create a GitHub Issue if you want a specific part of this installation guide updated.
Also read the Read this before you submit an issue wiki page.
使用这个安装脚本可以轻易的跳过前3个步骤。
# 安装 curl 与 sudo
apt-get install curl sudo
# 三合一命令 :)
curl https://raw.github.com/gitlabhq/gitlab-recipes/master/install/debian_ubuntu.sh | sh
现在你可以直接到到第四步
如果你在 Amazon Web Services 使用 Ubuntu 12.04,你可以使用一个命令跳过所有步骤(1-6)
curl https://raw.github.com/gitlabhq/gitlab-recipes/master/install/debian_ubuntu_aws.sh | sh
更多详细信息,你可以阅读此脚本的 HOWTO 部分。
笔者注:本人使用了三合一命令欲跳过前三步,但后续安装怎么都不成功,后来才发现第二步安装有问题,按照第2步要求安装ruby就可以了。
所以请关注这个三个一命令状态,确保都能执行成功。
1. 安装依赖包
请记住,Debian 默认并没有安装 sudo,请使用 root 安装它:
apt-get update && apt-get upgrade && apt-get install sudo现在你可以安装必须包:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y wget curl gcc checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libreadline6-dev libc6-dev libssl-dev libmysql++-dev make build-essential zlib1g-dev libicu-dev redis-server openssh-server git-core Python-dev python-pip libyaml-dev postfix libpq-dev数据库
SQLite
sudo apt-get install -y sqlite3 libsqlite3-devMySQL
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
# Login to MySQL
$ mysql -u root -p
# Create the GitLab production database
mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
# Create the MySQL User change $password to a real password
mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '$password';
# Grant proper permissions to the MySQL User
mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';PostgreSQL
sudo apt-get install -y postgresql-9.2 postgresql-server-dev-9.2
# Connect to database server
sudo -u postgres psql -d template1
# Add a user called gitlab. Change $password to a real password
template1=# CREATE USER gitlab WITH PASSWORD '$password';
# Create the GitLab production database
template1=# CREATE DATABASE IF NOT EXISTS gitlabhq_production;
# Grant all privileges on database
template1=# GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production to gitlab;
# Quit from PostgreSQL server
template1=# \q
# Try connect to new database
$ su - gitlab
$ psql -d gitlabhq_production -U gitlab(译者注:以上3种数据库根据需要安装其一即可)