云服务器之密钥认证和git hook配置

本地操作系统:mac os
远程服务器操作系统:ubuntu14.04 64位

密钥认证

每次登陆云服务器时需要输入密码,这样很麻烦。这个时候需要进行密钥认证即可。

  1. 首先在本地生成密钥
ssh-keygen

输入该命令之后,将你的用户根目录下面的.ssh的id_rsa.pub中内容复制到远程服务器根目录下的.ssh的authorized_keys文件中。然后通过ssh进行连接,你会发现不需要密码了。

git hook配置

由于远程云服务器编写代码不太方便,所以需要本地编写代码然后上传到服务器,如果将代码上传到github上则不是很方便,经过一番查找,发现一个简单的方法,通过git hook进行远程仓库进行配置,可以进行服务器的自动部署。

  1. 首先在服务器建立远程仓库
$ cd /opt/git
$ mkdir skynet
$ git init --bare

我在/opt/git/skynet文件目录下初始化了一个空的远程仓库

  1. 在本地连接远程仓库
$ cd ~/workspace/skynet
$ git init
//创建一个文件,写点内容
$vim REDAME
$git add .
$git remote add origin [email protected]:/opt/git/skynet
$git commit -m "first commit"
$git push origin master

在本地创建了一个工作空间,skynet正是本地代码库,然后git remote add是添加远程仓库,远程仓库格式为:远程连接域名+仓库地址。
最后提交即可

  1. 创建远程代码库,并编写脚本自动更新
git clone /opt/git/skynet /var/www/skynet

这段代码是在/var/www/skynet文件夹下创建远程代码库
编写post_receive文件进行脚本自动更新

$ cd /opt/git/skynet/hooks
$ vim post_reveive

编写/opt/git/skynet/hooks/post_reveive文件

#!/bin/sh
DeployPath="/var/www/skynet"
unset GIT_DIR
cd $DeployPath

git pull

最后赋给post_receive权限

$ chmod -x post_receive

这样你在本地编写代码,然后通过push提交后,就会在/var/www/skynet下看到代码更新了。
当然git hook的功能并只是这么简单。可以看一下hooks文件夹下的文件

applypatch-msg.sample  pre-applypatch.sample      pre-rebase.sample
commit-msg.sample      pre-commit.sample          update.sample
post-receive           prepare-commit-msg.sample
post-update.sample     pre-push.sample

以.sample是不起作用的,可以看到hook下有很多.example文件,可以针对代码提交过程的前后进行代码操作。具体的功能到需要用到的时候再解释。

你可能感兴趣的:(云服务器之密钥认证和git hook配置)