天天看點

Gitlab代碼管理平台部署(CentOS6.7—gitlab7.2.12)

Gitlab需要以下系統與軟體環境:

Ruby (MRI) 2.1

Git 1.7.10+

Redis 2.4+

MySQL

由于系統的git,ruby環境一般版本比較低,是以需考慮更新。

1.更新git。

删除原系統的git:

1

<code>#rpm -e perl-Git-1.7.1-3.el6_4.1.noarch git-1.7.1-3.el6_4.1.x86_64</code>

  源碼包編譯安裝git:

2

3

4

5

<code>#tar -zxvf git-2.6.3.tar.gz</code>

<code>#cd git-2.6.3</code>

<code>#autoconf</code>

<code>#./configure</code>

<code>#make &amp;&amp; make install</code>

  2.更新ruby。

  删除原系統的ruby:

<code>#rpm -e ruby-1.8.7.374-4.el6_6.x86_64 ruby-libs-1.8.7.374-4.el6_6.x86_64</code>

  源碼包編譯安裝ruby:

<code>#tar -zxvf ruby-2.1.7.tar.gz</code>

<code>#cd ruby-2.1.7</code>

  3.安裝,啟動redis:

6

7

8

9

<code>#tar zxvf redis-3.0.5.tar.gz</code>

<code>#cd redis-3.0.5</code>

<code>#make install</code>

<code>#mkdir  -p /opt/apps/redis/bin</code>

<code>#mkdir  -p /opt/apps/redis/var</code>

<code>#mkdir  -p/opt/apps/redis/data</code>

<code>#mkdir  -p /opt/conf/redis</code>

<code>#cp  redis.conf  /opt/conf/redis</code>

<code>#cp /opt/src/redis-3.0.5/src/redis-* /opt/apps/redis/bin</code>

修改配置檔案,如下:

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

<code>#grep -v ^# /opt/conf/redis/redis.conf | grep -v ^$</code>

<code>daemonize </code><code>yes</code>

<code>pidfile </code><code>/opt/apps/redis/var/redis</code><code>.pid</code>

<code>port 6379</code>

<code>tcp-backlog 511</code>

<code>bind 192.168.1.236</code>

<code>unixsocket </code><code>/opt/apps/redis/var/redis</code><code>.sock</code>

<code>unixsocketperm 777</code>

<code>timeout 0</code>

<code>tcp-keepalive 0</code>

<code>loglevel notice</code>

<code>logfile </code><code>"/opt/logs/redis/redis.log"</code>

<code>databases 16</code>

<code>stop-writes-on-bgsave-error </code><code>yes</code>

<code>rdbcompression </code><code>yes</code>

<code>rdbchecksum </code><code>yes</code>

<code>dbfilename dump.rdb</code>

<code>dir</code> <code>/opt/apps/redis/var</code>

<code>slave-serve-stale-data </code><code>yes</code>

<code>slave-</code><code>read</code><code>-only </code><code>yes</code>

<code>repl-diskless-</code><code>sync</code> <code>no</code>

<code>repl-diskless-</code><code>sync</code><code>-delay 5</code>

<code>repl-disable-tcp-nodelay no</code>

<code>slave-priority 100</code>

<code>appendonly no</code>

<code>appendfilename </code><code>"appendonly.aof"</code>

<code>appendfsync everysec</code>

<code>no-appendfsync-on-rewrite no</code>

<code>auto-aof-rewrite-percentage 100</code>

<code>auto-aof-rewrite-min-size 64mb</code>

<code>aof-load-truncated </code><code>yes</code>

<code>lua-</code><code>time</code><code>-limit 5000</code>

<code>slowlog-log-slower-than 10000</code>

<code>slowlog-max-len 128</code>

<code>latency-monitor-threshold 0</code>

<code>notify-keyspace-events </code><code>""</code>

<code>hash</code><code>-max-ziplist-entries 512</code>

<code>hash</code><code>-max-ziplist-value 64</code>

<code>list-max-ziplist-entries 512</code>

<code>list-max-ziplist-value 64</code>

<code>set</code><code>-max-intset-entries 512</code>

<code>zset-max-ziplist-entries 128</code>

<code>zset-max-ziplist-value 64</code>

<code>hll-sparse-max-bytes 3000</code>

<code>activerehashing </code><code>yes</code>

<code>client-output-buffer-limit normal 0 0 0</code>

<code>client-output-buffer-limit slave 256mb 64mb 60</code>

<code>client-output-buffer-limit pubsub 32mb 8mb 60</code>

<code>hz 10</code>

<code>aof-rewrite-incremental-fsync </code><code>yes</code>

  啟動redis:

<code>/opt/apps/redis/bin/redis-server</code> <code>/opt/conf/redis/redis</code><code>.conf</code>

  4.安裝,配置mysql(不詳解)

  登入mysql,建立gitlab使用者與庫:

<code>sql&gt;create user </code><code>'gitlab'</code><code>@</code><code>'localhost'</code> <code>identified by </code><code>'123456'</code><code>;</code>

<code>sql&gt;create database gitlabhq_production;</code>

<code>sql&gt;grant all privileges on gitlabhq_production.* to</code><code>'gitlab'</code><code>@</code><code>'%'</code><code>;</code>

<code>sql&gt;flush privileges;</code>

  5.安裝bundler:

  修改gem源:(速度更快)

<code>gem sources --remove https:</code><code>//rubygems</code><code>.org/</code>

<code>gem sources -a https:</code><code>//ruby</code><code>.taobao.org/</code>

<code>gem </code><code>install</code> <code>bundler --no-ri --no-rdoc</code>

  安裝相關依賴包:

<code>#yum -y install readline readline-develncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-develexpat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffilibffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-develsystem-config-firewall-tui redis sudo wget crontabs logwatch logrotateperl-Time-HiRes git cmake libcom_err-devel libcom_err-devel mysql-devel libicu-devel.x86_64 patch</code>

  建立git使用者:

<code>#adduser --system --shell /bin/bash --comment 'Gitlab' --create-home --home-dir /home/git/ git</code>

<code>#chmod 775 /home/git</code>

  上傳gitlab項目源碼包至/home/git,解壓:

<code>#su - git</code>

<code>$</code><code>tar</code> <code>-zxvf gitlabhq-7.12.2.</code><code>tar</code><code>.gz</code>

<code>$</code><code>mv</code>  <code>gitlabhq-7.12.2 gitlab</code>

  安裝gitlab所需的元件:

<code>$</code><code>cd</code> <code>gitlab</code>

<code>$bundle </code><code>install</code> <code>--deployment --without development </code><code>test</code> <code>postgres awsKerberos</code>

  建立gitlab配置檔案,并修改如下配置:

<code>$</code><code>cp</code> <code>config</code><code>/gitlab</code><code>.yml.example config</code><code>/gitlab</code><code>.yml</code>

<code>$</code><code>vi</code> <code>config</code><code>/gitlabyml</code>

<code>gitlab:</code>

<code>host: 192.168.1.236</code>

<code>port: 443</code>

<code>https: </code><code>true</code>

<code>backup:</code>

<code>    </code><code>path: </code><code>"/opt/backups/gitlab"</code>

  資料庫連接配接配置:

<code>$</code><code>cp</code> <code>config</code><code>/database</code><code>.yml.mysql config</code><code>/database</code><code>.yml</code>

<code>$</code><code>vi</code> <code>config</code><code>/database</code><code>.yml</code>

<code>production:</code>

<code>  </code><code>adapter: mysql2</code>

<code>  </code><code>encoding: utf8</code>

<code>  </code><code>collation: utf8_general_ci</code>

<code>  </code><code>reconnect: </code><code>false</code>

<code>  </code><code>database:gitlabhq_production</code>

<code>  </code><code>pool: 10</code>

<code>  </code><code>username: gitlab</code>

<code>  </code><code>password: </code><code>"123456"</code>

<code>  </code><code>host: localhost</code>

<code>  </code><code>socket: </code><code>/tmp/mysql</code><code>.sock</code>

  redis連接配接配置:

<code>$</code><code>cp</code> <code>config</code><code>/resque</code><code>.yml.example config</code><code>/resque</code><code>.yml</code>

<code>$</code><code>vi</code> <code>config</code><code>/resque</code><code>.yml</code>

<code>production: unix:</code><code>/opt/apps/redis/var/redis</code><code>.sock</code>

  其他檔案:

<code>$</code><code>cp</code> <code>config</code><code>/unicorn</code><code>.rb.example config</code><code>/unicorn</code><code>.rb</code>

<code>$</code><code>cp</code> <code>config</code><code>/initializers/rack_attack</code><code>.rb.example config</code><code>/initializers/rack_attack</code><code>.rb</code>

<code>$</code><code>cp</code> <code>config</code><code>/initializers/smtp_settings</code><code>.rb.sample config</code><code>/initializers/smtp_settings</code><code>.rb</code>

  配置相關檔案權限:

<code>$</code><code>chmod</code> <code>-R u+rwX,go-w log/</code>

<code>$</code><code>chmod</code> <code>-R u+rwX tmp/</code>

<code>$</code><code>chmod</code> <code>-R u+rwX tmp</code><code>/pids/</code>

<code>$</code><code>chmod</code> <code>-R u+rwX tmp</code><code>/sockets/</code>

<code>$</code><code>mkdir</code> <code>public</code><code>/uploads</code>

<code>$</code><code>chmod</code> <code>-R u+rwX public</code><code>/uploads</code>

<code>$</code><code>chmod</code> <code>-R u+rwX builds/</code>

<code>$</code><code>chmod</code> <code>-R u+rwX shared</code><code>/artifacts/</code>

  安裝Gitlab-shell:

<code>$bundle </code><code>exec</code> <code>rake gitlab:shell:</code><code>install</code> <code>REDIS_URL=unix:</code><code>/var/run/redis/redis</code><code>.sock RAILS_ENV=production</code>

<code>$</code><code>cd</code> <code>/home/git/gitlab-shell</code>

<code>$</code><code>vi</code> <code>config.yml</code>

<code>---</code>

<code>user: git</code>

<code>gitlab_url: https:</code><code>//192</code><code>.168.1.236/</code>

<code>http_settings:</code>

<code>  </code><code>self_signed_cert:</code><code>true</code>

<code>repos_path:</code><code>"/home/git/repositories/"</code>

<code>auth_file:</code><code>"/home/git/.ssh/authorized_keys"</code>

<code>redis:</code>

<code>  </code><code>bin: </code><code>"/opt/apps/redis//bin/redis-cli"</code>

<code>  </code><code>namespace: resque:gitlab</code>

<code>  </code><code>socket: </code><code>"/opt/apps/redis/var/redis.sock"</code>

<code>log_level:INFO</code>

<code>audit_usernames:</code><code>false</code>

  建立gitlab-satellites:

<code>$</code><code>mkdir</code> <code>-p </code><code>/home/git/gitlab-satellites</code>

  初始化gitlab,建立mysql庫表與倉庫目錄:

<code>$bundle </code><code>exec</code> <code>rake gitlab:setup RAILS_ENV=production</code>

  若運作沒有報錯,則會生成初始root使用者如下:

  login.........root

  password......5iveL!fe

 安裝gitlab網頁樣式:

<code>$bundle </code><code>exec</code> <code>rake assets:precompile RAILS_ENV=production RAILS_RELATIVE_URL_ROOT=</code><code>/gitlab</code>

  配置gitlab系統服務:(root使用者下)

<code>#cd /home/git/gitlab   </code>

<code>#cp lib/support/init.d/gitlab /etc/init.d/   </code>

<code>#chmod +x /etc/init.d/gitlab</code>

<code>#chkconfig --add gitlab</code>

  配置lograte:

<code>cp</code> <code>lib</code><code>/support/logrotate/gitlab</code> <code>/etc/logrotate</code><code>.d</code><code>/gitlab</code>

 安裝nginx:

<code>#yum -y install yum -y install pcre*</code>

<code>#tar -zxvfnginx-1.8.0.tar.gz</code>

<code>#cd nginx-1.8.0</code>

<code>#./configure--prefix=/opt/apps/nginx --conf-path=/opt/conf/nginx/nginx.conf--error-log-path=/opt/logs/nginx/error.log--http-log-path=/opt/logs/nginx/access.log --with-http_stub_status_module--with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module--with-http_realip_module--http-client-body-temp-path=/opt/apps/nginx/client_body_temp--http-fastcgi-temp-path=/opt/apps/nginx/fastcgi_temp--http-proxy-temp-path=/opt/apps/nginx/proxy_temp--http-uwsgi-temp-path=/opt/apps/nginx/uwsgi_temp--http-scgi-temp-path=/opt/apps/nginx/scgi_temp</code>

<code>#make&amp;&amp; make install</code>

  配置gitlab web服務(https模式),修改如下配置:

<code>#vi /opt/conf/nginx/nginx.conf</code>

<code>includevhost/*.conf;</code>

<code>#cp /home/git/gitlab/lib/support/nginx/gitlab-ssl/opt/conf/nginx/vhost/gitlab.conf</code>

<code>#vi /opt/conf/nginx/vhost/gitlab.conf(修改相關端口的servername)</code>

<code>server_name 192.168.1.236;</code>

  開啟nginx和gitlab服務:

<code>#/opt/apps/nginx/sbin/nginx -c /opt/conf/nginx/nginx.conf</code>

<code>#service gitlab start</code>

  使用指令檢測gitlab的項目:

<code>$bundle </code><code>exec</code> <code>rake gitlab:check RAILS_ENV=production</code>

  檢測通過後就可以用浏覽器通路gitlab了:

<a href="http://s2.51cto.com/wyfs02/M00/77/A2/wKioL1Zqc3HiulO9AADq-bq8CnY626.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M01/77/A3/wKiom1Zqc3GgWP0hAAC9PGKOiN4161.png" target="_blank"></a>

  備份:bundle exec rakegitlab:backup:create RAILS_ENV=production

  恢複:bundle exec rakegitlab:backup:restore RAILS_ENV=production

  以上是gitlab自帶的備份工具指令,可備份mysql庫表,gitlab倉庫,ssh驗證檔案等一系列gitlab所需的檔案。

  這裡提供備份腳本給大家參考:

<code>#!/bin/bash</code>

<code># Author: chenminghui</code>

<code># Email: [email protected]</code>

<code># Date: 2015-12-09</code>

<code>###set ENV###</code>

<code>GITLAB_HOME=</code><code>/home/git/gitlab</code>

<code>BAK_DIR=</code><code>/opt/backups/gitlab</code>

<code>RAILS_ENV=production</code>

<code> </code> 

<code>backup_gitlab ()</code>

<code>{</code>

<code>su</code> <code>- git -c </code><code>"cd${GITLAB_HOME} &amp;&amp; bundle exec rake gitlab:backup:createRAILS_ENV=${RAILS_ENV}"</code>

<code>sleep</code> <code>3</code>

<code>RETVAL=$?</code>

<code>if</code> <code>[ $RETVAL == 0 ];</code><code>then</code>

<code>        </code><code>echo</code> <code>"The GitLab backupedsuccess.."</code>

<code>else</code>

<code>        </code><code>echo</code> <code>"Backuk failure!!"</code>

<code>fi</code>

<code>}</code>

<code>backup_gitlab</code>

<code>#Delete backup files beforesysdate-30 days.</code>

<code>find</code> <code>${BAK_DIR} -</code><code>type</code> <code>f-mtime +30 -</code><code>exec</code> <code>rm</code> <code>-rf {} \;</code>

<code>##restore command if youneed..</code>

<code>##bundle exec rakegitlab:backup:restore RAILS_ENV=production BACKUP=timestamp_of_backup</code>

本文轉自 icenycmh 51CTO部落格,原文連結:http://blog.51cto.com/icenycmh/1722029,如需轉載請自行聯系原作者