Ubuntu 部署git服务器

来源:互联网 发布:plc编程软件在哪下载 编辑:程序博客网 时间:2024/06/02 04:42

部署环境: Ubuntu 12.04.3-server-stable

官方文档: https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/

严重声明:Ubuntu系统我真心不怎么会用,好多命令不是特别清楚,有什么不对的地方,别骂...轻轻的告诉俺,俺会认真改的!

一.Git的介绍

参照文档:http://www.open-open.com/lib/view/open1332904495999.html

二.Git初体验

       Git通常有两种方式来进行初始化:

       git clone: 这是较为简单的一种初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份,例如'git clone git://github.com/someone/some_project.git some_project'命令就是将'git://github.com/someone/some_project.git'这个URL地址的远程版 本库完全克隆到本地some_project目录下面

       git init和git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用'git init'命令进行初始化,Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建一个目录,并把 可访问的URL记录下来,此时你就可以利用'git remote add'命令来增加一个远程服务器端,例如'git remote add origin git://github.com/someone/another_project.git'这条命令就会增加URL地址为'git: //github.com/someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使用 origin别名即可

三.搭建

1. 部署基本需求包

wzg@GitServer:~$ sudo apt-get update

wzg@GitServer:~$ sudo apt-get install vim

wzg@GitServer:~$ 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

 修改默认编辑器为vim

wzg@GitServer:/opt$ sudo update-alternatives --set editor /usr/bin/vim.basic

   python 2.5+以上版本,3.x以下均可

wzg@GitServer:~$ sudo apt-get install -y python2.7

 ###尝试是否可以通过命令 :python 和 python2  进入python

 #wzg@GitServer:~$ which python

 #/usr/bin/python

 #wzg@GitServer:~$ which python2

 #/usr/bin/python2

wzg@GitServer:~$ sudo apt-get install -y python-docutils

2. 安装Git 核心程序(git-1.7.10 or higher)

wzg@GitServer:~$ sudo apt-get install -y git-core

  如果apt-get安装后,发现 Git 版本太旧  (git --version),那么需要移除之后,手动下载源码包进行编译安装

wzg@GitServer:/opt$ sudo wget https://git-core.googlecode.com/files/git-1.8.4.1.tar.gz

wzg@GitServer:/opt$ sudo tar zxf git-1.8.4.1.tar.gz

  获取make命令 ,预编译

wzg@GitServer:/opt$ sudo apt-get install make

wzg@GitServer:/opt/git-1.8.4.1$ sudo make prefix=/usr/local all

# Install into /usr/local/binsudo 安装

wzg@GitServer:/opt/git-1.8.4.1$ make prefix=/usr/local install

  如果需要日后收到邮件通知,那么还需要安装邮件服务器postfix

wzg@GitServer:/opt$ sudo apt-get install -y postfix

3. 安装ruby

wzg@GitServer:/opt$ sudo  wget  ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.gz | tar zxf

wzg@GitServer:/opt$ cd ruby-2.0.0-p353/

wzg@GitServer:/opt/ruby-2.0.0-p353$ ./configure --disable-install-doc && sudo make && sudo make install      

  安装gem

wzg@GitServer:/opt/ruby-2.0.0-p353$ sudo apt-get install gem

wzg@GitServer:/opt/ruby-2.0.0-p353$ sudo gem install bundler --no-ri --no-rdoc

4. 添加 用户

wzg@GitServer:/opt/ruby-2.0.0-p353$ sudo adduser --disabled-login --gecos 'GitLab' git                   --gecos 通用编译程序,描述git用户的信息

5. 安装GitLab Shell

wzg@GitServer:/opt$ cd /home/git/

wzg@GitServer:/opt$ sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0

wzg@localhost:/home/git$ cd gitlab-shell/

wzg@GitServer:/opt/gitlab-shell$ sudo -u git -H cp config.yml.example config.yml

  修改访问gitlab 的 url

wzg@GitServer:/opt/gitlab-shell$ sudo -u git -H editor config.yml

wKiom1LeOiDjQv12AAEUVqaA1G8944.jpg

  安装

wzg@GitServer:/opt/gitlab-shell$ sudo -u git -H ./bin/install

________________________ruby  git主程序安装完毕__________________________________

6. 安装mysql数据库,并授权 (安装过程略)

wzg@localhost:/home/git/gitlab-shell$ sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev

 提示你输入mysql的root用户密码:****** (此处必填,不然会重复提示让你输入mysql密码)

mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY 'PASSWORD';

mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;

mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost';

测试登陆是否正常

wzg@GitServer:/opt/gitlab-shell$ sudo -u git -H mysql -u git -p -D gitlabhq_production

7. 安装GitLab到 /home/git

wzg@GitServer:/opt/gitlab-shell$ cd /home/git

从源码路径获取gitlab,主要用来做gitlab服务配置以及web内面的管理(其他作用我还没研究到那)

wzg@GitServer:/home/git$ sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-4-stable gitlab

wzg@GitServer:/home/git$ cd /home/git/gitlab

配置Gitlab

wzg@GitServer:/home/git/gitlab$ sudo su git -c "cp gitlab.yml.example gitlab.yml"

wKiom1LfVnDgOuL6AAFXc6ZPR9w724.jpg

wzg@GitServer:/home/git/gitlab$ sudo chown -R git log/

wzg@GitServer:/home/git/gitlab$ sudo chown -R git tmp/

 #查询git用户是否对于log和tmp目录有可写刻度权限,755即可!

 ###查询过程略过不写


创建卫星目录

wzg@GitServer:/home/git/gitlab$ sudo -u git -H mkdir /home/git/gitlab-satellites


创建socket和pid目录,并确保git有可读可写权限755

wzg@GitServer:/home/git/gitlab$ sudo -u git -H mkdir tmp/{pids,sockets}

创建备份目录以及上传目录,并确保git具有可读可写权限755

wzg@GitServer:/home/git/gitlab$ sudo -u git -H mkdir public/uploads

wzg@GitServer:/home/git/gitlab$ sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb

wzg@GitServer:/home/git/gitlab$ sudo vim unicorn.rb

 ##如果你的负载较高,那么可以启用集群模式,调节worker_processes为更大值,具体值的大小,和你的Git服务器内存息息相关

wKioL1LfemnzYG0bAAETF1xvehU607.jpg

wzg@GitServer:/home/git/gitlab$ sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb

wKiom1LfgDiwHoOMAAIVX63PcO4717.jpg

  配置git用户全局设置。(当通过web编辑时生效)

wzg@GitServer:/home/git/gitlab$ sudo -u git -H git config --global user.name "GitLab"    

wzg@GitServer:/home/git/gitlab$ sudo -u git -H git config --global user.email    "gitlab@localhost"

 ###此处git用户的邮箱,必须和 conf/gitlab.yml和config/unicorn.rb中的配置相匹配    

wzg@GitServer:/home/git/gitlab$ sudo -u git -H git config --global core.autocrlf input

8.配置Gitlab 的 DB相关配置

wzg@GitServer:/home/git/gitlab$ sudo -u git cp config/database.yml.mysql config/database.yml

wzg@localhost:/home/git/gitlab$ sudo vim config/database.yml

wKiom1LfhRKCuTP7AALAGkcGFCk289.jpg

---由于之前只建了一个数据库“gitlabhq_production”因此这里修改一处即可

9.安装Gems

wzg@localhost:/home/git/gitlab$ sudo -u git -H bundle install --deployment --without development test postgres aws   (如果失败的话,多试一次)

 如下是安装完成的输出信息

wKioL1Lfj4rwL2iRAAHst4BPuGg611.jpg

10.初始化数据库,并且 激活特性

wzg@localhost:/home/git/gitlab$ sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production

  图示如下

wKiom1LfkOKQ0-mfAADWxlfP_WQ349.jpg

  安装完成

wKioL1LfkNbQSYPkAADukSeukds360.jpg11.做开机启动

wzg@localhost:/home/git/gitlab$ sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab

wzg@localhost:/home/git/gitlab$ sudo update-rc.d gitlab defaults 21

12.将程序的日志加入日志轮循系统

wzg@localhost:/home/git/gitlab$ sudo cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab

13.启动git程序

wzg@localhost:/home/git/gitlab$ sudo service gitlab start

wKiom1LfmdKwb1vKAALFjw08STE882.jpg14.编译资产(具体这步在干嘛,俺也不清楚...但是有资料这么说,哎,没办法,我是菜,我照做)

wzg@localhost:/home/git/gitlab$ sudo -u git -H bundle exec rake assets:precompile RAILS_ENV=production

wKiom1Lfm7Ph8TTbAA4VSc8k64A486.jpg15.安装nginx--- nginx的安装不用说了吧,太easy了,我偷懒了哦

wzg@localhost:/home/git/gitlab$ sudo apt-get install nginx

配置nginx(人家gitlab有自带的模板,不用你操心,只需要偶尔小修改下就可以)

wzg@localhost:/home/git/gitlab$ sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab

wzg@localhost:/home/git/gitlab$ sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

启动nginx

wzg@localhost:/home/git/gitlab$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

wzg@localhost:/home/git/gitlab$ sudo nginx

 #OK!恭喜你,搭建完成了,此时登陆 http://IP 即可访问你的git-web了,从中有好多妙用,自己体会吧   默认用户:  admin@local.host  默认密码: 5iveL!fe

wKioL1LfoFGhnL9IAAGC-YE9BN8258.jpg

##本人在使用360浏览器打开的时候,出来的图比较恶心,好多图标特别小,建议使用其他的浏览器,##效果非常好!

##当然了,如果你还不放心,担心哪步出错了,可以执行如下命令,它会告诉你哪里可能没完成

wzg@localhost:/home/git/gitlab$ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

wKiom1LfohrwEt4yAAStuDJBfGI579.jpg


…………………………现在,我们来引入ldap认证到git系统中……………………………………………

1、编辑配置文件

wzg@localhost:/home/git/gitlab$ sudo vim config/gitlab.yml  

wKiom1LgsSKRKFBqAAI-JBJCEKc228.jpg

2. 这时ldap认证也做完了,此时还需要修改ssh相关,否则web页面的一些操作无法完成

提示如下

wKiom1Lgs-WjINP0AAShiNphezo890.jpg

解决方法如下:

wzg@localhost:/home/git/gitlab$ sudo su - git

git@localhost:~$ ssh-keygen -t rsa -C "admin@local.host"

git@localhost:~$ cd .ssh/

git@localhost:~/.ssh$ cat id_rsa.pub

wKioL1LgwD7TzzHtAAEo51BRcoQ202.jpg生成密钥之后,复制里边的内容到页面,如下图

wKiom1LgwqbxOkuxAAJPQU3jpy0002.jpg


附注一些我在其他地方看到的信息:

svn/memcache和git/redis的差异

memcache和redis是不一样的,更多的人需要的是一个暂时的缓存,而不是落地的数据。至少我遇到的情况,大部分都是使用memcache更合适。如果他们都使用redis的话,会产生很多可能开发者并不需要的落地数据,这些数据可能每天都会占掉很多空间。

给大家搜集了很详细的信息

http://blog.csdn.net/litaohill/article/details/7755881  里边有好多git的用法,自己慢慢看吧


本文出自 “技术成就未来” 博客,请务必保留此出处http://jishuweiwang.blog.51cto.com/6977090/1353235

0 0