GitLab 是由GitLab Inc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。
安装要求 系统为Ubuntu 20,内存至少4G,建议增加Swap交换分区解决内存不足等问题。
1.安装软件包及依赖 安装vim编辑器并设置为默认编辑器
1 2 apt-get install -y vim update-alternatives --set editor /usr/bin/vim.basic
安装依赖
1 apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libre2-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate rsync python-docutils pkg-config cmake runit-systemd
从GitLab13.6起,需要安装Gitaly提供的Git。
1 2 3 4 apt-get install -y libcurl4-openssl-dev libexpat1-dev gettext libz-dev libssl-dev libpcre2-dev build-essential git-core git clone https://gitlab.com/gitlab-org/gitaly.git -b <X-Y-stable> /tmp/gitaly cd /tmp/gitalymake git GIT_PREFIX=/usr/local
为了使自定义图标能够正常工作,需要安装GraphicsMagick。
1 apt-get install -y graphicsmagick
为了接收邮件通知,需要安装postfix。
1 apt-get install -y postfix
2.Ruby 运行GitLab需要使用Ruby,需要安装Ruby。
1 2 3 4 5 6 7 8 9 mkdir /tmp/ruby && cd /tmp/ruby curl --remote-name --progress-bar "https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.4.tar.gz" echo '3043099089608859fc8cce7f9fdccaa1f53a462457e3838ec3b25a7d609fbc5b ruby-2.7.4.tar.gz' | sha256sum -c - && tar xzf ruby-2.7.4.tar.gzcd ruby-2.7.4./configure --disable -install-rdoc --enable -shared make make install
3.Go GitLab有几个用Go编写的守护程序。要安装GitLab,需要一个Go编译器。
1 2 3 4 5 6 7 rm -rf /usr/local /go curl --remote-name --progress-bar "https://golang.org/dl/go1.16.9.linux-amd64.tar.gz" echo 'd2c095c95f63c2a3ef961000e0ecb9d81d5c68b6ece176e2a8a2db82dc02931c' go1.16.9.linux-amd64.tar.gz' | shasum -a256 -c - && sudo tar -C /usr/local -xzf go1.15.12.linux-amd64.tar.gz ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/ rm go1.16.9.linux-amd64.tar.gz
4.Node GitLab需要使用Node来编译JavaScript,并使用Yarn来管理JavaScript依赖。
1 2 3 4 curl --location "https://deb.nodesource.com/setup_14.x" | sudo bash - apt-get install -y nodejs npm install --global yarn
5.添加GitLab用户 为GitLab创建一个git 用户。
1 adduser --disabled-login --gecos 'GitLab' git
6.数据库 创建PostgreSQL数据库
1 apt-get install -y postgresql postgresql-client libpq-dev postgresql-contrib
启动PostgreSQL数据库并查看状态
1 2 service postgresql start service postgresql status
为GitLab创建数据库用户
1 sudo -u postgres psql -d template1 -c "CREATE USER git CREATEDB;"
创建pg_trgm 扩展
1 sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
创建btree_gist 扩展
1 sudo -u postgres psql -d template1 -c "CREATE EXTENSION IF NOT EXISTS btree_gist;"
创建数据库并赋予用户权限
1 sudo -u postgres psql -d template1 -c "CREATE DATABASE gitlabhq_production OWNER git;"
尝试使用git用户连接数据库
1 sudo -u git -H psql -d gitlabhq_production
检查扩展pg_trgm 是否生效
1 2 3 4 SELECT true AS enabled FROM pg_available_extensions WHERE name = 'pg_trgm' AND installed_version IS NOT NULL;
如果扩展生效,则显示以下内容
1 2 3 4 enabled --------- t (1 row)
检查扩展btree_gist 是否生效
1 2 3 4 SELECT true AS enabled FROM pg_available_extensions WHERE name = 'btress_gist' AND installed_version IS NOT NULL;
如果扩展生效,则显示以下内容
1 2 3 4 enabled --------- t (1 row)
退出数据库
修改Postgresql的配置文件允许机器访问
1 2 3 4 5 6 7 8 9 vim /etc/postgresql/12/main/pg_hba.conf local all all trusthost all all 127.0.0.1/32 trust host all all ::1/128 trust
重启PostgreSQL服务。
7.Redis GitLab需要安装Redis。
1 apt-get install redis-server
配置Redis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cp /etc/redis/redis.conf /etc/redis/redis.conf.orig sed 's/^port .*/port 0/' /etc/redis/redis.conf.orig | tee /etc/redis/redis.conf echo 'unixsocket /var/run/redis/redis.sock' | tee -a /etc/redis/redis.confecho 'unixsocketperm 770' | tee -a /etc/redis/redis.confmkdir -p /var/run/redis chown redis:redis /var/run/redis chmod 755 /var/run/redis if [ -d /etc/tmpfiles.d ]; then echo 'd /var/run/redis 0755 redis redis 10d -' | tee -a /etc/tmpfiles.d/redis.conf fi service redis-server restart usermod -aG redis git
8.GitLab
下载GitLab源码
1 sudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-foss.git -b 14-3-stable gitlab
配置GitLab
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 cd /home/git/gitlabsudo -u git -H cp config/gitlab.yml.example config/gitlab.yml sudo -u git -H editor config/gitlab.yml gitlab: host: domain.name port: 443 https: true ... git: bin_path: /usr/local /bin/git sudo -u git -H cp config/secrets.yml.example config/secrets.yml sudo -u git -H chmod 0600 config/secrets.yml chown -R git log / chown -R git tmp/ chmod -R u+rwX,go-w log / chmod -R u+rwX tmp/ chmod -R u+rwX tmp/pids/ chmod -R u+rwX tmp/sockets/ sudo -u git -H mkdir -p public/uploads/ chmod 0700 public/uploads chmod -R u+rwX builds/ chmod -R u+rwX shared/artifacts/ chmod -R ug+rwX shared/pages/ sudo -u git -H cp config/puma.rb.example config/puma.rb sudo -u git -H git config --global core.autocrlf input sudo -u git -H git config --global gc.auto 0 sudo -u git -H git config --global repack.writeBitmaps true sudo -u git -H git config --global receive.advertisePushOptions true sudo -u git -H git config --global core.fsyncObjectFiles true sudo -u git -H cp config/resque.yml.example config/resque.yml
配置GitLab数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 sudo -u git cp config/database.yml.postgresql config/database.yml sudo -u git -H editor config/database.yml production: adapter: postgresql encoding: unicode database: gitlabhq_production username: git password: "yourpassword" host: localhost sudo -u git -H chmod o-rwx config/database.yml
安装Gems,确保bundle的版本大于等于1.5.2小于2.X。
1 2 3 sudo -u git -H bundle config set --local deployment 'true' sudo -u git -H bundle config set --local without 'development test mysql aws kerberos' sudo -u git -H bundle install
安装GitLab Shell
1 sudo -u git -H bundle exec rake gitlab:shell:install RAILS_ENV=production
安装GitLab Workhorse
1 sudo -u git -H bundle exec rake "gitlab:workhorse:install[/home/git/gitlab-workhorse]" RAILS_ENV=production
安装GitLab Pages
1 2 3 4 5 cd /home/gitsudo -u git -H git clone https://gitlab.com/gitlab-org/gitlab-pages.git cd gitlab-pagessudo -u git -H git checkout v$(</home/git/gitlab/GITLAB_PAGES_VERSION) sudo -u git -H make
安装Gitaly
1 2 3 4 5 cd /home/git/gitlabsudo -u git -H bundle exec rake "gitlab:gitaly:install[/home/git/gitaly,/home/git/repositories]" RAILS_ENV=production chmod 0700 /home/git/gitlab/tmp/sockets/private chown git /home/git/gitlab/tmp/sockets/private
运行Gitaly
1 2 3 4 gitlab_path=/home/git/gitlab gitaly_path=/home/git/gitaly sudo -u git -H sh -c "$gitlab_path /bin/daemon_with_pidfile $gitlab_path /tmp/pids/gitaly.pid $gitaly_path /gitaly $gitaly_path /config.toml >> $gitlab_path /log/gitaly.log 2>&1 &"
初始化数据库并激活高级功能
1 2 3 4 cd /home/git/gitlabsudo -u git -H bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=yourpassword GITLAB_ROOT_EMAIL=youremail
安装启动脚本
1 2 3 4 cp lib/support/init.d/gitlab /etc/init.d/gitlab sysv-rc-conf gitlab on
设置Logrotate
1 cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
检查GitLab及其环境是否配置正确
1 sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production
编译GetText PO
1 sudo -u git -H bundle exec rake gettext:compile RAILS_ENV=production
编译静态文件
1 2 sudo -u git -H yarn install --production --pure-lockfile sudo -u git -H bundle exec rake gitlab:assets:compile RAILS_ENV=production NODE_ENV=production NODE_OPTIONS="--max_old_space_size=4096"
启动GitLab
1 2 3 service gitlab start /etc/init.d/gitlab restart
9.NGINX NGINX是GitLab官方支持的Web服务器。安装NGINX并将GitLab的配置文件复制到NGINX的配置目录里,编辑相应文件。
1 2 3 4 5 cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab cp lib/support/nginx/gitlab-ssl /etc/nginx/sites-available/gitlab-ssl
测试并重启NGINX。
安装完成 检查GitLab状态
1 sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
如果所有项目都是绿色,安装成功。
后记 打开ip 或域名 访问GitLab服务,进行后续配置。
其它问题可查询官方文档 。