您的位置:首页 > 编程语言

在亚马逊AWS(ubuntu)服务器搭建git,用git从客户端上传代码到服务器

2017-07-26 22:57 316 查看
背景介绍:

本地客户端电脑是windows 10系统(64位),服务器是申请的亚马逊AWS免费版,服务器的系统是ubuntu 16.04。

为了将自己电脑(本地客户端)上写的代码上传到服务器上,需要在客户端、服务器上都装上git,同时进行设置。

详情如下:

1. 在服务器端安装git

(1)连接服务器,并输入命令 sudo apt-get install git ,即安装好git

(2)为了安全,新建一个专门部署代码的无特权用户。

输入命令 useradd -m git

需设置密码,之后还会提示输入一些其他信息,不用理会,直接enter就可以了。

【注意,有人建议禁用用户git的shell权限,即不能通过命令进入git用户,也无法用账户名和密码连接git。

禁用的方法是,输入命令:vim /etc/passwd

即打开文件passwd,将其中的

 git:x:1001:1001::/home/git:/bin/bash 

替换成

git:x:1001:1001::/home/git:/usr/bin/git-shell。

本文的方法,不能禁用用户git的shell权限,即无需替换】

(3)新建一个文件夹作为接收代码的仓库

依次输入命令:

cd /home

mkdir git_repository

即切换到home文件夹,然后新建一个文件夹git_repository

(4)把文件夹git_repository所有者和所在用户组都改成git用户,输入:

chown -R git:git git_repository

【注意,命令中一定要有-R,否则在客户端推送文件到服务器的时候,会出现insufficient permission for adding an object to repository database 的错误】

(5)切换到文件夹git_repository,初始化为git仓库,依次输入:

cd /home/git_repository

git init

然后,让仓库接收代码提交:

git config receive.denyCurrentBranch ignore

(6)在/home/git下创建.ssh文件夹,并在.ssh下创建authorized_keys文件【很重要,后面有用】

分别输入如下命令即可:

cd /home/git/

mkdir .ssh        【创建文件夹用mkdir】

cd /home/git/.ssh/

touch authorized_keys      【创建文件用touch】

注意,如果无效查看/etc/ssh/sshd_config文件一行:(AuthorizedKeysFile

%h/.ssh/authorized_keys)有没有被注释掉,重启ssh服务(命令为service ssh restart)

2. 在客户端安装git

(1)因为自己的电脑(也就是客户端)是windows 10 系统,所以直接在git的官网下载对应的源程序,双击安装,一直点确定即可。

安装成功后
c04d
,电脑上回多出来如下界面:



(2)打开上图的Git GUI,点击“Created New Repository”在客户端某个文件夹上创建客户端上的.git仓库。

然后,打开上图的Git Bash,它可以使用命令来配置本地的Git。

首先,配置本地的git用户名和邮箱(git是通过用户名和邮箱作为登录方式的),命令分别如下两行:

git config --global user.name “用户名”

git config --global user.email “邮箱”

(3)在自己的电脑上生成git密钥(密钥有公钥id_rsa.pub和私钥id_rsa,用来作为和远程服务器连接的验证)

在Git Bash中输入如下命令:

ssh-keygen -t rsa

并按回车三下,(是因为有提示你是否需要设置密码,如果设置了每次使用git都会用到密码,一般不设置,直接回车)。

运行结果如下图,红框中的地址就是公钥和私钥的存储地址。



(可以用命令 cat ~/.ssh/id_rsa.pub查看公钥的内容)

(4)将自己电脑上的公钥id_rsa.pub上传到服务器上,仍然需要在Git Bash中输入命令,如下:

cat ~/.ssh/id_rsa.pub | ssh root@服务器的IP地址 "cat >> /home/git/.ssh/authorized_keys"

(上面命令的大概意思是将本地的公钥上传到服务器,并写入在1.6部创建的文件中。其中,root为服务器的用户名,命令确定后需输入root的密码。完成后,可在服务器上输入 vi/home/git/.ssh/authorized_keys,查看里面的内容是否和id_rsa.pub一样,如一样,即上传成功)

【注意:上面的命令运行时,如出现错误 Permission denied (publickey)时的解决办法,如下:

在服务器上,输入命令:

sudo vi /etc/ssh/sshd_config

找到:PermitRootLogin prohibit-password禁用

添加:PermitRootLogin yes

退出并保存。

再输入命令,sudo service ssh restart】

(5)打开Git GUI,点击Remote--Add,出现如下界面,Name对应的框中随意输入一个名字,

Location对应的框中输入 git@***.***.***.***:/home/git_repository/.git

@前面的git就是第1.2步在服务器创建的用户git,***.***.***.***是服务器的IP地址,后面的为第1.5步在服务器上建立的git仓库。



点击上图中的add按钮,成功后的界面如下图:



这样,就成功建立了客户端git与服务器git之间的联系。

【注意,如在第1.2步中修改了 git:x:1001:1001::/home/git:/bin/bash 为 git:x:1001:1001::/home/git:/usr/bin/git-shell,会有连接错误。】

3.  推送文件到服务器git

(1)打开Git GUI,如下图,点击客户端的git仓库地址(自己电脑上的是“E:/gitdir”),如果没有,可以点击“Created New Repository”新建一个。



(2)打开后,出现如下界面,按标记的顺序,依次点击5个按钮,即可。



(3)点击上图的“Push”按钮会出现下图的界面,注意红框中的三个选项,选择1个,点“Push”按钮。如上传成功,会有Success的提示。



4. 在服务器上获取文件

在其他客户端下载第3步推送到服务器git的文件就不说了。这里介绍如何把服务器git里的文件放到服务器其他的文件夹中。

其实,在服务器的git目录中,是看不到本地上传的文件的,也无法对他们进行操作。

如需将这些文件取出来放在服务器的其他文件夹,可用如下命令:

git clone git@***.***.***.***:/home/git_repository/.git  /where/you/want/

上面,git@***.***.***.***:/home/git_repository/.git 是服务器及服务器上git的地址, /where/you/want/ 是准备放拷贝文件的目录。

此外,当本地客户端的文件提交到服务器后,如果希望/where/you/want/中的文件也自动更新,可使用git hook来配置。

【非常有用的命令,git hook部署代码、git-dir、work-tree、git clone,留着】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: