环境:CentOS 7 *2 192.168.11.{29,30}
Git 版本1.8.3
Httpd 版本2.4.5
1、服务端centos7_30配置
[root@CentOS7_30~]#getenforce#查看selinux Enforcing [root@CentOS7_30~]#setenforce0#设定为0宽容模式 [root@CentOS7_30~]#vim/etc/selinux/config#修改配置文件,改为disabled [root@CentOS7_30~]#iptables-F#清楚防火墙配置 [root@CentOS7_30~]#yuminstallgit-daemon-y#安装git-daemon守护进程 [root@CentOS7_30~]#git--version#查看版本 gitversion1.8.3.1 [root@CentOS7_30~]#rpm-qlgit-daemon#查看安装信息 /usr/lib/systemd/system/git.socket /usr/lib/systemd/system/git@.service /usr/libexec/git-core/git-daemon ... [root@CentOS7_30~]#cat/usr/lib/systemd/system/git@.service#查看仓库的定义,--base-path为仓库,也可以修改它自定义指定仓库 [Unit] Description=GitRepositoriesServerDaemon Documentation=man:git-daemon(1) [Service] User=nobody ExecStart=-/usr/libexec/git-core/git-daemon--base-path=/var/lib/git--export-all--user-path=public_git--syslog--inetd--verbose StandardInput=socket [root@CentOS7_30git]#gitinit--bareproject.git#创建裸仓库 InitializedemptyGitrepositoryin/var/lib/git/project.git/ [root@CentOS7_30git]#ll#查看是否创建成功 total4 drwxr-xr-x.7rootroot4096Oct1121:24project.git [root@CentOS7_30git]#systemctlstartgit.socket#启动git-daemon [root@CentOS7_30git]#ss-tnl|grep9418#查看是否启动成功 LISTEN0128:::9418:::*
2、centos7_29客户端clone
[root@CentOS7_29~]#yuminstallgit-y#安装git [root@CentOS7_29~]#git--version#查看版本,centos6.x都是1.7.1,使用http密码验证会有问题 gitversion1.8.3.1 [root@CentOS7_29~]#gitclonegit://192.168.11.30/project.git#clone Cloninginto'project'... warning:Youappeartohaveclonedanemptyrepository. [root@CentOS7_29~]#ls#查看是否成功 anaconda-ks.cfgproject [root@CentOS7_29~]#cdproject/#进入仓库 [root@CentOS7_29project]#ls-a#查看是否有问题, ....git [root@CentOS7_29project]#echo"print'sunshine'">code.py#在仓库新建文件 [root@CentOS7_29project]#gitstatus#查案状态 #Onbranchmaster # #Initialcommit # #Untrackedfiles: #(use"gitadd<file>..."toincludeinwhatwillbecommitted) # # code.py nothingaddedtocommitbutuntrackedfilespresent(use"gitadd"totrack) [root@CentOS7_29project]#gitaddcode.py#加入暂存区 [root@CentOS7_29project]#gitcommit-m"v0.1"#commit并说明,第一次会提示输入用户更邮箱 ***Pleasetellmewhoyouare. Run gitconfig--globaluser.email"you@example.com" gitconfig--globaluser.name"YourName" tosetyouraccount'sdefaultidentity. Omit--globaltosettheidentityonlyinthisrepository. fatal:unabletoauto-detectemailaddress(got'root@CentOS7_29.(none)') [root@CentOS7_29project]#gitconfig--globaluser.email"sunshine@sunshine.com"#设置邮箱 [root@CentOS7_29project]#gitconfig--globaluser.namesunshine#设置用户 [root@CentOS7_29project]#gitconfig--globalcolor.uiauto#设置颜色 [root@CentOS7_29project]#gitcommit-m"v0.1"#再次提交 [master(root-commit)4d0d265]v0.1 1filechanged,1insertion(+) createmode100644code.py [root@CentOS7_29project]#gitlog commit4d0d265d8511f338abb8b4e0652c3a1a6656a892 Author:sunshine<sunshine@sunshine.com> Date:TueOct1121:33:372016+0800 v0.1 [root@CentOS7_29project]#gitlog--oneline#查看log 4d0d265v0.1 [root@CentOS7_29project]#gitpushoriginmaster#push失败,因为git不止写操作 fatal:remoteerror:accessdeniedorrepositorynotexported:/project.git
3、在centos7_30服务器配置使用htto协议
[root@CentOS7_30project.git]#pwd#进入项目仓库 /var/lib/git/project.git [root@CentOS7_30project.git]#gitconfighttp.receivepacktrue#配置gitconfig即可 [root@CentOS7_30~]#yuminstallhttpd-y#安装httpd [root@CentOS7_30~]#httpd-M|grep-Ei"\<(alias|cgi|env)"#必须要有这三个模块 AH00557:httpd:apr_sockaddr_info_get()FailedforCentOS7_30 AH00558:httpd:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,using127.0.0.1.Setthe'ServerName'directivegloballytosuppressthismessage alias_module(shared) env_module(shared) cgi_module(shared) [root@CentOS7_30~]#vim/etc/httpd/conf/httpd.conf#编辑httpd文件,注销中心主机 注销DocumentRoot中心主机 [root@CentOS7_30~]#vim/etc/httpd/conf.d/git.conf#新增git.conf定义虚拟主机 <VirtualHost*:80>#定义端口 ServerNamegit.sunshine.com#定义域名 SetEnv GIT_PROJECT_ROOT/var/lib/git#定义项目路径 SetEnv GIT_HTTP_EXPORT_ALL#使用HTTP导出 ScriptAlias/git//usr/libexec/git-core/git-http-backend/#千万注意如果git后面没有/那么git-http-backend后面也一定不能有/ <Directory"/usr/libexec/git-core/">#该目录下好像都是一些prel脚本 OptionsExecCGIIndexes Requireallgranted </Directory> <LocationMatch"^/git/.*/git-receive-pack$">#匹配我们定义的 AuthTypeBasic#使用标准认证 AuthName"sunshinetestproject."#描述 AuthUserFile/etc/httpd/conf/.htpasswd#存放账户密码的地方 Requirevalid-user </LocationMatch> </VirtualHost> [root@CentOS7_30~]#chown-Rapache.apache/var/lib/git/#设定用户及用户组,不设定那么你是没权限的 [root@CentOS7_30git-core]#htpasswd-c-m/etc/httpd/conf/.htpasswdtom#创建账户密码第一次使用-c Newpassword: Re-typenewpassword: Addingpasswordforusertom [root@CentOS7_30git-core]#htpasswd-m/etc/httpd/conf/.htpasswdjerry#创建账户密码第二次不要使用-c,不然你就一直就是一个用户 Newpassword: Re-typenewpassword: Addingpasswordforuserjerry [root@CentOS7_30git-core]#systemctlstarthttpd.service#启动httpd服务:::* [root@CentOS7_30git-core]#ss-tnl|grep80#查看是否启动成功 LISTEN0128:::80:::*
4、在centos7_29客户端pull以及push
[root@CentOS7_29~]#cat/etc/hosts#编辑hosts增加域名host 127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4 ::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6 192.168.11.30git.sunshine.com [root@CentOS7_29~]#gitclonehttp://git.sunshine.com/git/project.git#使用http协议clone Cloninginto'project'... warning:Youappeartohaveclonedanemptyrepository. [root@CentOS7_29~]#cdproject/#进入project仓库 [root@CentOS7_29project]#ls#查看仓库 [root@CentOS7_29project]#!echo#创建python脚本 echo"print'sunshine'">code.py#该为完整命令,上面的使用记录! [root@CentOS7_29project]#gitaddcode.py#条件脚本gitadd [root@CentOS7_29project]#gitcommit-m"v0.1"#commit并说明 [master(root-commit)d847298]v0.1 1filechanged,1insertion(+) createmode100644code.py [root@CentOS7_29project]#gitpushoriginmaster#push至远程仓库 Countingobjects:3,done. Writingobjects:100%(3/3),215bytes|0bytes/s,done. Total3(delta0),reused0(delta0) Usernamefor'http://git.sunshine.com':tom#提示输入账号,输入创建的tom Passwordfor'http://tom@git.sunshine.com':#输入密码,就可以提交成功 Tohttp://git.sunshine.com/git/project.git *[newbranch]master->master