CentOS源码安装GitLab汉化版

GitLab官网无中文版网络找了很久才找到集成汉化补丁的源码库。从GitLab 8.0开始使用gitlab-git-http-server处理Web请求。该程序使用Go语言开发相对旧版GitLab需加装Go编译器可以从网上下载最新的Go SDK(可能需要翻墙)。

示例环境

软件 版本
6.7 x86_64
Git 2.6.2
Python 2.7.10
Ruby 2.2.3
Redis 3.0.5
MariaDB 10.0.21
GitLab 8.0.5汉化版
GitLab Shell 2.6.6
Node.js 4.2.1
Nginx 1.8.0
Go 1.5.1

一、修改Yum源为阿里云提高下载速度

1
2
mv  /etc/yum .repos.d /CentOS-Base .repo  /etc/yum .repos.d /CentOS-Base .repo.backup
wget -O  /etc/yum .repos.d /CentOS-Base .repo http: //mirrors .aliyun.com /repo/Centos-6 .repo

二、安装依赖软件包

1
yum -y  install  libicu-devel patch gcc-c++ readline-devel zlib-devel libffi-devel openssl-devel  make  autoconf automake libtool bison libxml2-devel libxslt-devel libyaml-devel zlib-devel openssl-devel cpio expat-devel gettext-devel curl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker cmake pcre-devel

三、安装Git

  • 查看当前git版本

1
git --version
  • 如果git版本小于1.7.10则先卸载

1
rpm -e --nodeps git
  • 下载最新git源码包并编译安装

1
2
3
4
5
6
7
8
9
cd  /App/src/
wget https: //www .kernel.org /pub/software/scm/git/git-2 .6.2. tar .xz 
tar  Jxf git-2.6.2. tar .xz
cd  git-2.6.2
. /configure  --prefix= /App/git
make  &&  make  install
 
# 修改环境变量
echo  'export PATH=/App/git/bin:$PATH'  >>  /etc/profile

四、安装Python

1
2
3
4
5
6
7
8
9
cd  /App/src/
wget https: //www .python.org /ftp/python/2 .7.10 /Python-2 .7.10. tar .xz
tar  Jxf Python-2.7.10. tar .xz
cd  Python-2.7.10
. /configure  --prefix= /App/python
make  &&  make  install
 
# 修改环境变量
echo  'export PATH=/App/python/bin:$PATH'  >>  /etc/profile

五、安装Ruby

1
2
3
4
5
6
7
8
9
cd  /App/src/
wget https: //cache .ruby-lang.org /pub/ruby/2 .2 /ruby-2 .2.3. tar .gz 
tar  zxf ruby-2.2.3. tar .gz
cd  ruby-2.2.3
. /configure  --prefix= /App/ruby  --disable- install -rdoc
make  &&  make  install
 
# 修改环境变量
echo  'export PATH=/App/ruby/bin:$PATH'  >>  /etc/profile
  • 退出shell重新登录后修改RubyGems 镜像为淘宝提高下载速度

1
2
gem sources --add https: //ruby .taobao.org/ --remove https: //rubygems .org/ 
gem  install  bundler --no-ri --no-rdoc

六、安装Go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cd  /App/src/
curl -O --progress https: //storage .googleapis.com /golang/go1 .5.1.linux-amd64. tar .gz 
tar  zxf go1.5.1.linux-amd64. tar .gz
mv  go  /App/
 
# 修改环境变量
cat  >>  /etc/profile  << EOF
export  GOROOT= /App/go
export  GOARCH=amd64
export  GOOS=linux
export  GOBIN=\$GOROOT /bin
export  GOPATH= /App/go
export  PATH=$GOBIN:\$PATH
EOF

七、安装Redis

1
2
3
4
5
6
7
8
cd  /App/src/
wget http: //download .redis.io /releases/redis-3 .0.5. tar .gz 
tar  zxf redis-3.0.5. tar .gz
cd  redis-3.0.5
make  PREFIX= /App/redis  install
 
# 修改环境变量
echo  'export PATH=/App/redis/bin:$PATH'  >>  /etc/profile
  • 添加Redis配置 /App/redis/redis.conf

1
2
3
4
5
6
7
8
9
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
51
52
daemonize yes
pidfile /App/redis/redis.pid
port 6379
tcp-backlog 60000
timeout 0
tcp-keepalive 60
loglevel warning
logfile "/App/redis/redis.log"
syslog-enabled no
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /App/redis
slave-serve-stale-data yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-ping-slave-period 10
repl-timeout 60
repl-disable-tcp-nodelay no
slave-priority 100
maxclients 60000
maxmemory-policy noeviction
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
  • 启动Redis

1
/App/redis/bin/redis-server  /App/redis/redis .conf

八、安装Node.js

1
2
3
4
5
6
7
cd  /App/src/
wget https: //nodejs .org /dist/v4 .2.1 /node-v4 .2.1-linux-x64. tar .xz
tar  Jxf node-v4.2.1-linux-x64. tar .xz
mv  node-v4.2.1-linux-x64  /App/nodejs
 
# 修改环境变量
echo  'export PATH=/App/nodejs/bin:$PATH'  >>  /etc/profile

九、安装MariaDB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cd  /App/src/
wget http: //mirrors .ctyun.cn /MariaDB/mariadb-10 .0.21 /source/mariadb-10 .0.21. tar .gz 
tar  zxf mariadb-10.0.21. tar .gz
cd  mariadb-10.0.21
cmake . \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX:PATH= /App/mariadb  \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EMBEDDED_SERVER:BOOL=OFF \
-DWITH_UNIT_TESTS:BOOL=OFF \
-LAH
 
make  &&  make  install
cp  support-files /mysql .server  /etc/init .d /mariadb
chmod  u+x  /etc/init .d /mariadb
 
# 修改环境变量
echo  'export PATH=/App/mariadb/bin:$PATH'  >>  /etc/profile
  • 修改MariaDB配置 /etc/my.cnf

1
2
3
4
5
6
7
8
9
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
port = 3306
socket = /tmp/mysql.sock
server-id = 1
log-bin = bin.log
log-error = error.log
pid-file = mysql.pid
long_query_time = 1
slow_query_log
slow_query_log_file = slow.log
binlog_cache_size = 4M
binlog_format = mixed
max_binlog_cache_size = 16M
max_binlog_size = 1G
expire_logs_days = 30
ft_min_word_len = 4
back_log = 4096
max_allowed_packet = 64M
max_connections = 65536
max_connect_errors = 100
join_buffer_size = 1M
read_buffer_size = 1M
read_rnd_buffer_size = 1M
sort_buffer_size = 1M
query_cache_size = 64M
table_open_cache = 2048
thread_cache_size = 256
max_heap_table_size = 64M
tmp_table_size = 64M
thread_stack = 192K
connect_timeout = 600
interactive_timeout = 600
wait_timeout = 600
thread_concurrency = 8
local-infile = 0
skip-show-database
skip-name-resolve
skip-external-locking
#*** MyISAM
key_buffer_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 32M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1
myisam_recover
#*** INNODB
innodb_buffer_pool_size = 4G
innodb_additional_mem_pool_size = 32M
innodb_data_file_path = ibdata:32M:autoextend
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 10
innodb_thread_concurrency = 16
#innodb_force_recovery = 4
#*** Replication Slave
#read-only
#skip-slave-start
relay-log = relay.log
log-slave-updates
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 512M
sort_buffer_size = 512M
read_buffer = 8M
write_buffer = 8M
[mysqlhotcopy]
interactive-timeout
[mysqld_safe]
open-files-limit = 60000
  • 初始化MariaDB

1
2
useradd  -s  /bin/false  -M mysql
/App/mariadb/scripts/mysql_install_db  --basedir= /App/mariadb  --datadir= /App/mariadb/data  --user=mysql
  • 启动MariaDB

1
/etc/init .d /mariadb  start
  • 登录MariaDB创建数据库并授权

1
mysql -uroot -p
1
2
3
4
5
CREATE  DATABASE  `gitlabhq_production`;
GRANT  SELECT INSERT UPDATE DELETE CREATE CREATE  TEMPORARY  TABLES,  DROP INDEX ALTER , LOCK TABLES  ON  `gitlabhq_production`.*  TO  'git' @ '127.0.0.1'  IDENTIFIED  BY  'g1T#453eri' ;
GRANT  SELECT INSERT UPDATE DELETE CREATE CREATE  TEMPORARY  TABLES,  DROP INDEX ALTER , LOCK TABLES  ON  `gitlabhq_production`.*  TO  'git' @ 'localhost'  IDENTIFIED  BY  'g1T#453eri' ;
FLUSH  PRIVILEGES ;
QUIT;

十、安装GitLab

1
useradd  --system -s  /bin/bash  --comment  'GitLab'  -m -d  /home/git  git
  • 修改git家目录权限否则运行报权限错误

1
chmod  755  /home/git
  • 切换至git用户

1
2
su  - git
git clone https: //gitlab .com /larryli/gitlab .git -b 8-0-zh gitlab
  • 配置GitLab

1
2
cd  gitlab/
cp  config /gitlab .yml.example config /gitlab .yml
  • 修改 gitlab.yml 配置将行host: localhost 修改为本机IP地址或者域名如为域名确保域名映射本机地址需修改/etc/hosts文件。

  • 修改 gitlab.yml 配置git路径行 bin_path: /usr/bin/git bin_path: /App/git/bin/git

  • 新建卫星目录拷贝示例文件

1
2
3
4
5
6
7
8
9
mkdir  -p  /home/git/gitlab-satellites
cp  config /secrets .yml.example config /secrets .yml
chmod  0600 config /secrets .yml
chmod  -R u+rwX,go-w log/
chmod  0750  /home/git/gitlab/public/uploads
cp  config /unicorn .rb.example config /unicorn .rb
cp  config /initializers/rack_attack .rb.example config /initializers/rack_attack .rb
git config --global core.autocrlf input
cp  config /resque .yml.example config /resque .yml
  • 修改Redis相关配置 config/resque.yml 文件 production: unix:/var/run/redis/redis.sock 为 production: redis://127.0.0.1:6379

  • 数据库配置

1
cp  config /database .yml.mysql config /database .yml
  • 修改 config/database.yml 前段 PRODUCTION 部分内容 password: "secure password" 修改为password: "PASSWORD"

1
chmod  o-rwx config /database .yml
1
bundle  install  --deployment --without development  test  postgres aws kerberos

十一、安装GitLab Shell

1
bundle  exec  rake gitlab:shell: install [v2.6.6] REDIS_URL=redis: //127 .0.0.1:6379 RAILS_ENV=production

十二、安装gitlab-git-http-server

1
2
3
4
5
cd  /home/git
git clone https: //gitlab .com /gitlab-org/gitlab-git-http-server .git
cd  gitlab-git-http-server
git checkout 0.3.0
make

十三、初始化数据库并激活高级功能

1
bundle  exec  rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=newpassword

十四、切换为root用户后拷贝服务脚本

1
2
exit
cp  /home/git/gitlab/lib/support/init .d /gitlab  /etc/init .d/

十五、root权限配置Logrotate

1
cp  /home/git/gitlab/lib/support/logrotate/gitlab  /etc/logrotate .d/

十六、检查应用状态

1
2
3
su  - git
cd  gitlab/
bundle  exec  rake gitlab: env :info RAILS_ENV=production

十七、编译静态文件

1
bundle  exec  rake assets:precompile RAILS_ENV=production

十八、切换至root用户安装Nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
exit
cd  /App/src/
wget http: //nginx .org /download/nginx-1 .8.0. tar .gz 
tar  zxf nginx-1.8.0. tar .gz
cd  nginx-1.8.0
. /configure  \
--prefix= /App/nginx  \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--without-http_auth_basic_module \
--without-http_autoindex_module \
--without-http_browser_module \
--without-http_empty_gif_module \
--without-http_geo_module \
--without-http_limit_conn_module \
--without-http_limit_req_module \
--without-http_map_module \
--without-http_memcached_module \
--without-http_referer_module \
--without-http_split_clients_module \
--without-http_ssi_module \
--without-http_userid_module \
--without-mail_imap_module \
--without-mail_pop3_module \
--without-mail_smtp_module \
--without-poll_module \
--without-select_module
 
make  &&  make  install
useradd  -s  /bin/false  nginx
  • 修改Nginx配置 /App/nginx/conf/nginx.conf

1
2
3
4
5
6
7
8
9
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
user  nginx nginx;
worker_processes  auto;
 
error_log  logs/error.log error;
 
pid        logs/nginx.pid;
worker_rlimit_nofile    65536;
 
events
{
    use epoll;
    accept_mutex off;
    worker_connections  65536;
}
 
http
{
    include       mime.types;
    default_type  text/html;
 
    charset UTF-8;
    server_names_hash_bucket_size  128;
    client_header_buffer_size      4k;
    large_client_header_buffers  4 32k;
    client_max_body_size            20m;
 
    open_file_cache max=65536  inactive=60s;
    open_file_cache_valid      80s;
    open_file_cache_min_uses   1;
 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  logs/access.log  main;
 
    sendfile    on;
    server_tokens off;
 
    keepalive_timeout  60;
 
    gzip  on;
    gzip_min_length 1k;
    gzip_buffers  4  64k;
    gzip_http_version  1.1;
    gzip_comp_level 2;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 
    upstream gitlab 
    {
        server unix:/home/git/gitlab/tmp/sockets/gitlab.socket fail_timeout=0;
    }
 
    upstream gitlab-git-http-server 
    {
        server unix:/home/git/gitlab/tmp/sockets/gitlab-git-http-server.socket fail_timeout=0;
    }
 
    server {
        listen      80;
        server_name _;
        root        /home/git/gitlab/public;
 
        location /
        {
            try_files $uri $uri/index.html $uri.html @gitlab;
        }
 
        location /uploads/
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto   $scheme;
            proxy_set_header    X-Frame-Options     SAMEORIGIN;
            proxy_pass http://gitlab;
        }
 
        location @gitlab
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto   $scheme;
            proxy_set_header    X-Frame-Options     SAMEORIGIN;
            proxy_pass http://gitlab;
        }
 
        location ~ [-\/\w\.]+\.git\/
        {
            proxy_read_timeout      300;
            proxy_connect_timeout   300;
            proxy_redirect          off;
            proxy_buffering off;
            proxy_set_header    Host                $http_host;
            proxy_set_header    X-Real-IP           $remote_addr;
            proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto   $scheme;
            proxy_pass http://gitlab-git-http-server;
        }
 
        location ~ ^/(assets)/
        {
            root /home/git/gitlab/public;
            gzip_static on;
            expires max;
            add_header Cache-Control public;
        }
 
        error_page 502 /502.html;
    }
}

十九、SMTP相关配置

  • 复制smtp示例配置

1
cp  /home/git/gitlab/config/initializers/smtp_settings .rb.sample  /home/git/gitlab/config/initializers/smtp_settings .rb

修改 smtp_settings.rb 将 enable_starttls_auto: true 修改为 enable_starttls_auto: false openssl_verify_mode: 'peer' 删除或添加 # 注释其余按照自己的邮箱正常配置即可。

二十、启动GitLab实例

1
/etc/init .d /gitlab  start

二十一、浏览器打开登录页面

CentOS源码安装GitLab汉化版

二十二、输入账号密码登录

CentOS源码安装GitLab汉化版

GitLab 的详细介绍请点这里
GitLab 的下载地址请点这里

猜你喜欢

转载自www.linuxidc.com/Linux/2015-10/124648.htm