注:相关软件不要版本太低尽量较新 1、
安装git
如果已安装但是版本过低需要卸载旧版本 Yum remove git 使用源码编译安装 git Tar –zxvf git-2.8.1.tar.gz Cd git-2.8.1 ./configure
Make prefix=/usr/local/ all # 安装到/usr/local/bin make prefix=/usr/local install # 验证git版本号 git --version #查看git安装路径 which git 2、
添加系统用户
此用户是管理运行gitlab的用户:git adduser -c 'Gitlab' -s /bin/bash git # 修改git用户的环境变量PATH, 以root用户运行 visudo
# 找到下面一行 Defaults secure_path =
/sbin:/bin:/usr/sbin:/usr/bin #
修
改
为
Defaults
secure_path
=
/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin: 3、
安装ruby
如果系统存在旧的ruby 先卸载 yum remove ruby 下载ruby源码安装 ruby-2.3.1.zip unzip ruby-2.3.1.zip cd ruby-2.3.1
./configure --disable-install-rdoc make && make install
国内使用淘宝的ruby的gem 和bundler Gem
sources
--add
https://ruby.taobao.org/
--remove
https://rubygems.org/
gem sources –l #查看是否已更改为淘宝的源 https://ruby.taobao.org/ 安装bundle包:
gem install bundler --no-ri --no-rdoc # 修改bundler的源为淘宝
bundle config mirror.https://rubygems.org https://ruby.taobao.org/
4、 安装go
Tar –zxvf go1.7rc2.linux-amd64.tar.gz Cd go
Cp go /usr/local/go
ln -sf /usr/local/go/bin/{go,godoc,gofmt} /usr/local/bin/
go version #查看版本 go version go1.7rc2 linux/amd64 5、
安装数据库MySQL
本环节忽略可查看共享里面关于centos7 安装mysql数据库 建立MySQL数据库及用户 创建数据库、数据库用户和并授权 mysql -u root –p
mysql> CREATE USER 'git'@'localhost' IDENTIFIED BY 'git@gitlab'; mysql> CREATE DATABASE IF NOT EXISTS `gitlab` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
mysql> GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlab `.* TO 'git'@'localhost'; 测试能否成功登陆
Msyql –ugit –pgit@gitlab –D gitlab 6、
安装redis
添加redis用户和组
groupadd redis && useradd -g redis redis -s /sbin/nologin
编译安装redis
Tar –zxvf redis-3.2.1.tar.gz Cd redis-3.2.1 Make
make PREFIX=/usr/local/redis install cp redis.conf /usr/local/redis 至此,编译安装完毕。 Cd /usr/local/redis Vi redis.conf
修改配置文件,将其中的\"daemonize no\"行改为\"daemonize yes\",让其在后台运行 修改redis配置:
# 把'post'设置为0以禁止监听TCP端口
sed –I 's/^port .*/port 0/' /usr/local/redis/redis.conf # 让redis以socket方式启动 echo
'unixsocket
/var/run/redis/redis.sock'
/usr/local/redis/redis.conf # 启动守护进程
sed -i 's/daemonize no/daemonize yes/g' /usr/local/redis/redis.conf
# 创建存放socket的目录 mkdir /var/run/redis
sudo chown redis:redis /var/run/redis sudo chmod 755 /var/run/redis echo
'd
/var/run/redis
0755
redis
redis
10d
-'
/etc/tmpfiles.d/redis.conf
# 把git用户加入redis组 sudo usermod -aG redis git # 下载redis init 脚本 $
curl
-L
http://packages.gitlab.cc/install/init-script/redis/cenots6/redis-server -o /etc/init.d/redis-server $ chmod +x /etc/init.d/redis-server
Service redis-server start Chkconfig redis-server on 7、
安装gitlab
cd /home/git 克隆gitlab源码
sudo -u git -H git clone https://gitlab.com/larryli/gitlab.git -b 8-8-zh gitlab
配置GitLab # 进入gitlab目录 cd /home/git/gitlab
# 复制gitlab.yml(Gitlab的主配置文件) cp config/gitlab.yml.example config/gitlab.yml # 修改gitlab.yml vim config/gitlab.yml
####修改第32行 host: localhost为 host: 你的域名或者ip ####修改第435行 bin_path: /usr/bin/git 为bin_path: /usr/local/bin/git # 复制 secrets 文件
cp config/secrets.yml.example config/secrets.yml chmod 0600 config/secrets.yml # 修改 log/ 和 tmp/ 文件夹权限 sudo chown -R git log/ sudo chown -R git tmp/ sudo chmod -R u+rwX,go-w log/ sudo chmod -R u+rwX tmp/
# 修改 tmp/pids/ 个 tmp/sockets/ 文件夹权限 sudo chmod -R u+rwX tmp/pids/ sudo chmod -R u+rwX tmp/sockets/ # 创建 public/uploads/ 文件夹
mkdir public/uploads/
# 修改 public/uploads/ 文件夹权限,只有git用户有访问权限 # now that files in public/uploads are served by gitlab-workhorse sudo chmod 0700 public/uploads
# 修改 CI build traces are stored 文件夹的权限 sudo chmod -R u+rwX builds/
# 修改 CI artifacts are stored 文件夹的权限 sudo chmod -R u+rwX shared/artifacts/ # 复制 Unicorn 配置文件
cp config/unicorn.rb.example config/unicorn.rb # 查询CPU核心数 nproc
# 如果你想搭建一个高负载的Gitlab实例,可启用集群模式. # 修改'worker_processes'参数,至少要跟cpu核心数一样. # 举例:2G RAM的服务器修改workers数量为3 vim config/unicorn.rb # 复制Rack attack 配置文件 Cp
config/initializers/rack_attack.rb.example
config/initializers/rack_attack.rb # Configure Git global settings for git user # 'autocrlf' is needed for the web editor git config --global core.autocrlf input
# Disable 'git gc --auto' because GitLab already runs 'git gc' when needed
git config --global gc.auto 0 # 复制 Redis 连接配置文件
cp config/resque.yml.example config/resque.yml
# 如果之前修改过redis socket的路径,在这个配置文件里面修改为当前的路径.
vim config/resque.yml 配置GitLab数据库文件
cp config/database.yml.mysql config/database.yml vim config/database.yml production: adapter: mysql2 encoding: utf8
collation: utf8_general_ci reconnect: false database: gitlab pool: 10 username: git password: \"git@gitlab\" # host: localhost
# socket: /var/lib/mysql/mysql.sock (这两行可注销)
#修改文件权限,只有git用户可读 chmod o-rwx config/database.yml 安装GEMS包
如果使用 MySQL,执行下面的命令 (note, the option says \"without ... postgres\")
bundle install --deployment --without development test postgres aws kerberos
#这里可能中间会出错,多执行几次就可以了 安装gitlab-shell
GitLab Shell是专为GitLab开发的ssh访问和仓库管理的软件. # 修改gitlab 安装 gitlab-shell的rake任务脚本 sed
-i
's/https:\\/\\/gitlab.com\\/gitlab-org\\/gitlab-shell.git/https:\\/\\/git.oschina.net\\/qiai365\\/gitlab-shell.git/g'
/home/git/gitlab/lib/tasks/gitlab/shell.rake
# 运行安装gitlab shell的任务 (根据自己的redis安装情况修改`REDIS_URL`),这里如果你事先没有clone gitlab-shell的仓库,就会自动clone官方的仓库进行安装: bundle
exec
rake
gitlab:shell:install
REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production # 默认情况下,gitlab-shell的配置是根据Gitlab的配置生产的.
# 你可以运行下面的命令查看和修改gitlab-shell的配置: vim /home/git/gitlab-shell/config.yml --- user: git
gitlab_url: http://192.168.1.113/ http_settings:
self_signed_cert: false
repos_path: \"/home/git/repositories/\" auth_file: \"/home/git/.ssh/authorized_keys\" redis:
bin: \"/usr/local/bin/redis-cli\" namespace: resque:gitlab socket: \"/var/run/redis/redis.sock\" log_level: INFO audit_usernames: false 安装gitlab-workhorse
cd /home/git
git clone https://gitlab.com/gitlab-org/gitlab-workhorse.git cd gitlab-workhorse
git checkout 0.7.2 #如果版本够高可以不执行这一句直接执行make make 初始化数据库
bundle exec rake gitlab:setup RAILS_ENV=production # 输入 'yes' 以创建数据库表
# 当看到 'Administrator account created:' 表示已经安装完成 #在执行时可能最后会出错 #You have 1 pending migration: # 20160516174813 AddSendUserConfirmationEmailToApplicationSettings #Run `rake db:migrate` to update your database then try again. 此可以执行下面语句
bundle exec rake db:migrate RAILS_ENV=production 然后再重新执行
bundle exec rake gitlab:setup RAILS_ENV=production #这里注意redis.socket权限问题 安装设置secrets.yml
secrets.yml文件为每个会话和安全变量存储密钥.把这个文件备份到别的地方,但是不要和数据库备份放在一块,否则你的数据库备份损坏会导致这个文件丢失.
复制gitlab init脚本
sudo cp lib/support/init.d/gitlab /etc/init.d/gitlab
#复制下面这个配置文件,如果你的gitlab不是安装在/home/git/gitlab目录,根据自己情况修改这个文件。
cp lib/support/init.d/gitlab.default.example /etc/default/gitlab 设置GItlab为自启动 chkconfig gitlab on 安装Logrotate
cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab 检查GitLab环境配置
bundle exec rake gitlab:env:info RAILS_ENV=production #效果图如下: System information System:
Current User: root Using RVM:
no
Ruby Version: 2.3.1p112 Gem Version: 2.6.6 Bundler Version:1.12.5 Rake Version: 10.5.0 Sidekiq Version:4.1.2
GitLab information Version: 8.8.5 Revision: c0c194a Directory: /home/git/gitlab DB Adapter: mysql2 URL:
http://192.168.1.113
HTTP Clone URL: http://192.168.1.113/some-group/some-project.git SSH Clone URL: Using LDAP: no Using Omniauth: no
GitLab Shell Version: 2.7.2
Repositories: /home/git/repositories/ Hooks: Git:
/home/git/gitlab-shell/hooks/
git@192.168.1.113:some-group/some-project.git
/usr/local/bin/git
生成gitlab前端资源
bundle exec rake assets:precompile RAILS_ENV=production 启动gitlab
sudo service gitlab start # 或者
sudo /etc/init.d/gitlab restart
再检查一次Gitlab的所有组件
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production # 如果上面的检查有错误,按照提示修复下,再重启GitLab即可 8、
配置nginx服务
具体安装nginx 此处忽略请查找centos nginx源码安装文档,最好使用自己源码安装的
cp /home/git/gitlab/lib/support/nginx/gitlab /usr/nginx/conf/conf.d/gitlab.conf
#修改gitlab的nginx配置文件 vim /usr/nginx/conf/conf.d/gitlab.conf
找到server_name YOUR_SERVER_FQDN,将YOUR_SERVER_FQDN修改为你的域名或者IP; 同时更改里面的配置改成 listen 80;
server_name 192.168.1.113; # 修改/home/git/目录的权限 chmod 755 /home/git/ 启动nginx服务
Service nginx start 9、
gitlab邮箱配置
cd /home/git/gitlab
cp config/initializers/smtp_settings.rb.sample config/initializers/smtp_settings.rb
vim config/initializers/smtp_settings.rb #if Rails.env.production?
# Rails.application.config.action_mailer.delivery_method = :smtp #(注消这两行)
if Gitlab::Application.config.action_mailer.delivery_method == :smtp #(新加一行)
ActionMailer::Base.smtp_settings = { address: \"smtp.ym.163.com\ port: 25,
user_name: \"gitlab@xueyuanwang.com\ password: \"xxxxxxx\ domain: \"163.com\# authentication: :login, authentication: :plain, enable_starttls_auto: true,
# openssl_verify_mode: 'peer'#这个一定要注销否则发送邮件不成功 } end
修改gitlab.yml cd /home/git/gitlab
sudo -u git -H vim config/gitlab.yml 将默认邮箱修改为自己的邮箱 email_from: gitlab@xueyuanwang.com 修改后。重启gitlab sudo service gitlab restart
10、 安装邮件服务器 Yum install –y postfix.x86_64
如果源码安装请查看postfix源码安装文档 git config --global user.name \"gitlab\"
git config --global user.email \"gitlab@xueyuanwang.com\" 11、 访问gitlab
http://192.168.1.113 默认用户名root 密码:5iveL!fe
(我安装的时候不需要输入密码,直接让修改密码可能更克隆gitlab而不是源码安装的关系)
错误合集:
1、An error occurred while installing charlock_holmes (0.7.3), and Bundler cannot continue.
Make sure that `gem install charlock_holmes -v '0.7.3'` succeeds before bundling.
yum install libicu-devel
gem install charlock_holmes -v '0.7.3'
2、gem install bundler --no-ri --no-rdoc ERROR: While executing gem ... (TypeError)
no implicit conversion of nil into String
[root@centos5 ruby-2.3.1]# gem update --system
3、Bundler::GemRequireError: There was an error while trying to load the gem 'coffee-rails'.
Gem Load Error is: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. gem install coffee-rails
yum install nodejs(最主要的是安装这个) gem install rails 4、查看环境
bundle exec rake gitlab:check RAILS_ENV=production 5、bundle install –deployment bundle install
6、当然还有其他不可预知的错误大家需要自己根据错误或者相关资料解决。。。
因篇幅问题不能全部显示,请点此查看更多更全内容