共计 13729 个字符,预计需要花费 35 分钟才能阅读完成。
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 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 |
修改 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 |
二十一、浏览器打开登录页面
二十二、输入账号密码登录
在 Ubuntu 12.04 上安装 GitLab http://www.linuxidc.com/Linux/2012-12/75249.htm
GitLab 5.3 升级注意事项 http://www.linuxidc.com/Linux/2013-06/86473.htm
在 CentOS 上部署 GitLab (自托管的 Git 项目仓库) http://www.linuxidc.com/Linux/2013-06/85754.htm
在 RHEL6/CentOS6/ScientificLinux6 上安装 GitLab 6.0.2 http://www.linuxidc.com/Linux/2014-03/97831.htm
CentOS 6.5 安装 GitLab 教程及相关问题解决 http://www.linuxidc.com/Linux/2014-05/101526.htm
GitLab 的详细介绍:请点这里
GitLab 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-10/124648.htm