零,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)