前段时间开始研究起来gitlab这东西了,不用多说,就开始折腾,最后在自己的vps上做了个,中间出过很多问题,请教了磊哥,这里特别感谢,总结的文档是按照Markdown格式写的,放到这里就成这样了,估计我没有改博客园的编辑器,另外博客园的Markdown编辑器和我mac下的MOU呈现的效果不太一样,所以强烈建议博客园出个Linux下客户端写博客app吧,在mac下太不方便了,文档参照官方文档,修改了部分东西
### 参考链接:
http://dl528888.blog.51cto.com/ 磊哥的博客
http://www.01happy.com/centos-6-5-install-gitlab/ 快乐编程
https://github.com/gitlabhq/gitlab-recipes/blob/master/install/centos/README.md 官方文档关于centos上的安装
## gitlab 6.5 on centos 6.4
##### step1:system environment Distribution : CentOS 6.4 minimal GitLab version : 6.0 - 6.6 Web Server : Nginx Init system : sysvinit Database : MySQL Additional Notes : In order to get a proper Ruby setup we build it from source##### step2:before installing 1. 关闭selinx 2. 时间同步##### step3:The GitLab installation consists of setting up the following components: Install the base operating system (CentOS 6.5 Minimal) and Packages / Dependencies Ruby System Users GitLab shell Database GitLab Web server Firewall## 1、Installing the operating system (CentOS 6.5 Minimal)> 略...## 2、step1:Updating and adding basic software and services##### Add Fedora epel repository rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://www.fedoraproject.org/static/0608B895.txt rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6##### Add PUIAS Computational repository # vim /etc/yum.repos.d/PUIAS_6_computational.repo [PUIAS_6_computational] name=PUIAS computational Base $releasever - $basearch mirrorlist=http://puias.math.ias.edu/data/puias/computational/$releasever/$basearch/mirrorlist #baseurl=http://puias.math.ias.edu/data/puias/computational/$releasever/$basearch enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias #下载公钥 wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-puias http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-puias #验证 yum repolist##### Install the required tools for GitLab yum -y update yum -y groupinstall 'Development Tools' yum -y install vim-enhanced readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel gcc-c++ libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git patch python-docutils##### 配置redis> 配置redis使其在开机时启动: chkconfig redis on service redis start##### 配置邮件服务器> 这部分没有配置## 2、install ruby##### Download Ruby and compile it: 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 --prefix=/usr/local/ make make install echo $?##### Install the Bundler Gem: gem install bundler --no-ri --no-rdoc #verify gem list --local | grep bundler##### Logout and login again for the $PATH to take effect. Check that ruby is properly installed with: which ruby # /usr/local/bin/ruby ruby -v # ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux] ## 3、System Users##### Create a git user for Gitlab: adduser --system --shell /sbin/nologin --comment 'GitLab' --create-home --home-dir /home/git/ git##### and append /usr/local/bin like so:> 这部分可选,如果以git用户身份登录的话,这部分也可以不配置 Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin## 4、GitLab shell> GitLab Shell is a ssh access and repository management application developed specifically for GitLab. > 这部分要登录git用户 #login git user su - git # Go to home directory cd /home/git # Clone gitlab shell git clone https://gitlab.com/gitlab-org/gitlab-shell.git -b v1.8.0 cd gitlab-shell cp config.yml.example config.yml # Edit config and replace gitlab_url # with something like 'http://domain.com/' vim config.yml # Do setup /usr/local/bin/ruby ./bin/install #更改gitlab-shell.log属主和组。我在后面检查的时候报了这个错误,如果检查的时候没有这个报错,那么就可以忽略这一步 Running /home/git/gitlab-shell/bin/check /usr/local/lib/ruby/2.0.0/logger.rb:594:in `initialize': Permission denied - /home/git/gitlab-shell/gitlab-shell.log (Errno::EACCES) from /usr/local/lib/ruby/2.0.0/logger.rb:594:in `open' from /usr/local/lib/ruby/2.0.0/logger.rb:594:in `open_logfile' from /usr/local/lib/ruby/2.0.0/logger.rb:551:in `initialize' from /usr/local/lib/ruby/2.0.0/logger.rb:318:in `new' from /usr/local/lib/ruby/2.0.0/logger.rb:318:in `initialize' from /home/git/gitlab-shell/lib/gitlab_logger.rb:15:in `new' from /home/git/gitlab-shell/lib/gitlab_logger.rb:15:in `<top (required)>' from /home/git/gitlab-shell/lib/gitlab_net.rb:6:in `require_relative' from /home/git/gitlab-shell/lib/gitlab_net.rb:6:in `<top (required)>' from /home/git/gitlab-shell/bin/check:4:in `require_relative' from /home/git/gitlab-shell/bin/check:4:in `<main>' gitlab-shell self-check failed #解决办法 su - chown git.git gitlab-shell.log## 5、Database### install MySQL##### Install mysql and enable the mysqld service to start on boot:> 这部分必须是在root用户权限才能安装 #root user yum install -y mysql-server mysql-devel chkconfig mysqld on service mysqld start##### Secure MySQL by entering a root password and say "Yes" to all questions: /usr/bin/mysql_secure_installation##### Create a new user and database for GitLab: # Login to MySQL mysql -u root -p # Type the database root password # Create a user for GitLab. (change supersecret to a real password) CREATE USER 'git'@'localhost' IDENTIFIED BY 'git连接mysql口令'; # Create the GitLab production database CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; # Grant the GitLab user necessary permissopns on the table. GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'git'@'localhost'; # Quit the database session \q##### Try connecting to the new database with the new user: mysql -u git -p -D gitlabhq_production # Type the password you replaced supersecret with earlier # Quit the database session \q ## 6、GitLab # We'll install GitLab into home directory of the user "git" su - git##### Clone the Source # Clone GitLab repository git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 6-5-stable gitlab##### configure itcd /home/git/gitlab
# Copy the example GitLab config 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 # # If you installed Git from source, change the git bin_path to /usr/local/bin/git vim config/gitlab.yml # Make sure GitLab can write to the log/ and tmp/ directories chown -R git log/ chown -R git tmp/ chmod -R u+rwX log/ chmod -R u+rwX tmp/# Create directory for satellites
mkdir /home/git/gitlab-satellites # Create directories for sockets/pids and make sure GitLab can write to them mkdir tmp/pids/ mkdir tmp/sockets/ chmod -R u+rwX tmp/pids/ chmod -R u+rwX tmp/sockets/ # Create public/uploads directory otherwise backup will fail mkdir public/uploads chmod -R u+rwX public/uploads # Copy the example Unicorn config cp config/unicorn.rb.example config/unicorn.rb # Enable cluster mode if you expect to have a high load instance # Ex. change amount of workers to 3 for 2GB RAM server vim config/unicorn.rb # Copy the example Rack attack config 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 git config --global user.name "GitLab" git config --global user.email "gitlab@localhost" git config --global core.autocrlf input##### Important Note: Make sure to edit both gitlab.yml and unicorn.rb to match your setup.##### Configure GitLab DB settings # For MySQL cp config/database.yml{.mysql,} # Make sure to update username/password in config/database.yml. # You only need to adapt the production settings (first part). # If you followed the database guide then please do as follows: # Change 'secure password' with the value you have given to $password # You can keep the double quotes around the password vim config/database.yml #配置应该看起来如下,username和password确保正确即可 # PRODUCTION # production: adapter: mysql2 encoding: utf8 reconnect: false database: gitlabhq_production pool: 10 username: git password: "刚才mysql中设置的口令" # host: localhost # socket: /tmp/mysql.sock #make sure git user can read & write only chmod o-rwx config/database.yml##### Install Gems #as root! gem install charlock_holmes --version '0.6.9.4' #as git user! su - git cd /home/git/gitlab # For MySQL (note, the option says "without ... postgres") bundle install --deployment --without development test postgres aws //这里将会为选定的数据库安装上相应的组件,由于亚马逊上的ruby源对于国内来说可能不太稳定,如果国内安装的话不妨考虑切换成淘宝的ruby源,会快很多##### Initialize Database and Activate Advanced Features su - gitcd gitlab/
bundle exec rake gitlab:setup RAILS_ENV=production # Type 'yes' to create the database tables. # When done you see 'Administrator account created:' #Type 'yes' to create the database. When done you see 'Administrator account created:' #这部分结尾会生成一个默认管理员账号和密码,第一次登录就是用这个登录 admin@local.host 5iveL!fe ##### Install Init Script #as root!!! #Download the init script (will be /etc/init.d/gitlab): su - wget -O /etc/init.d/gitlab https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn chmod +x /etc/init.d/gitlab chkconfig --add gitlab #Make GitLab start on boot: chkconfig gitlab on##### Set up logrotate#as root
cd /home/git/gitlab cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab##### Check Application Status> 可以查看到系统、Ruby、GitLab和GitLab Shell的版本和其他信息。 #Check if GitLab and its environment are configured correctly: bundle exec rake gitlab:env:info RAILS_ENV=production ##### Start your GitLab instance: #as rootservice gitlab start
##### 查看更加详细的信息 bundle exec rake gitlab:check RAILS_ENV=production Init script up-to-date? ... no Try fixing it: Redownload the init script For more information see: doc/install/installation.md in section "Install Init Script" Please fix the error above and rerun the checks. 但是官方给的解释就是可以忽略这个信息 //除了上面这个报错信息以外,其他的信息务必通过,直到没有问题为止##### Compile assets bundle exec rake assets:precompile RAILS_ENV=production ## 7、Configure the web server### nginx> You will need a new version of nginx otherwise you might encounter an issue like this. To do so, follow the instructions provided by the nginx wiki and then install nginx with: yum update yum -y install nginx chkconfig nginx on > Edit /etc/nginx/conf.d/gitlab and replace git.example.com with your FQDN. Make sure to read the comments in order to properly set up ssl. #Download an example site config: curl --output /etc/nginx/conf.d/gitlab https://raw.github.com/gitlabhq/gitlabhq/master/lib/support/nginx/gitlab #Make sure to edit the config file to match your setup: # **YOUR_SERVER_FQDN** to the fully-qualified # domain name of your host serving GitLab. Also, replace # the 'listen' line with the following: # listen 80 default_server; # e.g., listen 192.168.1.1:80; vim /etc/nginx/conf.d/gitlab cd /etc/nginx/conf.d mv default.conf default.conf.bak mv gitlab default.conf##### Add nginx user to git group: usermod -a -G git nginx chmod g+rx /home/git/ ##### Finally start nginx with: service nginx start ## 8、Configure the firewall> Poke an iptables hole so users can access the web server (http and https ports) and ssh. lokkit -s http -s https -s ssh> Restart the service for the changes to take effect: service iptables restart ## Double-check Application Status> 这部分都是官方的解释信息,上面也已经介绍过了。> To make sure you didn't miss anything run a more thorough check with: cd /home/git/gitlab sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production > Now, the output will complain that your init script is not up-to-date as follows: Init script up-to-date? ... no Try fixing it: Redownload the init script For more information see: doc/install/installation.md in section "Install Init Script" Please fix the error above and rerun the checks.> Do not mind about that error if you are sure that you have downloaded the up-to-date file from https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn and saved it to /etc/init.d/gitlab.> If all other items are green, then congratulations on successfully installing GitLab! However there are still a few steps left.## initial Login> Visit YOUR_SERVER in your web browser for your first GitLab login. The setup has created an admin account for you. You can use it to log in: admin@local.host 5iveL!fe##### Important Note: Please go over to your profile page and immediately change the password, so nobody can access your GitLab by using this login information later on.##### Enjoy!