git服务器搭建

来源:互联网 发布:淘宝冻结卖家资金多久 编辑:程序博客网 时间:2024/05/14 07:43

修改程序都是在本地电脑上,运行程序则需要在服务器上,想在本地电脑和服务器做同步


1. 环境

  • 本地电脑:ubuntu16.04,局域网, 用户名jankyee
  • 服务器:ubuntu16.04,公网,没有root权限,用户名为jankyee
  • git版本:2.7.4

git服务器搭建在服务器上(有公网IP)

2. 服务器配置

网上流传的步骤一般是新建一个git用户[1],但是由于服务器上没有root权限,因此直接使用用户名jankyee。而与服务器的连接使用ssh

  • 在服务器的/home/jankyee目录下新建一个名为lab_server.git 的仓库: git --bare init lab_server.git
    • git initgit --bare init的区别:用git init初始化的服务器仓库,服务器用户可以直接执行所有git操作来修改仓库,当有其他用户push上来时可能会冲突,导致版本混乱。而git --bare init 则产生一个“裸”仓库,意思就是这个仓库只保存git提交记录的版本信息,而不允许服务器用户直接在上面进行进行git操作,否则会报错This operation must be run in a work tree。一般来说,服务器仓库一般初始化为裸仓库较好。
  • ssh配置,在/home/jankyee/.ssh 中新建文件authorized_keys, 将客户端的公钥填入文件中,一行一个(后面会详细讲)
  • todo

3. 客户端(本地电脑)配置

  • 生成公钥-私钥对
    ssh-keygen -t rsa -f ~/.ssh/id_rsa.lab_server -C "jankyee@jankyee-pc.com"

    • -C 参数是用来标识身份的,是放在生成的公钥的末尾的。我们知道在生成github的key的时候[2]这里填的是自己的github邮箱账号,这里我用了一个假的邮箱域名,其实随便填都可以。如果不填的话在公钥末尾就是用户名+主机名,我这里是jankyee@jankyee-pc。这个标识代表的git用户的身份,git仓库的版本信息中会有记录。有时需要配置git config user.email,那么这里的这个user.email就是这个标识,其实不一定非要是“邮箱”
    • -f 用来指定生成的位置,以及文件名。
  • 注意区分开github所要用的key,我的github的key的生成方式是
    ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "邮箱账号"

    • 为了使两者同时可以使用,还要配置一下。首先新增配置文件:
      touch ~/.ssh/config
      之后修改权限
      chmod 600 ~/.ssh/config
      然后修改config文件内容为
      这里写图片描述
  • 通过ssh-add -l命令可以看到当前的key的情况,也可以添加,删除等,具体使用参照help

  • 配置客户端免密码登录服务器,将生成的id_rsa.lab_server.pub公钥填写到服务器的~/.ssh/authorized_keys

    • 首先将公钥文件上传到服务器上
      scp ~/.ssh.id_rsa.lab_server.pub labserver:/home/jankyee/.ssh.
      注意这里写的是简写lab_server, 如果是全写的话
      scp ~/.ssh.id_rsa.lab_server.pub jankyee@ip:port/home/jankyee/.ssh
      port后面是没有冒号的
    • 登录服务器(这是仍需要密码)
      ssh lab_server
      cd ~/.ssh
      cat id_rsa.lab_server >> authorized_keys(注意:使用>会直接覆盖,使用>>则是在后面追加)
      再次登录时可发现已经不需要密码了。另外在做git操作的时候同样也不需要密码了
      如果没有配置上面的步骤的话,客户端在git commit的时候会提示需要配置git config --global user.email
  • clone服务器的版本库。选择合适的目录
    git clone lab_server:/home/jankyee/lab_server.git

  • 尝试修改提交(master分支默认为当前分支)
    cd lab_server
    touch test_git
    git add test_git
    git commit -m "test git"
    git push origin master

4. 服务器上查看文件内容

裸仓库是看不到文件内容的,只能看到文件的版本信息,而如果需要在服务器上查看文件的话(也就说最开始说到的同步),其实只用在服务器的工作目录下clone下就行了,相当于服务器上同时存在git服务器和git客户端

  • 一种方法是直接使用本地路径,首先确定合适的工作目录
    git clone 仓库的本地路径
    git commit的时候提示需要配置email,前面也已经说过,填上主机名或者随便即可,只要能确定自己身份就行。

  • 一种方式是把git服务器和git客户端看成两个独立的网络实体,只不过这时git服务器的地址变成了localhost。同样地,按照客户端的步骤,生成公钥-私钥对,同样地,讲公钥追加到authorized_keys文件后面,其余配置和前面说的客户端配置一样。


Refer:
[1] http://www.jianshu.com/p/10b6a1ee7f64
[2] http://blog.csdn.net/hustpzb/article/details/8230454/

0 0
原创粉丝点击