云服务器之密钥认证和git hook配置
2017-08-07 本文已影响26人
小奚有话说
本地操作系统:mac os
远程服务器操作系统:ubuntu14.04 64位
密钥认证
每次登陆云服务器时需要输入密码,这样很麻烦。这个时候需要进行密钥认证即可。
- 首先在本地生成密钥
ssh-keygen
输入该命令之后,将你的用户根目录下面的.ssh的id_rsa.pub中内容复制到远程服务器根目录下的.ssh的authorized_keys文件中。然后通过ssh进行连接,你会发现不需要密码了。
git hook配置
由于远程云服务器编写代码不太方便,所以需要本地编写代码然后上传到服务器,如果将代码上传到github上则不是很方便,经过一番查找,发现一个简单的方法,通过git hook进行远程仓库进行配置,可以进行服务器的自动部署。
- 首先在服务器建立远程仓库
$ cd /opt/git
$ mkdir skynet
$ git init --bare
我在/opt/git/skynet文件目录下初始化了一个空的远程仓库
- 在本地连接远程仓库
$ 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是添加远程仓库,远程仓库格式为:远程连接域名+仓库地址。
最后提交即可
- 创建远程代码库,并编写脚本自动更新
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文件,可以针对代码提交过程的前后进行代码操作。具体的功能到需要用到的时候再解释。