a.登录数据库 # mysql -u root -p b. 为gitlab创建使用用户 > create user gitlab@'localhost' identified by '123456'; c.创建gitlaba使用的数据库 > CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; d.给予gitlab用户权限 > GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'localhost';
# su - git # cd gitlab/ # bundle exec rake gitlab:env:info RAILS_ENV=production # exit
可以查看到系统、Ruby、GitLab和GitLab Shell的版本和其他信息。
启动GitLab实例
1
# service gitlab start
查看应用更加详细的信息
1 2 3 4 5 6 7 8 9 10 11 12 13
# su - git # cd gitlab/ # bundle exec rake gitlab:check RAILS_ENV=production 这里会提示一个Init script up-to-date的错误,如下: —————————————————————————————————————————————————— Init script up-to-date? ... no Try fixing it: Redownload the init script For more information see: doc/install/installation.md in section "Install Init Script" Please fix the error above and rerun the checks. —————————————————————————————————————————————————— 查阅官方自带文档,说明此问题可忽略.
Nginx配置
配置Gitlab虚拟主机及SSL连接:
1 2 3 4
# cd /usr/local/nginx/conf/vhosts/ # vi gitlab-ssl.conf 注: 这里先感谢提供此脚本的极客,该脚本在原基础上稍作改动. 内容用红字标注的地方为需要自定义的地方.
## GitLab ## Contributors: randx, yin8086, sashkab, orkoden, axilleas ## App Version: 5.4 - 6.0 ## ## Modified from nginx http version ## Modified from http://blog.phusion.nl/2012/04/21/tutorial-setting-up-gitlab-on-debian-6/ ## ## Lines starting with two hashes (##) are comments containing information ## for configuration. One hash (#) comments are actual configuration parameters ## which you can comment/uncomment to your liking. ## ################################### ## SSL configuration ## ################################### ## ## Optimal configuration is taken from: ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html ## Make sure to read it and understand what each option does. ## ## [Optional] Generate a self-signed ssl certificate: ## mkdir /etc/nginx/ssl/ ## cd /etc/nginx/ssl/ ## sudo openssl req -newkey rsa:2048 -x509 -nodes -days 3560 -out gitlab.crt -keyout gitlab.key ## sudo chmod o-r gitlab.key ## ## Edit `gitlab-shell/config.yml`: ## 1) Set "gitlab_url" param in `gitlab-shell/config.yml` to `https://git.example.com` ## 2) Set "ca_file" to `/etc/nginx/ssl/gitlab.crt` ## 3) Set "self_signed_cert" to `true` ## Edit `gitlab/config/gitlab.yml`: ## 1) Define port for http "port: 443" ## 2) Enable https "https: true" ## 3) Update ssl for gravatar "ssl_url: https://secure.gravatar.com/avatar/%{hash}?s=%{size}&d=mm" ## ################################## ## CHUNKED TRANSFER ## ################################## ## ## It is a known issue that Git-over-HTTP requires chunked transfer encoding [0] ## which is not supported by Nginx < 1.3.9 [1]. As a result, pushing a large object ## with Git (i.e. a single large file) can lead to a 411 error. In theory you can get ## around this by tweaking this configuration file and either: ## - installing an old version of Nginx with the chunkin module [2] compiled in, or ## - using a newer version of Nginx. ## ## At the time of writing we do not know if either of these theoretical solutions works. As a workaround ## users can use Git over SSH to push large files. ## ## [0] https://git.kernel.org/cgit/git/git.git/tree/Documentation/technical/http-protocol.txt#n99 ## [1] https://github.com/agentzh/chunkin-nginx-module#status ## [2] https://github.com/agentzh/chunkin-nginx-module upstream gitlab { ## Uncomment if you have set up puma/unicorn to listen on a unix socket (recommended). server unix:/home/git/gitlab/tmp/sockets/gitlab.socket; ## Uncomment if puma/unicorn are configured to listen on a tcp port. ## Check the port number in /home/git/gitlab/config/{puma.rb/unicorn.rb} # server 127.0.0.1:8080; } ## This is a normal HTTP host which redirects all traffic to the HTTPS host. server { listen *:80; ## Replace git.example.com with your FQDN. server_name git.example.com; server_tokens off; ## This doesn't have to be a valid path since we are redirecting, ## you don't have to change it. root /nowhere; rewrite ^ https://$server_name$request_uri permanent; } server { listen 443 ssl; ## Replace git.example.com with your FQDN. server_name git.example.com; server_tokens off; root /home/git/gitlab/public; ## Increase this if you want to upload large attachments ## Or if you want to accept large git objects over http client_max_body_size 20m; ## Strong SSL Security ## https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html ssl on; ssl_certificate /usr/local/nginx/ssl/gitlab.crt; ssl_certificate_key /usr/local/nginx/ssl/gitlab.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_cache builtin:1000 shared:SSL:10m;
#add_header Strict-Transport-Security max-age=63072000; #add_header X-Frame-Options DENY; #add_header X-Content-Type-Options nosniff; ## Individual nginx logs for this GitLab vhost access_log /usr/local/nginx/logs/gitlab_access.log; error_log /usr/local/nginx/logs/gitlab_error.log; location / { ## Serve static files from defined root folder. ## @gitlab is a named location for the upstream fallback, see below. try_files $uri $uri/index.html $uri.html @gitlab; } ## If a file, which is not found in the root folder is requested, ## then the proxy pass the request to the upsteam (gitlab unicorn). location @gitlab { ## If you use https make sure you disable gzip compression ## to be safe against BREACH attack. gzip off; ## https://github.com/gitlabhq/gitlabhq/issues/694 ## Some requests take more than 30 seconds. 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-Ssl on; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:8080; } ## Enable gzip compression as per rails guide: ## http://guides.rubyonrails.org/asset_pipeline.html#gzip-compression location ~ ^/(assets)/ { root /home/git/gitlab/public; gzip_static on; # to serve pre-gzipped version expires max; add_header Cache-Control public; } error_page 502 /502.html; }
若报如下错误: —————————————————————————————————————— PTY allocation request failed on channel 1 /usr/bin/env: ruby: No such file or directory Connection to git.example.com closed. —————————————————————————————————————— 说明服务端ruby环境变量未在此目录/usr/bin/ruby 在服务器端加此软链即可:
# gitlab-ci-multi-runner register Running in system-mode. Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/): # https://git.xxx.com Please enter the gitlab-ci token for this runner: # v7YsuyhYduqSyxJi8fmW #在gitlib中寻找runner token Please enter the gitlab-ci description for this runner: # alpine 3.8 Please enter the gitlab-ci tags for this runner (comma separated): # qa Registering runner... succeeded runner=v7YsuyhY Please enter the executor: kubernetes, parallels, ssh, docker+machine, virtualbox, docker-ssh+machine, docker, docker-ssh, shell: # docker Please enter the default Docker image (e.g. ruby:2.1): # alpine:3.8 Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!