Debian下GitLab 安装步骤详解
博客又是好久不更新了,趁着中秋假期在家学习安装了GitLab,这个折腾啊,然后写个笔记,下次可以参考.
基本上参考官方文档:https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md然后有些需要注意的地方做下记录.
一、安装要求
Debian**,MySQL,git,gitlab-shell,redis
二、安装教程
1. 首先需要确定账户可以使用sudo,并更新系统package
# run as root!,apt-get update,apt-get upgrade
apt-get install sudo #正常情况系统都带sudo命令,如果没有的话,手动安装下.
2. 安装一些必要包
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-docutils pkg-config cmake
检查Python版本,2.5+ (3.0+还没支持)python --version,如果版本不对,请安装.
sudo apt-get install python2.7
python2 --version
sudo ln -s /usr/bin/python /usr/bin/python2
安装邮件发送支持默认即可.sudo apt-get install -y postfix
3. 安装Ruby这里我们使用taobao的镜像进行安装 可以大大的缩短下载包的时间.
- mkdir /tmp/ruby && cd /tmp/ruby
- curl
- cd ruby-2.1.2
- ./configure
- make
- sudo make install
Note:请不要使用rvm来安装ruby 可能会因为环境变量导致这样那样的错误,当然如果你能解决这些问题可以使用rvm来安装ruby.
安装bundler 这里我们也使用taobao镜像来缩短下载时间,注意请使用sudo!!
sudo gem sources --remove http://rubygems.org/
sudo gem sources -a http://ruby.taobao.org/
sudo gem install bundler
4.添加Git用户
sudo adduser –disabled-login –gecos ‘GitLab’git
5.安装 GitLab-shell 新版本使用GitLab-shell来代替gitolite.
- # Login as git
- sudo su git
- # Go to home directory
- cd /home/git
- # Clone gitlab shell
- git clone https://github.com/gitlabhq/gitlab-shell.git
- cd gitlab-shell
- # switch to right version
- git checkout v1.4.0
- cp config.yml.example config.yml
- # Edit config and replace gitlab_url
- # with something like 'http://domain.com/'
- # 这里修改成自己的内部域名 如: http://git.test.com/
- vim config.yml
- # Do setup
- ./bin/install
6.安装数据库m推荐MySQL,以下所有操作需要使用可以sudo的账户,代码如下:
- # Install the database packages
- sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
- # Login to MySQL
- mysql -u root -p
- # Create a user for GitLab. (change $password to a real password)
- mysql> CREATE USER 'gitlab'@'localhost' IDENTIFIED BY '123456';
- # Create the GitLab production database
- mysql> CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
- # Grant the GitLab user necessary permissions on the table.
- mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
7.开始安装GitLab主程序.
- ## We'll install GitLab into home directory of the user "git"
- cd /home/git
- # Clone GitLab repository
- sudo -u git -H git clone https://github.com/gitlabhq/gitlabhq.git gitlab
- # Go to gitlab dir
- cd /home/git/gitlab
- # Checkout to stable release
- sudo -u git -H git checkout 7-2-stable
8.配置GitLab.
- # Go to GitLab installation folder
- cd /home/git/gitlab
- # Copy the example GitLab config
- sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
- # Make sure to change "localhost" to the fully-qualified domain name of your
- # host serving GitLab where necessary
- # 这里仅需要修改host即可,
- sudo -u git -H vim config/gitlab.yml
- # Make sure GitLab can write to the log/ and tmp/ directories
- # 修改账户权限
- sudo chown -R git log/
- sudo chown -R git tmp/
- sudo chmod -R u+rwX log/
- sudo chmod -R u+rwX tmp/
- # Create directory for satellites
- sudo -u git -H mkdir /home/git/gitlab-satellites
- sudo chmod u+rwx,g=rx,o-rwx /home/git/gitlab-satellites
- # Create directories for sockets/pids and make sure GitLab can write to them
- 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/
- # Create public/uploads directory otherwise backup will fail
- sudo -u git -H mkdir public/uploads
- sudo chmod -R u+rwX public/uploads
- # Copy the example Puma config
- sudo -u git -H cp config/puma.rb.example config/puma.rb
- # Copy the example Puma config
- # 该配置文件默认即可
- sudo -u git -H vim config/puma.rb
- #如果没有puma.rb可以用下面的,二选一
- sudo -u git -H cp config/unicorn.rb.example config/unicorn.rb
- sudo -u git -H editor config/unicorn.rb
- # listen "142.23.21.76:8080", :tcp_nopush => true
- # Copy the example Rack attack config
- sudo -u git -H cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
- # Configure Git global settings for git user, useful when editing via web
- # Edit user.email according to what is set in gitlab.yml
- sudo -u git -H git config
- sudo -u git -H git config
- sudo -u git -H git config
- sudo -u git cp config/database.yml.mysql config/database.yml
- # 修改数据库账号密码, 刚才添加过gitlab这个数据库用户 直接修改成该账号即可
- sudo -u git vim config/database.yml
- #数据库密码 只需修改production即可
- # username: gitlab
- # password: "123456"
- # host: localhost
9.安装 Gems.
- cd /home/git/gitlab
- sudo gem install charlock_holmes
- # 修改Bundle源地址为taobao, 首行改成 source 'http://ruby.taobao.org/'
- sudo -u git vim Gemfile
- # 这个是使用mysql数据库, 这个命令意思是排除postgres 请别搞错
- sudo -u git -H bundle install
10.初始化数据库并启用高级功能.
sudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production
11.安装init脚本
- cd /home/git/gitlab
- sudo curl
- cp lib/support/init.d/gitlab /etc/init.d/
- sudo chmod +x /etc/init.d/gitlab
- #设置开机启动GitLab
- sudo update-rc.d gitlab defaults 21
- cd /home/git/gitlab
- cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
12.最后检测一下程序状态
cd gitlab
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
Note:这里可能会告诉你init脚本有问题或者git版本过低, 可以无视
13.启动GitLab
sudo service gitlab start
三、Nginx配置
你可以安装nginx来代理访问GitLab 配置过程如下
1. 安装nginx:
sudo apt-get install nginx
cd /home/git/gitlab
1.增加GitLab配置文件
- sudo curl
- sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/
- sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab
- # 修改配置文件 Listen 直接监听80端口即可 e.g. listen 80;
- # 修改server_name为你的内部域名 e.g. server_name git.test.com;
- sudo vim /etc/nginx/sites-available/gitlab //phpfensi.com
2.重启nginx
sudo service nginx restart
保存服务器名字的hash表是由指令 server_names_hash_max_size 和 server_names_hash_bucket_size所控制的,参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数,如果Nginx给出需要增大 hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.
vim /etc/nginx/sites-enabled/gitlab
server_names_hash_bucket_size 64;
sudo service nginx restart
这样你就可以通过nginx来访问gitlab了,默认的账户如下
用户名:admin@local.host
密码: 5iveL!fe