设为首页 收藏本站
查看: 690|回复: 0

[经验分享] 【转】CentOS 6.5 安装Gitlab 7.12.2

[复制链接]

尚未签到

发表于 2018-1-11 09:11:16 | 显示全部楼层 |阅读模式
  转自http://www.cnblogs.com/jim-hwg/p/4754880.html
  官网环境要求
  参见:https://github.com/gitlabhq/gitlabhq
  GitLab is a Ruby on Rails application that runs on the following software:


  • Ubuntu/Debian/CentOS/RHEL
  • Ruby (MRI) 2.1
  • Git 1.7.10+
  • Redis 2.0+
  • MySQL or PostgreSQL
  For more information please see the architecture documentation.
  ##########################################
  关闭防火墙,关闭SELinux
  一、安装采用环境


  • CentOS 6.5 x86_64
  • Ruby 2.1.7
  • Git 2.4.8
  • Redis 2.4.10
  • MySQL 5.6.26
  • GitLab 7.12.2
  • GitLab Shell 2.6.2
  • Nginx   1.8.0
  • Gem   2.2.5
  • Bundler 1.10.6
  二、系统添加EPEL、PUIAS源
  1.添加EPEL源
  

wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 https://www.fedoraproject.org/static/0608B895.txt --no-check-certificate  

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6  

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm  

rpm -qa gpg*  

#显示gpg-pubkey-41a40948-4ce19266  

  2.添加PUIAS源
  

wget -O /etc/yum.repos.d/PUIAS_6_computational.repo https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/install/centos/PUIAS_6_computational.repo --no-check-certificate  
wget -O /etc/pki/rpm-gpg/RPM-GPG-KEY-puias http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias
  
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-puias
  
rpm -qa gpg*
  
#显示gpg-pubkey-41a40948-4ce19266
  

  3.查看源列表,验证
  输入如下命令:
  

yum repolist  

  结果如下:

  

repo>
PUIAS_6_computational                                                 PUIAS computational Base 6 - x86_64                                                                          2,678  
base                                                                  CentOS-6 - Base                                                                                              6,575
  
epel                                                                  Extra Packages for Enterprise Linux 6 - x86_64                                                              11,775
  
extras                                                                CentOS-6 - Extras                                                                                               3510
  
updates                                                               CentOS-6 - Updates                                                                                             254
  
repolist: 21,327
  


  If you can't see them listed, use the folowing command (from yum-utils package) to enable them:
  

yum-config-manager --enable epel --enable PUIAS_6_computational  

  三、Install the required tools for GitLab
  1.利用yum安装依赖包
  

yum -y update  
yum -y groupinstall 'Development Tools'
  
yum -y install vim-enhanced readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs python-devel logwatch logrotate perl-Time-HiRes libcom_err-devel.x86_64
  

  2.源码安装Git
  参见:http://www.cnblogs.com/jim-hwg/p/4748008.html
  3.源码安装Ruby
  参见:http://www.cnblogs.com/jim-hwg/p/4746977.html
  4.源码安装MySQL
  参见:http://www.cnblogs.com/jim-hwg/p/4747165.html
  四、创建用户
  1.创建一个Gitlab系统用户git:
  

adduser --system --shell /bin/bash --comment 'GitLab' --create-home --home-dir /home/git/ git  

  为了方便添加git用户拥有root权限 [sudoers文件默认没有写权限需要强制保存:wq!]
  使用root用户执行下述命令
  

vim /etc/sudoers  

  最后添加
  

git     ALL=(ALL)       NOPASSWORD: ALL  

  2.创建一个Gitlab数据库用户并赋权
  登陆MySQL,输入密码
  

mysql -u root -p  

  创建Gitlab数据库用户git:
  

CREATE USER 'git'@'localhost'>#替换$password设定自己的密码  
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
  
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX,>  
quit
  

  五、配置服务
  1.配置MySQL
  配置MySQL max_allowed_packet的大小,避免POST太大的内容导致出现500错误,例如GitLab 发出MergeRequest的时候返回500错误。
  

vim /etc/my.cnf  
#在mysqld中添加max_allowed_packet,调整值,加大为一个合适的数字即可。
  
[mysqld]
  
max_allowed_packet=512M
  

  重启mysql服务
  

service mysqld restart  

  2.配置redis
  Make sure redis is started on boot:
  

chkconfig redis on  

  Configure redis to use sockets:
  

cp /etc/redis.conf /etc/redis.conf.orig  

  Disable Redis listening on TCP by setting 'port' to 0:
  

sed 's/^port .*/port 0/' /etc/redis.conf.orig | tee /etc/redis.conf  

  Enable Redis socket for default CentOS path:
  

echo 'unixsocket /var/run/redis/redis.sock' | tee -a /etc/redis.conf  
echo -e 'unixsocketperm 0775' | tee -a /etc/redis.conf
  

  Activate the changes to redis.conf:
  

service redis restart  

  Add git to the redis group:
  

usermod -aG redis git  

  六、安装Gitlab
  切换到git用户
  

su - git  

  设置不验证SSL
  

vim /home/git/.bash_profile  
export GIT_SSL_NO_VERIFY=1
  

  1.克隆Gitlab
  

git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-12-stable gitlab  

  或克隆中文版Gitlab
  

git clone --depth=1 https://gitlab.com/larryli/gitlab.git -b 7-12-zh gitlab  

  2.配置Gitlab
  

cd gitlab  
cp config/gitlab.yml.example config/gitlab.yml
  

  

  配置config/gitlab.yml,配置Gitlab服务的端口,IP
  

vim config/gitlab.yml  
host: 10.149.153.81
  
port: 8049
  
email_from: gitlab@example.com
  
email_enabled: false
  
default_theme: 1
  

  

mkdir /home/git/gitlab-satellites  
chmod 750 /home/git/gitlab-satellites
  
cp config/unicorn.rb.example config/unicorn.rb
  

  

配置config/unicorn.rb,配置Ruby提供的服务端口,IP  



  

# Find number of cores  
#优化系统参数/etc/security/limits.conf
  
# Enable cluster mode if you expect to have a high load instance
  
# Ex. change amount of workers to 3 for 2GB RAM server
  
# Set the number of workers to at least the number of cores
  
vim config/unicorn.rb
  
worker_processes 3        # Set the number of workers to at least the number of core
  listen "127.0.0.1:8081", :tcp_nopush => true        #注意端口,避免冲突
  


  

cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb  git config --global user.name "GitLab"
  git config --global user.email "gitlab@example.com"
  git config --global core.autocrlf input
  cp config/resque.yml.example config/resque.yml
  

  

配置config/resque.yml#如果不使用默认的端口,则需要配置  

  3. Configure GitLab DB settings

  

cp config/database.yml.mysql config/database.yml  
# MySQL and remote PostgreSQL only:
  
# Update username/password in config/database.yml.
  
# You only need to adapt the production settings (first part).
  
# If you followed the database guide then please do as follows:
  
# Change 'secure password' with the value you have given to $password
  
# You can keep the double quotes around the password
  
vim config/database.yml
  
修改为正确的用户名和密码
  
分别修改git用户和root用户
  chmod o-rwx config/database.yml
  


  4.Install Gems
  Note: As of bundler 1.5.2, you can invoke bundle install -jN
  (where N the number of your processor cores) and enjoy the parallel gems installation with measurable
  difference in completion time (~60% faster). Check the number of your cores with nproc.
  For more information check this post.
  First make sure you have bundler >= 1.5.2 (run bundle -v) as it addresses some issues
  that were fixed in 1.5.2.

  

cd /home/git/gitlab  
# Or for MySQL (note, the option says "without ... postgres")
  
修改为淘宝的ruby源
  
vim Gemfile
  
修改为
  
source 'https://ruby.taobao.org/'
  

  
bundle install --deployment --without development test postgres aws
  
这一步的时间会等很久
  


  5.Install GitLab shell
  GitLab Shell is an SSH access and repository management software developed specially for GitLab.
  

cd /home/git/gitlab  bundle exec rake gitlab:shell:install[v2.6.2] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
  

  报错:ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
  处理:切换到root用户
  

yum -y install nodejs  

  配置/home/git/gitlab/Gemfile
  

vim /home/git/gitlab/Gemfile  
#末尾添加
  
gem 'execjs'
  
gem 'therubyracer'
  

  

cd /home/git/gitlab  bundle install --no-deployment
  

  验证:
  

bundle show execjs  
bundle show therubyracer
  

  切回git用户,再次执行
  

cd /home/git/gitlab  bundle exec rake gitlab:shell:install[v2.6.2] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production
  

  配置/home/git/gitlab-shell/config.yml,配置gitlab-shell要调用的API接口

  

# By default, the gitlab-shell config is generated from your main GitLab config.  
# You can review (and modify) the gitlab-shell config as follows:
  
vim /home/git/gitlab-shell/config.yml
  

  
# Ensure the correct SELinux contexts are set
  
# Read http://wiki.centos.org/HowTos/Network/SecuringSSH
  
restorecon -Rv /home/git/.ssh
  


  6.Initialize Database and Activate Advanced Features
  

cd /home/git/gitlab/  
bundle exec rake gitlab:setup RAILS_ENV=production
  

  Type yes to create the database.
  When done you see Administrator account created:.
  Note: You can set the Administrator password by supplying it in environmental variable GITLAB_ROOT_PASSWORD, eg.:
  如果要修改gitlab管理员的密码,则执行这一句,否则执行上一句
  

bundle exec rake gitlab:setup RAILS_ENV=production GITLAB_ROOT_PASSWORD=newpassword  

  7.Install Init Script
  Download the init script (will be /etc/init.d/gitlab):
  切换到root用户
  

wget -O /etc/init.d/gitlab https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn --no-check-certificate  
chmod +x /etc/init.d/gitlab
  
chkconfig --add gitlab
  
chkconfig gitlab on
  

  8.Set up logrotate
  切换到root用户
  

cd /home/git/gitlab  
cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
  

  9.Check Application Status
  Check if GitLab and its environment are configured correctly:
  切回git用户
  

cd /home/git/gitlab  
bundle exec rake gitlab:env:info RAILS_ENV=production
  
#Compile assets
  
bundle exec rake assets:precompile RAILS_ENV=production
  

  切回root,执行
  

service gitlab start  

  七、Configure the web server
  Use either Nginx or Apache, not both. Official installation guide recommends nginx.

Nginx
  You will need a new version of nginx otherwise you might encounter an issue like this.
  To do so, follow the instructions provided by the nginx wiki and then install nginx with:

  

rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm  yum update
  
yum -y install nginx
  
chkconfig nginx on
  

  
使用SSl
  
wget -O /etc/nginx/conf.d/gitlab.conf https://gitlab.com/gitlab-org/gitlab-ce/raw/master/lib/support/nginx/gitlab-ssl --no-check-certificate
  

  
不使用SSL
  
wget -O /etc/nginx/conf.d/gitlab.conf https://gitlab.com/gitlab-org/gitlab-ce/raw/master/lib/support/nginx/gitlab --no-check-certificate
  


  最后加上--no-check-certificate不检查证书,这里不使用SSL
  Edit /etc/nginx/conf.d/gitlab.conf and replace git.example.com with your FQDN. Make sure to read the comments in order to properly set up SSL.

  

vim /etc/nginx/conf.d/gitlab.conf  
去掉listen后面的default_server,修改为正确的端口号
  
去掉 listen [::]:
  
修改server_name 为本机的IP地址
  

  
修改client_max_body_size 256m;
  
否则当推送较多数据到 gitlab 上时,会由于数据过大,而出现错误
  
fatal: The remote end hung up unexpectedly fatal: The remote end hung up unexpectedly error: RPC failed; result=22, HTTP code = 413
  


  Add nginx user to git group:
  

usermod -a -G git nginx  

  Finally start nginx with:
  

service nginx start  

  Test Configuration
  Validate your gitlab or gitlab-ssl Nginx config file with the following command:
  

nginx -t  

  八、Double-check Application Status
  To make sure you didn't miss anything run a more thorough check with:
  

su - git  
cd /home/git/gitlab
  
bundle exec rake gitlab:check RAILS_ENV=production
  

  九、Initial Login
  Visit YOUR_SERVER in your web browser for your first GitLab login.
  The setup has created an admin account for you. You can use it to log in:
  

root  
5iveL!fe
  

  #####################以上即完成了Gitlab的搭建################################
  十、后期维护
  1.Upgrade GitLab Shell
  GitLab Shell might be outdated, running the commands below ensures you're using a compatible version:
  

su - git  
cd /home/git/gitlab-shell
  
git fetch
  
git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`
  

  2.Upgrade GitLab
  One line upgrade command
  You've read through the entire guide and probably already did all the steps one by one.
  Here is a one line command with step 1 to 5 for the next time you upgrade:
  切换到git用户

  

cd /home/git/gitlab; \  
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production; \
  
sudo service gitlab stop; \
  
if [ -f bin/upgrade.rb ]; then sudo -u git -H ruby bin/upgrade.rb -y; else sudo -u git -H ruby script/upgrade.rb -y; fi; \
  
cd /home/git/gitlab-shell; \
  
sudo -u git -H git fetch; \
  
sudo -u git -H git checkout v`cat /home/git/gitlab/GITLAB_SHELL_VERSION`; \
  
cd /home/git/gitlab; \
  
exit; \
  
sudo service gitlab start; \
  
sudo service nginx restart; sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
  


  3.Upgrade /etc/init.d/gitlab
  

wget https://gitlab.com/gitlab-org/gitlab-recipes/raw/master/init/sysvinit/centos/gitlab-unicorn  
mv gitlab-unicorn gitlab
  
cp -f gitlab /etc/init.d/gitlab
  
rm gitlab
  

  复制完后,要删除/etc/init.d/gitlab.swap文件
  4.Gitlab源代码更新

  

cd /home/git/gitlab/  

  
git fetch origin
  
git merge origin/7-5-zh
  

  
#重启 gitlab
  
service gitlab restart
  


  十一、Gitlab 备份
  官网的备份说明
  https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/raketasks/backup_restore.md
  查看备份设置
  

vim /home/git/gitlab/config/gitlab.yml  

  检查Backup Settings设置项
  默认情况下,备份文件是存放在/home/git/gitlab/tmp/backups/
  执行备份
  

sudo service gitlab stop # 先停止Gitlab,可以不暂停  
cd /home/git/gitlab/
  
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
  

  执行完成后,会在/home/git/gitlab/tmp/backups/目录下创建一个备份俄文件,以时间戳_gitlab_backup命名如 1417040627_gitlab_backup.tar
  重新启动
  

sudo service gitlab start  
sudo service nginx restart
  

  还原
  需要给其他用户配置读写执行的权限
  

chmod o+wrx /home/git/.ssh/authorized_keys.lock  

  否则会出现如下错误,是由于没有权限
  /home/git/gitlab-shell/lib/gitlab_keys.rb:101:in `initialize': Permission denied @ rb_sysopen - /home/git/.ssh/authorized_keys.lock (Errno::EACCES)
  需要使用 git 用户来执行,否则会没有权限操作 git 目录下的文件,timestamp_of_backup为时间戳如 1417040627
  

sudo service gitlab stop  
cd /home/git/gitlab/
  
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=timestamp_of_backup RAILS_ENV=production
  
sudo service gitlab start
  
sudo service nginx restart
  
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
  

  设置自动备份
  

sudo service gitlab stop;  
cd /home/git/gitlab;
  
sudo -u git -H editor config/gitlab.yml; # Enable keep_time in the backup section to automatically delete old backups
  

  keep_time参数默认是604800(单位是秒),因此会保留最近7天内的备份
  

sudo -u git crontab -e # Edit the crontab for the git user  

  将如下内容添加到文件末尾
  

# Create a full backup of the GitLab repositories and SQL database every day at 2am  
0 2 * * * cd /home/git/gitlab && PATH=/usr/local/bin:/usr/bin:/bin bundle exec rake gitlab:backup:create RAILS_ENV=production CRON=1
  

  每天凌晨2点自动备份
  The CRON=1 environment setting tells the backup script to suppress all progress output if there are no errors. This is recommended to reduce cron spam.
  重新启动
  

sudo service gitlab start;  
sudo service nginx restart;
  
sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production;
  

  参考链接:http://www.cnblogs.com/restran/p/4411133.html
  http://blog.csdn.net/ypjyangpeijun/article/details/20468043

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-433779-1-1.html 上篇帖子: 使用Docker Image跑Gitlab 下篇帖子: gitlab-ci配置疑难备忘
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表