Gitlab 安装配置
准备工作
二进制文件安装Gitlab的默认安装目录在/var/opt/gitlab和/opt/gitlab,日志目录在/var/log/gitlab/,不方便维护;
为了方便管理维护,在/data/下创建映射目录,分别映射到/var/opt/gitlab、/opt/gitlab、/var/log/gitlab/。
=== 创建映射目录
> mkdir /data/gitlab/{opt,var,logs,git-data,backups} -p
> mkdir /data/gitlab/var/opt/gitlab -p
> mkdir /data/gitlab/opt/gitlab -p
> mkdir /data/gitlab/logs/gitlab -p
> ln -s /data/gitlab/var/opt/gitlab /var/opt/gitlab
> ln -s /data/gitlab/opt/gitlab /opt/gitlab
> ln -s /data/gitlab/logs/gitlab /var/log/gitlab
安装
=== CentOS
> rpm -ivh gitlab-ce-9.2.2-ce.0.el6.x86_64.rpm
=== Ubuntu
> dpkg -i gitlab-ce_9.2.2-ce.0_amd64.deb
配置gitlab
> vim /etc/gitlab/gitlab.rb
### 访问地址
external_url 'https://git.ennew.alpha'
### LDAP
gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS'
main:
label: 'LDAP登录'
host: 'xxx.xxx.com' // ldap地址
port: 389 // ldap端口
uid: 'uid'
method: 'plain'
bind_dn: 'uid=ygeg,cn=users,dc=enn,dc=com' // ldap管理账号
password: 'Passw0rd' // ldap管理账号密码
verify_certificates: true
active_directory: false
allow_username_or_email_login: true
lowercase_usernames: false
block_auto_created_users: false
base: 'cn=users,dc=enn,dc=com'
user_filter: ''
EOS
### Backup Settings
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/data/gitlab/backups" // 备份路径
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800
### git-data Dir Setting
ruby git_data_dir "/data/gitlab/git-data"
### HTTPS Setting
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
生成秘钥的命令
> openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/gitlab/ssl/server.key -out /etc/gitlab/ssl/server.crt
常用命令
### 重新加载配置
gitlab-ctl reconfigure
### 服务管理
gitlab-ctl start/stop/status/restart
### 备份
gitlab-rake gitlab:backup:create
### 恢复
gitlab-rake gitlab:backup:restore BACKUP=1537672395_2018_09_23_9.2.2
Gitlab 配置使用外部数据源
1、配置PostgreSQL数据源
### PostgreSQL 配置Gitlab数据库授权
> su - postgres
> -bash-4.1$ psql -U postgres
psql (10.12)
输入 "help" 来获取帮助信息.
> postgres=# CREATE USER gitlab_user WITH PASSWORD 'gitlab_passwd';
> postgres=# GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production TO gitlab_user;
### 修改Gitlab配置文件
> vim /etc/gitlab/gitlab.rb
......
postgresql['enable'] = false
gitlab_rails['db_adapter'] = "postgresql"
gitlab_rails['db_encoding'] = "unicode"
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_pool'] = 100
gitlab_rails['db_username'] = "username"
gitlab_rails['db_password'] = "password"
gitlab_rails['db_host'] = "db_host_ip"
gitlab_rails['db_port'] = 5432
gitlab_rails['db_prepared_statements'] = true
gitlab_rails['db_statements_limit'] = 1000
......
> gitlab-ctl reconfigure
> gitlab-ctl restart
2、配置MySQL数据源
### MySQL 配置Gitlab数据库授权
> CREATE DATABASE gitlab;
> GRANT ALL ON gitlab.* TO 'gitlab_user'@'gitlab_host_ip' IDENTIFIED BY 'gitlab_password';
### 更换 rubygem 安装源
> /opt/gitlab/embedded/bin/gem sources --remove https://rubygems.org/
> /opt/gitlab/embedded/bin/gem sources -a https://gems.ruby-china.com
> sed -i 's#rubygems.org#gems.ruby-china.com#g' /opt/gitlab/embedded/service/gitlab-rails/Gemfile
### 安装依赖
> yum install -y mysql-devel gcc-c++
> cd /opt/gitlab/embedded/service/gitlab-rails/ # Gemfile 所在目录
> /opt/gitlab/embedded/bin/bundle install
### 修改依赖数据源
> cd /opt/gitlab/embedded/service/gitlab-rails/
> vim .bundle/config
---
BUNDLE_RETRY: "5"
BUNDLE_JOBS: "9"
BUNDLE_WITHOUT: "development:test:postgres" # mysql 改成 postgres
### Gem安装数据源 mysql2
> /opt/gitlab/embedded/bin/gem install mysql2 -v '0.3.20'
### 修改Gitlab 配置文件
> vim /etc/gitlab/gitlab.rb
......
postgresql['enable'] = false
gitlab_rails['db_adapter'] = "mysql2"
gitlab_rails['db_encoding'] = "utf8"
gitlab_rails['db_database'] = "gitlab"
gitlab_rails['db_username'] = "gitlab_user"
gitlab_rails['db_password'] = 'gitlab_password'
gitlab_rails['db_host'] = 'db_host_ip'
gitlab_rails['db_port'] = '3306'
......
### 重新加载配置
> gitlab-ctl reconfigure
> gitlab-ctl restart