重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、搭建git服务器
创新互联专注于英山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供英山营销型网站建设,英山网站制作、英山网页设计、英山网站官网定制、重庆小程序开发公司服务,打造英山网络公司原创品牌,更为您提供英山网站排名全网营销落地服务。
github毕竟是公开的,而私有仓库又要花钱买。所以我们可以想办法搭建一个私有的,只自己公司使用的。Gitlab是个不错的选择。在介绍它之前,先讲述一下命令行的git服务器
找一台服务器,首先要安装git,这里新开了一台机器安装git。
# yum install -y git
添加git用户,并且设置shell为/usr/bin/git-shell,目的是为了不让git用户远程登陆
# useradd -s /usr/bin/git-shell git # cd /home/git
首先要把客户端上的公钥放到git服务器上/home/git/.ssh/authorized_keys文件里。
创建authorized_keys文件,并更改属主、属组和权限,用来存客户端机器上的公钥。
# mkdir .ssh # touch .ssh/authorized_keys # chown -R git:git .ssh # chmod 600 .ssh/authorized_keys [root@MRX ~]# cat .ssh/id_rsa.pub //将第一台机器上的公钥复制 [root@wbs git]# vi .ssh/authorized_keys //粘贴到新机器上(服务端)刚才创建的文件中 [root@MRX ~]# ssh git@192.168.197.133 到客户端尝试登陆一下,看到这样的提示就代表没问题了,说明验证成功。 The authenticity of host '192.168.197.133 (192.168.197.133)' can't be established. ECDSA key fingerprint is SHA256:PZXNkWqC/6h5hUQYkfOM9AMj82OTskLMIB4qLkgeajU. ECDSA key fingerprint is MD5:99:19:04:c5:11:8d:94:ad:9a:86:40:b9:ad:b9:d4:8f. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.197.133' (ECDSA) to the list of known hosts. fatal: Interactive git shell is not enabled. hint: ~/git-shell-commands should exist and have read and execute access. Connection to 192.168.197.133 closed.
在服务端上定义存储git仓库的目录,比如 /data/gitroot
# mkdir /data/gitroot # cd /data/gitroot # git init --bare sample.git
// 会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。
# chown -R git.git sample.git
以上操作是在git服务器上做的,平时git服务器是不需要开发人员登录修改代码的,它仅仅是充当着一个服务器的角色,就像github一样,平时操作都是在我们自己的pc上做的。
在客户端上(自己pc)克隆远程仓库
git clone git@ip:/data/gitroot/sample.git # git clone git@192.168.197.133:/data/gitroot/sample.git 正克隆到 'sample'... warning: 您似乎克隆了一个空版本库。
此时就可以在当前目录下生成一个sample的目录,这个就是我们克隆的远程仓库了。进入到这里面,可以开发一些代码,然后push到远程。
# cp /etc/init.d/MySQLd . [root@MRX sample]# ls mysqld [root@MRX sample]# git add . [root@MRX sample]# git commit -m "add new file" [master(根提交) 1d1a5a0] add new file 1 file changed, 378 insertions(+) create mode 100755 mysqld [root@MRX sample]# git push //由于是一个裸仓库,里面没有任何分支,直接推送,远程不知道是哪一个分支,所以需要指定一个分支。 warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching' 修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯, 进行如下设置: git config --global push.default matching 若要不再显示本信息并从现在开始采用新的使用习惯,设置: git config --global push.default simple 参见 'git help config' 并查找 'push.default' 以获取更多信息。 ('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git, 为保持兼容,请用 'current' 代替 'simple' 模式) No refs in common and none specified; doing nothing. Perhaps you should specify a branch such as 'master'. fatal: The remote end hung up unexpectedly error: 无法推送一些引用到 'git@192.168.197.133:/data/gitroot/sample.git' # git push origin master //指定master分支,第二次再推送的时候就可以直接git push了。 Counting objects: 3, done. Delta compression using up to 2 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 3.84 KiB | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To git@192.168.197.133:/data/gitroot/sample.git * [new branch] master -> master # cd /tmp # git clone git@192.168.197.133:/data/gitroot/sample.git # ls sample/ 1.txt mysqld [root@MRX tmp]# cd sample/ [root@MRX sample]# vim 1.txt //对文件内容更改 # git add 1.txt # git commit -m "ch 1.txt" # git push # cd /root/sample //假如另一个用户也在连,就可以git pull把更改拉下来 # git pull //刚才更改的内容就拉下来了
这是一种很简单的搭建git服务器的方法。
二、安装gitlab
除了自建的服务器,也可以使用在线的代码托管平台,比如coding.net,码市,码云,都是国内比较好的代码管理平台,比较省心,不用维护。
除了这种方法,也可以自建一个web界面浏览管理控制的代码管理平台,首选使用gitlab。
gitlab官网https://about.gitlab.com/gitlab-com/
官方安装文档 https://about.gitlab.com/installation/?version=ce#centos-7 (ce/ee)
要求服务器内存不少于2g,由于官方镜像下载比较慢,这里使用了国内的镜像,这个镜像是清华大学的一个服务器。
# vim /etc/yum.repos.d/gitlab.repo //加入如下内容 [gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1 # yum install -y gitlab-ce # gitlab-ctl reconfigure //这条命令会将所有gitlab牵扯到的服务启动起来。 ... Chef Client finished, 524/1419 resources updated in 14 minutes 08 seconds gitlab Reconfigured!
至此,gitlab就安装完了,虽然说安装起来比较容易,但是如果出了问题,再去做更改维护的时候就有一定的难度了,所以说这台gitlab的服务器建议不要做其他的应用,仅仅是跑git服务器就行了。平时做好数据的备份,gitlab有官方提供的工具用来备份数据。
安装gitlab之前,先把Nginx停掉。
# netstat -lntp //查看监听端口,这两行都是gitlab产生的。 tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 1621/unicorn master tcp 0 0 127.0.0.1:9168 0.0.0.0:* LISTEN 1439/puma 3.12.0 (t
# gitlab-ctl stop/restart/start/status //status,查看状态
# gitlab-ctl status run: alertmanager: (pid 2563) 10476s; run: log: (pid 1448) 10585s run: gitaly: (pid 1407) 10586s; run: log: (pid 1406) 10586s run: gitlab-exporter: (pid 1439) 10585s; run: log: (pid 1438) 10585s run: gitlab-workhorse: (pid 1426) 10585s; run: log: (pid 1425) 10585s run: grafana: (pid 1446) 10585s; run: log: (pid 1445) 10585s run: logrotate: (pid 18743) 3379s; run: log: (pid 1434) 10585s run: nginx: (pid 25804) 1s; run: log: (pid 1423) 10585s run: node-exporter: (pid 1433) 10585s; run: log: (pid 1432) 10585s run: postgres-exporter: (pid 1452) 10585s; run: log: (pid 1451) 10585s run: postgresql: (pid 1409) 10586s; run: log: (pid 1408) 10586s //postgresql,数据库 run: prometheus: (pid 1450) 10585s; run: log: (pid 1447) 10585s run: redis: (pid 1405) 10586s; run: log: (pid 1404) 10586s run: redis-exporter: (pid 1442) 10585s; run: log: (pid 1441) 10585s run: sidekiq: (pid 1415) 10586s; run: log: (pid 1414) 10586s run: unicorn: (pid 1413) 10586s; run: log: (pid 1412) 10586s
浏览器访问gitlab,输入ip访问即可,访问之前,先看看有没有iptables规则,如果有,加一个80端口。
默认管理员root,无密码,它会让我们去定义一个密码。
设置好后就可以sign in了。
三、使用gitlab
也可以是用域名访问,如果想用域名访问,首先要搞清楚这台服务器上是谁提供的web服务,比如Nginx,Nginx的配置文件位置在/var/opt/gitlab/nginx/conf/,里面有nginx.conf,这是主配置文件;gitlab-http.conf就是对应的gitlab相关的配置文件,如果想绑定一个域名,或者更改监听端口,可以编辑这个配置文件。
# vim /var/opt/gitlab/nginx/conf/gitlab-http.conf server { listen *:80; //定义监听端口 server_name gitlab.example.com; //定于域名
这个服务器如果不用跑别的服务,仅仅只一个gitlab,那完全不用动。
先用浏览器进入gitlab,先创建一个组,自定义组名,并设置权限为私有的Private。
再创建一个项目,可以选择刚才创建的组,并设置项目名。
创建完成后,最上面显示了一条“You won't be able to pull or push project code via SSH until you add an SSH key to your profile”,说没有创建任何的ssh key。
创建ssh key:在头像出点settings,左边可以看到ssh keys,将公钥(/root/.ssh/id_rsa.pub)放进去就可以创建了。
创建用户:点击上方的小扳手(Admin Area),new user,用户名zhangsan,email:zhangsan@111.com,密码设置提示会将设置密码的链接发送给用户邮箱,创建。创建完成后,点击右上方的Edit可以编辑设置password,设置完保存。然后登陆zhangsan,第一次登录时,会让你设置新密码。
四、gitlab备份和恢复
gitlab备份
# gitlab-rake gitlab:backup:create
备份目录在/var/opt/gitlab/backups
Creating backup archive: 1569829062_2019_09_30_12.3.1_gitlab_backup.tar ... done
备份完后可以从这一句看到文件名字,时间戳+日期+版本号。
gitlab 恢复 先停服务 恢复数据时,数据的版本需要和当前gitlab的版本一致。
# gitlab-ctl stop unicorn ; gitlab-ctl stop sidekiq
unicorn是ruby相关的一个webserver,sidekiq是一个消息队列,也是基于ruby的。停这两个服务的目的是为了暂时不要做数据的变更。
# gitlab-rake gitlab:backup:restore BACKUP=1569829062_2019_09_30_12.3.1 (这里是一个编号,即备份文件的前缀)
再启动服务 gitlab-ctl star