`
tianrun
  • 浏览: 6684 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

Gitlab安装、迁移和升级

 
阅读更多

安装docker & docker-compose

1.安装docker

ubuntu 安装Docker

sudo apt-get install docker.io

 添加docker组

#Add your user to docker group
$sudo usermod -aG docker ubuntu(用户名)

 添加之后重启服务器即可 

#reboot

 

2.安装docker-compose

https://docs.docker.com/compose/install/
which curl
# apt-get install curl -y #### libcurl3 libcurl3-dev php5-curl -y
# apt-get install python-pip python-dev -y
# pip install -U docker-compose  

 注意:如果提示下面错误,用root账户在重试一下上面命令

Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 122, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 278, in run
    requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 1235, in prepare_files
    req_to_install.assert_source_matches_version()
  File "/usr/lib/python2.7/dist-packages/pip/req.py", line 465, in assert_source_matches_version
    % (display_path(self.source_dir), version, self))
  File "/usr/lib/python2.7/dist-packages/pip/util.py", line 70, in display_path
    if path.startswith(os.getcwd() + os.path.sep):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 11: ordinal not in range(128)

Storing debug log for failure in /home/ccid/.pip/pip.log

 

Or 也可以用一下方式添加

 

$sudo curl -L https://github.com/docker/compose/releases/download/1.5.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$sudo chmod +x /usr/local/bin/docker-compose
$sudo docker-compose --v

 

注:提示docker-compose版本如“docker-compose version 1.7.1, build 6c29830”则安装成功
注意:如果你在安装的时候出现了 “Permission denied” 的错误信息,这说明你的 /usr/local/bin 目录是不可写的,你需要使用超级用户来安装。
运行 sudo -i , 然后运行上边的两个命令,然后 exit退出。

 

安装配置Docker私有registry

docker首先安装成功;

创建保存image和证书的目录:

$sudo mkdir -p /opt/docker/registry/data
$sudo mkdir -p /opt/docker/registry/certs

 Docker的私有Registry要求使用https访问。需要生成ssl证书。

$cd /opt/docker/registry/
$which openssl
$sudo apt-get install openssl libssl-dev (libssl-dev:openssl开发库)
$openssl genrsa -out registry_tr_com.key 2048
$openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/registry_tr_com.key -x509 -days 365 -out certs/registry_tr_com.crt

 

 下面是输出,需要填写一些信息:

Generating a 4096 bit RSA private key
........................................++
..........................................++
writing new private key to 'certs/registry_tr_com.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:BeiJing
Locality Name (eg, city) []:BeiJing
Organization Name (eg, company) [Internet Widgits Pty Ltd]:TR
Organizational Unit Name (eg, section) []:TR
Common Name (e.g. server FQDN or YOUR name) []:registry.tr.com
Email Address []:

 注意:上面提示里的Common Name必须要添写完整域名

 

使用编辑器编辑 /opt/docker/registry/docker-compose.yml,内容如下:

docker/registry为源文档的docker_registry)
registry:
    container_name : tr_registry
    restart : always
    image : registry:2
    ports:
        - 443:5000
    environment:
        REGISTRY_HTTP_TLS_CERTIFICATE: /certs/registry_tomhat_com.crt
        REGISTRY_HTTP_TLS_KEY: /certs/registry_tr_com.key
    volumes:
        - /opt/docker/registry/data:/var/lib/registry
        - /opt/docker/registry/certs:/certs

 注意:文本格式;

 

安装docker-compose

 

使用docker-compose启动registry容器。

# docker-compose up -d

 注意:用root用户执行命令在docker-compose.yml所在目录

如下是正确提示

 

Pulling registry (registry:2)...
2: Pulling from library/registry
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
39091a8d8094: Pull complete
c5ad04c01f33: Pull complete
e441cc69d374: Pull complete
Digest: sha256:5206f99cc4d06dedc6d291324935ef134001f30fe05bf47e8d0b58d7e93e3843
Status: Downloaded newer image for registry:2
Creating cops_registry
 

 

把证书复制到其他的节点上;

 

 

# scp /opt/docker_registry/certs/registry_tr_com.crt user@ip地址:/root
 请切换到节点上,安装证书并重启docker服务。

 

 

# mkdir -p /etc/docker/certs.d/registry.tr.com
# cp /root/registry_tomhat_com.crt /etc/docker/certs.d/registry.tr.com
# service docker restart
 Push tomcat镜像到私有库

 

 

方法为
1,从我公司的私有库里将tomcat镜像pull到本地。将公司私库 (ip  registry.tr.com)添加到hosts中,并将私库密钥放到/etc/docker/certs.d/registry.tr.com/目录中
2,修改tomcat镜像的tag
3,将tomcat镜像push到自建的仓库里
由于本文档里演示创建的私有库(registry.tr.com)与我公司的私有库名称相同,node1和jenkins 在/etc/hosts文件中对registry.tr.com的解析均为私网地址的私有库,而这里需要的tomcat镜像在我公司的私有库里(公网地址)。所以操作要在gitlab节点上进行(gitlib节点上配置了访问我公司私有仓库的秘钥和hosts文件)具体操作如下
# docker pull  registry.tr.com/tomcat
$sudo docker images 获取tomcat镜像的image id这里为660259e51042

# docker tag 660259e51042 registry.tr.com/tomcat
修改hosts文件将registry.tr.com的解析改成私网地址(127.0.0.1)替换/etc/docker/certs.d/registry.tr.com/registry_tr_com.crt 文件(该文件可以从node1节点相同目录下获得)
放置好registry.tr.com.crt之后重启docker
# sudo service docker restart
# docker push registry.tr.com/tomcat    push镜像到私有仓库
通过浏览器访问https://127.0.0.1/v2/_catalog查看镜像是否push成功。
 访问:http://ip/v2/_catalog

 

 

安装gitlab server

 

1.安装证书与pull镜像

 

docker首先安装成功

 

首先配置host
将registry的host配置好
命令如下

 

#echo "ip registry.ecloud.com.cn" >> /etc/hosts
 `###########此处有一个安装证书,由开发提供############

 


安装证书到/etc/docker/certs.d/registry.tr.com/


命令和方法如下


将证书文件上传到服务器,windows下可使用winscp工具,Linux系统下可通过此方法上传


“#scp -i wendangmiyao.pem registry_tr_com.crt ubuntu@10.10.10.3:/home/ubuntu” 


.crt, 为证书文件,.pem为登陆服务器使用的秘钥文件。


在服务器上创建证书存放目录并将证书拷贝到其中

 

 

# mkdir -p /etc/docker/certs.d/registry.tr.com
# cp /home/ubuntu/registry_tr_com.crt /etc/docker/certs.d/registry.tr.com/
 重启docker 服务

 

 

# service docker restart
 

 

接下来pull gitlab的images.

 

# docker pull registry.tr.com/sameersbn/gitlab:8.2.0
# docker pull registry.tr.com/sameersbn/redis:latest
# docker pull registry.tr.com/mysql:5.7

 

安装docker compose.

 

查看上面安装方法;

 

创建MySQL和gitlab的数据目录

 

 

$sudo mkdir -p /opt/data/mysql
$sudo mkdir -p /opt/data/gitlab

 

创建一个新文件docker-compose.yml,加入以下内容:

 

mysql:
 container_name: mysql
 image: registry.tr.com/mysql:5.7
 environment:
 #mysql password:mysql
  - MYSQL_ROOT_PASSWORD=mysql
 volumes:
  - /opt/data/mysql:/var/lib/mysql

redis:
# container_name: redis
 image: registry.tr.com/sameersbn/redis:latest

gitlab:
 image: registry.tr.com/sameersbn/gitlab:8.2.0
 command: app:start
 container_name: gitlab
 ports:
  - "80:80"
  - "8443:443"
 environment:
 #project url http://GITLAB_HOST/project/xxxx.git
  - GITLAB_HOST=gitlab.tr.com
  - DB_USER=gitlab
  - DB_PASS=1q2w3e4r
  - DB_NAME=gitlabhq_production
  - GITLAB_TIMEZONE=Beijing
  - GITLAB_GRAVATAR_ENABLED=false
  - GITLAB_BACKUPS=daily
  - NGINX_MAX_UPLOAD_SIZE=100m
  - "UNICORN_TIMEOUT=120"
  - GITLAB_SECRETS_DB_KEY_BASE=fvXhxg7tthcg4jpxpfg9MbrWJbbHTqsRj3xpLNxdrMpsWmgnMNjRdhc73qX7dsgz
  - DEBUG=1
 volumes:
  - /opt/data/gitlab:/home/git/data
 links:
  - mysql:mysql
  - redis:redisio

 

启动容器

 

# docker-compose up -d

 

如果启动不起来,就是刚才配置的文件格式不对,请调整配置文件格式
登录到mysql容器,创建所需的数据库,并添加授权。

 

$sudo docker exec -it mysql bash
$mysql -u root -pmysql

 

mysql root用户的密码是mysql.
然后执行下面的SQL.

 

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, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'%' IDENTIFIED BY '1q2w3e4r';

FLUSH PRIVILEGES;


#exit退出mysql容器

 

登录到Gitlab容器

 

# docker exec -it gitlab bash

 在容器里执行下面的命令来初始化Gitlab.

$ /sbin/entrypoint.sh app:rake gitlab:setup

 

初始化设置完成后,提示如下:

 

login.........root
password......5iveL!fe

 

这就是gitlab的管理员登录用户。
用这个用户登录gitlab,首次登录会要求修改密码(这里修改成tr.com)。
通过宿主机ip访问如http://ip/users/sign_in

 

以下是jenkins用的
登录gitlab首页,点击Profile settings->Account,这里会显示当前用户的 Private token,请把这个值保存到文本文件里,稍后在Jenkins里会用到(这里为CVufh7Bs82ohsaWEa6mv)。

 

Gitlab数据迁移与升级

 

Tip :在部署gitlab数据迁移之前,首先查看A主机gitlab的版本号。
下面所示主机A为原主机。B主机为迁移目的主机。
A主机gitlab version 为8.2.2.
数据迁移必须保证A主机和B主机的gitlab版本号相同.

 



 

数据迁移

 

 

在A主机上操作:

1.  部署gitlab容器时没有进行自动备份的配置,先创建备份。
ubuntu@gitlab ~ $:docker stop gitlab 停止当前运行的gitlab容器 
eg:docker stop gitlab   注:gitlab为容器的名称。

2. ubuntu@gitlab ~ $:docker rm gitlab 删除当前存在的gitlab容器 
eg:docker rm gitlab      注:gitlab为容器的名称    

 注:在gitla容器创建时b设置了自动备份的请忽略次步。直接导出最近/opt/data/gitlab/backup/下的最近的备份文件。

3. ubuntu@gitlab ~ $:docker run --name gitlab --rm  -ti -p 80:80  -p 8443:443   --link mysql:mysql   --link redis:redisio   -e "DB_USER=gitlab" -e "DB_PASS=1q2w3e4r"   -e "DB_NAME=gitlabhq_production"   -e "GITLAB_HOST=gitlab.dev.ecloud.com.cn"   -e "GITLAB_TIMEZONE=Beijing"   -e "GITLAB_GRAVATAR_ENABLED=false"  -e 'GITLAB_BACKUPS=daily' -e "NGINX_MAX_UPLOAD_SIZE=100m" -e "UNICORN_TIMEOUT=120" -e "GITLAB_SECRETS_DB_KEY_BASE=fvXhxg7tthcg4jpxpfg9MbrWJbbHTqsRj3xpLNxdrMpsWmgnMNjRdhc73qX7dsgz"  -v /opt/gitlab/data:/home/git/data   sameersbn/gitlab:8.2.2 app:rake gitlab:backup:create  运行此命令就会在创建gitlab容器时挂载的/opt/data/gitlab/backup目录下生成如下图所示的压缩文件,
 

 
-p 80:80 开放80端口映射主机80端口    -p 8443:443 开放443端口映射主机8443端口
--name gitlab  容器名称为gitlab
-rm  当容器停止时进行删除容器.
--link mysql:mysql    连接mysql容器   mysql:   mysql为容器名称。
--link redis:redisio   连接redis容器    redis:   redis为容器名称。
-e "DB_USER=gitlab"    环境变量DB_USER   gitlab为mysql用户名。
-e "DB_PASS=1q2w3e4r"  环境变量DB_PASS  1q2w3e4r为gitlab用户名的密码。
-e "DB_NAME=gitlabhq_production" 环境变量 DB_NAME gitlabhq_production为数据库名称。
-e "GITLAB_HOST=gitlab.dev.ecloud.com.cn" 环境变量GITLAB_HOST gitlab.dev.ecloud.com.cn为访问地址,自定义。
-e 'GITLAB_BACKUPS=daily'  环境变量GITLAB_BACKUP daily为每天备份。  
sameersbn/gitlab:8.2.2  镜像名称。
 在B主机上操作:
将此备份目录下的文件拷贝到你需要迁移的主机的目录下。 创建gitlab:8.2.2的容器,搭建出gitlab在宿主机上的环境。 Tip : 详细步骤请参阅上面部署:
3. 安装Gitlab server  
 
将从A主机迁移过来的备份文件拷贝到/opt/data/gitlab/baskup下,运行如下命令恢复备份。
ubuntu@gitlab ~ $:docker run --name gitlab --rm -ti -p 80:80  -p 8443:443   --link mysql:mysql   --link redis:redisio   -e "DB_USER=gitlab" -e "DB_PASS=1q2w3e4r"   -e "DB_NAME=gitlabhq_production"   -e "GITLAB_HOST=gitlab.dev.ecloud.com.cn"   -e "GITLAB_TIMEZONE=Beijing"   -e "GITLAB_GRAVATAR_ENABLED=false"  -e 'GITLAB_BACKUPS=daily' -e "NGINX_MAX_UPLOAD_SIZE=100m" -e "UNICORN_TIMEOUT=120" -e "GITLAB_SECRETS_DB_KEY_BASE=fvXhxg7tthcg4jpxpfg9MbrWJbbHTqsRj3xpLNxdrMpsWmgnMNjRdhc73qX7dsgz"  -v /opt/gitlab/data:/home/git/data   sameersbn/gitlab:8.2.2 app:rake gitlab:backup:restore 

或者如下命令:
ubuntu@gitlab ~ $:docker run --name gitlab -it --rm [OPTIONS] IMAGE:8.2.2 app:rake gitlab:backup:restore BACKUP=1417624827   
具体内容如上。
 

注:1417624827为/opt/data/gitlab/backup
目录下的文件:1417624827_gitlab_back.tar

4.  运行gitlab容器:
ubuntu@gitlab ~ $:docker run --name gitlab -d [OPTIONS] IMAGE:8.2.2  此容器就是已经进行了数据迁移的gitlab容器。   
具体内容如上。

 

升级

 

运行1、 2 步,对gitlab容器进行停止删除操作。
ubuntu@gitlab ~ $:docker run --name gitlab -d [OPTIONS] IMAGE:8.8.5 
具体内容如上。

 

ok,
已经成功,
如有问题欢迎提出与分享

  • 大小: 113 KB
  • 大小: 27.8 KB
分享到:
评论

相关推荐

    Gitlab备份、迁移和恢复.pdf

    **GitLab迁移** 1. **安装新服务器上的GitLab**:为了迁移GitLab,首先需要在新的服务器上安装与原服务器相同版本的GitLab软件。这是因为GitLab目前仅支持在相同版本之间的备份迁移。 2. **传输备份文件**:将原...

    gitlab-ce_7.10.5~omnibus-1_amd64.rar

    升级过程可以通过GitLab提供的更新指南进行,通常包括停止服务、安装新的DEB包和迁移数据等步骤。 在使用GitLab时,用户可以创建项目,管理代码仓库,通过SSH密钥进行身份验证,创建分支,合并请求,进行代码审查,...

    gitlab:gitlab原始码建立-源码搭建

    GitLab 是一个全面的开源版本控制系统,它不仅提供了与GitHub类似的代码托管功能,还支持持续集成、代码审查、项目管理等多种...记得定期查看GitLab的官方文档,获取最新的安装和升级指南,以充分利用GitLab的功能。

    synology-gitlab:更新了改进的原始Synology软件包

    这是一个经过升级和改进的GitLab软件包,它使用了的库存Synology软件包,并且可以安装在。 下载Gitlab 13.9.3-0068 SPK : 硬件要求: 1个CPU内核(建议使用2个内核) 2 GB RAM(建议使用4GB RAM) 寻找具有...

    服务器迁移心得

    在IT行业中,服务器迁移是一项常见的任务,涉及到将现有的应用程序、数据库和服务从一台服务器迁移到另一台服务器,以实现性能优化、资源升级或整合。这里,我们主要探讨的是一个与"服务器迁移"相关的主题,结合...

    RuoYi-Vue-Plus 是重写 RuoYi-Vue 针对 分布式集群与多租户 场景全方位升级(不兼容原框架)

    这个项目在原有基础上进行了深度改造,以满足大规模、高并发、多组织结构的业务需求,但需要注意的是,RuoYi-Vue-Plus 与 RuoYi-Vue 原框架并不兼容,这意味着迁移和升级需要进行一定的代码调整。 一、Vue.js 技术...

    程序如何升级

    在Android平台上,应用程序的升级是一个涉及...总的来说,Android应用程序的升级是一个综合了版本控制、签名、发布、安装、数据管理和用户交互等多个环节的过程。开发者需要充分考虑用户体验,确保升级过程的顺利进行。

    2.0.0 升级日志1

    2.0.0 升级日志1 本资源摘要信息将详细介绍 2.0.0 版本升级日志中所包含的知识点。 nwjs 升级 在 2.0.0 版本中,nwjs 被升级...2.0.0 版本升级日志中包含了许多新的功能和 bug 修复,这使得应用程序更加强大和稳定。

    PHP 7升级部署最佳实践.pptx

    例如,将mysql替换为mysqli,确保opcache的内置支持,升级或替换php-jsond,测试redis的PHP7分支,更新memcached、iplookup/fcache的扩展,迁移weibo_util,继续使用支持PHP 7的yaf、yar和yaconf,以及更新msgpack...

    yii2saaS快速快速平台升级___下载.zip

    以下是关于Yii2 SaaS平台升级和FunBoot的一些关键知识点: 1. **Yii2框架**:Yii2是用PHP编写的,它提供了一个强大的MVC(模型-视图-控制器)架构,支持RESTful API,有内置的缓存管理,以及自动代码生成工具如Gii...

    websphere配置手册

    - **迁移策略**:从旧版本升级到新版本,需要考虑兼容性、数据迁移和应用程序测试。 - **升级流程**:通过Installation Manager进行升级,遵循IBM提供的升级指南。 9. **持续集成与自动化**: - **Ant任务**:...

    工商银行IT研发自动化升级探索——核心批量架构转型与测试提升.rar

    5. 云计算技术:为了进一步提高IT研发的灵活性和效率,工商银行可能将部分或全部IT基础设施迁移到云端,利用AWS、阿里云等公有云或私有云平台,实现资源弹性伸缩、按需付费和跨地域部署。 6. AI与智能化:银行IT...

    acpilight:向后兼容xbacklight替换

    6. **软件迁移**:从GitHub到GitLab的迁移反映了开源项目维护者对不同平台特性和社区环境的考量。 7. **项目结构**:"acpilight-master"可能包含项目的基本架构,如setup.py(Python项目的安装脚本)、LICENSE...

    solarus-doc:该存储库已移至GitLab

    这个存储库的迁移标志着其开发和维护工作已经转至GitLab平台,这是一个流行的开源项目托管服务,提供版本控制和协作功能。 Solarus是一款免费且开源的游戏引擎,专为制作2D动作冒险游戏而设计。它受到了任天堂Game ...

    svn server 3.0企业版

    10. 迁移与升级:如果企业已有旧版本的 SVN 服务器,3.0 版本应提供平滑的迁移路径和升级工具,以减少对业务的影响。 11. 社区支持与文档:SVN 有丰富的社区资源和官方文档,用户可以在遇到问题时获取帮助,学习...

    Devexpress_10.1.4(10.1.5,10.1.6)_编译脚本_Build_Scripts

    2. **自动化构建**:脚本可能使用自动化构建工具,如MSBuild、NAnt或GitLab CI/CD,来简化和标准化构建过程,确保每次构建的一致性和可靠性。 3. **依赖管理**:编译脚本可能包含对其他库和组件的依赖管理,确保...

    nexus-2.3.1-bundle.tar.gz

    10. **升级和迁移**:由于工作目录 "sonatype-work" 与软件主体分开,升级 Nexus 到新版本时,可以保留旧版本的数据和配置。 安装 Nexus 2.3.1 时,需要解压 "nexus-2.3.1-bundle.tar.gz",然后按照官方文档的指示...

    简单的sql迁移工具,让你免于发疯-食人鱼/游牧

    1. **数据库迁移**:数据库迁移是将数据从一个数据库系统迁移到另一个的过程,这通常在升级数据库系统、更换数据库供应商或合并数据库时发生。它需要确保数据完整性,并且尽可能减少服务中断。 2. **Python与SQL**...

    基于SSM洗衣店预约管理系统可升级SpringBoot源码案例设计.zip

    10. **持续集成/持续部署(CI/CD)**:为了保证代码质量和快速迭代,系统开发可能采用了Git进行版本控制,Jenkins或GitLab CI/CD进行自动化构建和部署,确保代码质量并缩短上线周期。 通过这个案例,开发者可以学习到...

    myunix:不赞成使用myunix v2,而推荐使用https:gitlab.commyunixmyunix

    开发者通常会建议用户升级到更稳定、更完善的版本,以获得更好的性能和安全性。 在描述中提到了推荐使用的是"HTTPS:gitlab.com/myunix/myunix",这意味着myunix项目已经迁移到了GitLab平台。GitLab是一个开源的Git...

Global site tag (gtag.js) - Google Analytics