云服务器之密钥认证和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 root@example.com:/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文件,可以针对代码提交过程的前后进行代码操作。具体的功能到需要用到的时候再解释。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 本文为 Git教程的学习笔记,教程源自廖雪峰的博客。这是一个由浅入深,学完后能立刻上手的Git教程。另,附上另一本...
    七弦桐语阅读 6,275评论 5 47
  • 那一天 我不得已上路 为不安分的心 为自尊的生存 为自我的证明 路上的辛酸已融进我的眼睛 心灵的...
    曹珺阅读 285评论 0 0
  • 我爱发发宝阅读 231评论 0 0
  • 得益胃里满是泡沫的啤酒、鼻腔残留的不怎么会抽的烟,昨天夜里倒是没怎么失眠,倒是因为空调开得太低了,...
    窥天命阅读 244评论 0 2