CentOS源码安装GitLab汉化版


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

示例环境

软件 版本
CentOS 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 SELECTINSERTUPDATEDELETECREATECREATE TEMPORARY TABLES, DROPINDEXALTER, LOCK TABLES ON `gitlabhq_production`.* TO 'git'@'127.0.0.1' IDENTIFIED BY 'g1T#453eri'; GRANT SELECTINSERTUPDATEDELETECREATECREATE TEMPORARY TABLES, DROPINDEXALTER, 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

 

  • 修改 Gemfile 首行内容 source "https://rubygems.org"  修改为 source "https://ruby.taobao.org"

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汉化版

在 Ubuntu 12.04 上安装 GitLab

GitLab 5.3 升级注意事项

在 CentOS 上部署 GitLab (自托管的Git项目仓库)

在RHEL6/CentOS6/ScientificLinux6上安装GitLab 6.0.2

CentOS 6.5安装GitLab教程及相关问题解决

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

本文永久更新链接地址

相关内容