centos7 安装gitlab构造自己的仓库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CentOS7安装gitlab中文版构建自己的仓库
注:相关软件不要版本太低尽量较新
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:/// --remove https:///
gem sources –l #查看是否已更改为淘宝的源
https:///
安装bundle包:
gem install bundler --no-ri --no-rdoc
# 修改bundler的源为淘宝
bundle config mirror.https:// https:///
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 /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:///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-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-org/gitlab-workhorse.git cd gitlab-workhorse
git checkout 0.7.2 #如果版本够高可以不执行这一句直接执行mak e
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: git@192.168.1.113:some-group/some-project.git Using LDAP: no
Using Omniauth: no
GitLab Shell
Version: 2.7.2
Repositories: /home/git/repositories/
Hooks: /home/git/gitlab-shell/hooks/
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/smt p_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: "",
port: 25,
user_name: "gitlab@",
password: "xxxxxxx",
domain: "",
# 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@
修改后。
重启gitlab
sudo service gitlab restart
10、安装邮件服务器
Yum install –y postfix.x86_64
如果源码安装请查看postfix源码安装文档
git config --global "gitlab"
git config --global user.email "gitlab@"
11、访问gitlab
http://192.168.1.113
默认用户名root
密码:5iveL!fe
(我安装的时候不需要输入密码,直接让修改密码可能更克隆gitl ab而不是源码安装的关系)
错误合集:
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:///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、当然还有其他不可预知的错误大家需要自己根据错误或者相关资料解决。