• centos8上使用gitosis管理git项目


    零,centos8平台如何安装gitosis服务?

    参见:centos8平台安装gitosis服务
    地址:https://www.cnblogs.com/architectforest/p/12456655.html

    一,用git初始化一个项目

    1,进入代码所在的目录

          例如目录为: /data/web/think_admin

    root@kubuntu:~# cd /data/web/think_admin/
    root@kubuntu:/data/web/think_admin#

    2,初始化一个git项目

    root@kubuntu:/data/web/think_admin# git init
    已初始化空的 Git 仓库于 /data/web/think_admin/.git/

    3,编辑gitignore,避免git项目中加入配置文件和临时文件

    root@kubuntu:/data/web/think_admin# vi .gitignore

    内容:

    templates_action_c/
    conf/constant_define.php
    .project
    .idea

    说明:此处我举的例子是一个php项目

    templates_action_c/     用来保存smarty模板编译后的临时文件

    conf/constant_define.php  用来保存define的常量,作为实例运行时配置会发生变化:例如:数据库的地址等

    .idea  开发工具产生的临时文件

    说明:.gitignore用来保存不加入git项目的内容,

             象临时文件和配置文件通常不需要加入代码库

    4,配置git需要的用户和邮箱:

    root@kubuntu:/data/web/think_admin# git config --global user.email "liuhongdi@gmail.com"
    root@kubuntu:/data/web/think_admin# git config --global user.name "liuhongdi"

    5,提交git项目

    root@kubuntu:/data/web/think_admin# git add .
    root@kubuntu:/data/web/think_admin# git commit -m "init think admin project"

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,在gitosis中添加用户和think_admin项目,并提交

    1,把公钥文件复制到gitosis-admin/keydir目录下

    首先生成公钥文件:命令是:

       ssh-keygen -t rsa

    此处我直接用之前生成的公钥文件

    root@kubuntu:~/gitosis-admin# cp /root/.ssh/id_rsa.pub keydir/liuhongdi.pub

    2,编辑gitosis文件,新加一个项目

    root@kubuntu:~/gitosis-admin# vi gitosis.conf

    增加以下配置:

    [group think_admin]
    members = liuhongdi
    writable = think_admin

    说明:members是成员的列表,此处的名字应该和keydir目录中的pub文件一致

             例如: liuhongdi   对应着 keydir目录下   liuhongdi.pub

        writable: 表示对项目 think_admin 有读写的权限,与之相应的是只读: readonly
    group 表示是一个组,后面的think_admin表示组名,不与其他group重复即可,通常我们会使用项目名称

    3,提交gitosis的修改到代码服务器

    提交前看一下状态:

    root@kubuntu:~/gitosis-admin# git status
    位于分支 master
    您的分支与上游分支 'origin/master' 一致。
    尚未暂存以备提交的变更:
      (使用 "git add <文件>..." 更新要提交的内容)
      (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
            修改:     gitosis.conf
    未跟踪的文件:
      (使用 "git add <文件>..." 以包含要提交的内容)
            keydir/liuhongdi.pub
    修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

    提交到项目

    root@kubuntu:~/gitosis-admin# git add -A
    root@kubuntu:~/gitosis-admin# git commit -m "新增liuhongdi账号及think_admin项目";
    [master 44be9e4] 新增liuhongdi账号及think_admin项目
     2 files changed, 4 insertions(+)
     create mode 100644 keydir/liuhongdi.pub

    push到git服务器

    root@kubuntu:~/gitosis-admin# git push origin master
    枚举对象: 7, 完成.
    对象计数中: 100% (7/7), 完成.
    使用 2 个线程进行压缩
    压缩对象中: 100% (4/4), 完成.
    写入对象中: 100% (4/4), 471 bytes | 471.00 KiB/s, 完成.
    总共 4 (差异 0),复用 0 (差异 0)
    To ssh://123.124.125.126:12345/gitosis-admin.git
       2c4f848..44be9e4  master -> master

    4,有文档中提到需要从git服务器端初始化一个空代码库,实践中没必要这样做

    三,客户端的think_admin项目, push到远程代码库

    1,给think_admin配置remote:远程代码库的地址

       当前的remote为空

    root@kubuntu:/data/web/think_admin# git remote -v

    添加remote

    root@kubuntu:/data/web/think_admin# git remote add origin ssh://git@123.124.125.126:12345/think_admin.git  
    root@kubuntu:/data/web/think_admin# git remote -v
    origin  ssh://git@123.124.125.126:12345/think_admin.git (fetch)
    origin  ssh://git@123.124.125.126:12345/think_admin.git (push)

    2,push到远程代码库

    root@kubuntu:/data/web/think_admin# git push origin master
    Initialized empty Git repository in /home/git/repositories/think_admin.git/
    枚举对象: 1492, 完成.
    对象计数中: 100% (1492/1492), 完成.
    使用 2 个线程进行压缩
    压缩对象中: 100% (1411/1411), 完成.
    写入对象中: 100% (1492/1492), 3.72 MiB | 7.18 MiB/s, 完成.
    总共 1492 (差异 277),复用 0 (差异 0)
    remote: Resolving deltas: 100% (277/277), done.
    To ssh://123.124.125.126:12345/think_admin.git
     * [new branch]      master -> master

    四,web服务器端:发布think_admin项目

    1,在web服务器端生成密钥对:

    [root@yjweb ~]# ssh-keygen -t rsa
    Generating public/private rsa key pair.
    ......

    说明:一路回车即可,不需要指定文件名和密码

    2,在gitosis-admin的机器上下载web服务器的pub文件,

       并保存到keydir目录下

    root@kubuntu:/data/git# mv root47.pub gitosis-admin/keydir/

    在gitosis.conf中新加用户:

    root@kubuntu:/data/git/gitosis-admin# vi gitosis.conf

    增加下面的一个group

    [group think_admin_ro]
    members = root47
    readonly = think_admin

    说明:新增一个group,指定只读的用户

             我们不建议从服务器提交代码,避免产生误操作,

             所以给web服务器只读的权限

    root@kubuntu:/data/git/gitosis-admin# git add -A
    root@kubuntu:/data/git/gitosis-admin# git commit -m "新加root47用户,供web服务器使用";
    root@kubuntu:/data/git/gitosis-admin# git push origin master
    枚举对象: 14, 完成.
    对象计数中: 100% (14/14), 完成.
    使用 2 个线程进行压缩
    压缩对象中: 100% (11/11), 完成.
    写入对象中: 100% (11/11), 1.53 KiB | 1.53 MiB/s, 完成.
    总共 11 (差异 3),复用 0 (差异 0)
    To ssh://123.124.125.126:12345/gitosis-admin.git

    3,回到web服务器,发布think_admin项目

    [root@yjweb web]# git clone ssh://git@123.124.125.126:12345/think_admin.git

    克隆完成后,

    把模板文件目录创建

    [root@yjweb think_admin]# mkdir templates_action_c
    [root@yjweb think_admin]# chmod 777 templates_action_c

    把配置文件添加到conf目录

    [root@yjweb think_admin]# cp /data/web/think_admin.bak/conf/constant_define.php /data/web/think_admin/conf/

    测试运行

    五,查看本地centos的版本

    [webop@yjweb ~]$ cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core) 
  • 相关阅读:
    Android 黑科技保活实现原理揭秘
    Flutter +携程=?
    图解设计模式-Prototype模式
    图解设计模式-Singleton模式
    比较B-tree索引与Hash索引
    类元数据Class Metadata
    DriverManager类
    XMLMapperBuilder类
    PooledDataSource类
    Java并发编程的艺术(笔记)
  • 原文地址:https://www.cnblogs.com/architectforest/p/12457035.html
Copyright © 2020-2023  润新知