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 && 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>create user </code><code>'gitlab'</code><code>@</code><code>'localhost'</code> <code>identified by </code><code>'123456'</code><code>;</code>
<code>sql>create database gitlabhq_production;</code>
<code>sql>grant all privileges on gitlabhq_production.* to</code><code>'gitlab'</code><code>@</code><code>'%'</code><code>;</code>
<code>sql>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&& 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} && 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,如需轉載請自行聯系原作者