使用 Git Hook 自动部署 Hexo 到个人 VPS

前几个文章安装了git
现在配置下git 实现自动部署
第一步

安装 git:(Ubuntu 14.04)

$ sudo apt-get install git

//yum install git

第二步

创建一个 git 用户,用来运行 git 服务:

$ sudo adduser git
虽说现在的仓库只有我们自己在使用,新建一个 git 用户显得不是很有必要,但是为了安全起见,还是建议使用单独的 git 用户来专门运行 git 服务
设置密码git 用户密码
passwd git xxxx

第三步

创建证书登录,把自己电脑的公钥,也就是 ~/.ssh/id_rsa.pub 文件里的内容添加到服务器的 /home/git/.ssh/authorized_keys 文件中,添加公钥之后可以防止每次 push 都输入密码。
看前面文章配置这个里面的步骤缺失对centos 6 来说配置的不够

第四步

初始化 Git 仓库,我是将其放在 /var/repo/blog.git 目录下的:

1
2
3
$ sudo mkdir /var/repo
$ cd /var/repo
$ sudo git init --bare blog.git

使用 –bare 参数,Git 就会创建一个裸仓库,裸仓库没有工作区,我们不会在裸仓库上进行操作,它只为共享而存在。

第五步

配置 git hooks,关于 hooks 的详情内容可以参考这里。

我们这里要使用的是 post-receive 的 hook,这个 hook 会在整个 git 操作过程完结以后被运行。

在 blog.git/hooks 目录下新建一个 post-receive 文件:

1
2
$ cd /var/repo/blog.git/hooks
$ vim post-receive

在 post-receive 文件中写入如下内容:

1
2
#!/bin/sh
git --work-tree=/var/www/hexo --git-dir=/var/repo/blog.git checkout -f

注意,/var/www/hexo 要换成你自己的部署目录,一般可能都是 /var/www/html。上面那句 git 命令可以在我们每次 push 完之后,把部署目录更新到博客的最新生成状态。这样便可以完成达到自动部署的目的了。

不要忘记设置这个文件的可执行权限:

1
chmod +x post-receive

注: 如果hook 钩子失效, 注意钩子写文件的地方的文件权限
第六步

改变 blog.git 目录的拥有者为 git 用户:

1
$ sudo chown -R git:git blog.git

第七步

禁用 git 用户的 shell 登录权限。

出于安全考虑,我们要让 git 用户不能通过 shell 登录。可以编辑 /etc/passwd 来实现,在 /etc/passwd 中找到类似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash
将其改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样 git 用户可以通过 ssh 正常使用 git,但是无法登录 sehll

至此,服务器端的配置就完成了。注: 我的配置这里不行

本地配置

配置你的 hexo 博客可以自动 deploy 到服务器上,再也不用 ftp 上传了。

修改 hexo 目录下的 _config.yml 文件,找到 [deploy] 条目,并修改为:

deploy:
type: git
repo: git@www.swiftyper.com:/var/repo/blog.git
branch: master

要注意切换成你自己的服务器地址,以及服务器端 git 仓库的目录。
如果识别不了地址可以用ssh 开头的标准地址, 前面日记也有记录
如:我的配置

1
2
3
4
5
6
7
8
deploy:
type: git
repo:
github: https://github.com/czboosj/czboosj.github.io.git,master
coding: https://git.coding.net/czboosj/czboosj.git,master
104.194.94.204: ssh://git@104.194.94.204:26327/var/repoblog/blog.git
branch: master

本地配置就是如此地简单。至此,我们的 hexo 自动部署已经全部配置好了。

大多数内容转自
http://www.swiftyper.com/2016/04/17/deploy-hexo-with-git-hook/

Centos6 下为git配置SSH验证

server
1.首先安装git

1
yum install git

2.新建一个linux用户,起名为git

1
adduser git

3.在git用户目录中新建目录 .ssh

1
2
cd /home/git/
mkdir .ssh

4.在/home/git/.ssh/目录中新建authorized_keys文件,并将客户端提供的公钥(id_rsa.pub)黏贴到该文件中
touch authorized_keys 或 vi authorized_keys

5.在项目目录创建一个git裸仓库,假如当前项目目录为/home/git/project.git
git init –bare project.git

6.将项目目录和git用户目录下的.ssh目录的所有者和所属组都设置成git

1
2
chown -R git.git project.git
chown -R git.git /home/git/.ssh/

7.为了安全考虑,禁用git用户的shell登录(我这里改了就必须输入密码才行使用,不知道为什么)

1
2
3
vi /etc/passwd
注释 ##git:x:500:500::/home/git:/bin/bash
改为 git:x:500:500:git version control:/home/git:/usr/bin/git-shell

git服务器打开RSA认证

1
2
3
4
5
vi /etc/ssh/sshd_config
下面3个打开
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys

client
1.生成公钥,并复制到剪切板

1
2
ssh-keygen -t rsa
pbcopy < ~/.ssh/id_rsa.pub

此步骤要将公钥发给git服务器管理员

2.在本地新建git仓库

1
git init

3.新建一个文件并推送到服务器

1
2
3
4
5
touch readme.txt
git add readme.txt
git commit -m "readme"
git remote add origin git@xxx.xxx.xxx.xxx:/home/git/project.git
git push origin master

注:如果提示需要密码,请检测公钥是否配置成功或RSA是否开启。
转:
https://blog.phpgao.com/build-git-server.html


转得第二个, 用了里面的权限设置
—- 配置SSH Config
$cd /etc/ssh
$vim sshd_config
// 打开以下三个选项
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

—- 生成SSH Key
$ssh-keygen -t rsa -C email@example.com

一路回车,生成文件 id_rsa, id_rsa.pub

—- 创建SSH ras配置文件

// 添加git用户
$sudo adduser git

// 切换到git
$su git

// 进入git主目录,如/home/git
$cd

// 添加.ssh目录、修改权限
// 注:确认.ssh文件夹建立在git的主目录下,如果找不到文件或git权限不够会无法认证。
$mkdir .ssh && chmod 700 .ssh

// 添加授权文件
$touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

// 把公钥内容复制到授权文件中
$cat id_rsa.pub > .ssh/authorized_keys

—- 服务端创建git bare
$cd /home/git
$mkdir test.git
$cd test.git
$git init –bare

—- 客户端git连接
把私钥id_rsa复制到本地客户端,路径如下:
windows => C:\Users\.ssh\id_rsa

// 启动git shell并进入某个git项目下
// 添加远程url,使用这个方法主要是可能ssh带有非22的默认端口号
git remote set-url origin ssh://git@server:port/home/git/demo.git

// 开始使用git

—- 附:在创建git用户后,为了安全,最好限制git用户不能使用shell

$cat /etc/shells // 看是否已经配置了git-shell,如果没有再添加上去
$which git-shell // 查找git-shell,一般为 /usr/local/bin/git-shell
$vim /etc/shells // 把git-shell路径添加到shells中
$chsh git // 为git用户指定使用的git-shell路径。
$/usr/local/bin/git-shell // 输入git-shell路径

修改了SSH默认端口之后,如何配置git

由于安全或者其它原因,我们可能会修改默认的SSH服务端口号,默认情况下,已有的git项目在pull或者push的时候会报错。

现在假设原来的项目的remote设置为git@domain.com:Projects/p1.git,将服务器SSH默认端口修改为3022后,导致push出错。

有两个解决办法:

一、直接修改URL为SSH://开头

git remote set-url origin ssh://git@domain.com:3022/~/Projects/p1.git
二、 修改本地配置文件

cat>~/.ssh/config

映射一个别名

host newdomain
hostname domain.com
port 3022

ctrl+D

修改p1.git项目下的git配置文件

git remote set-url origin git@newdomain:Projects/p1.git

转自http://zengrong.net/post/1544.htm

ubuntu 自带vi 不好用问题解决

安装vim full版本
由于Ubuntu预安装的是tiny版本,就会导致我们在使用上的产生不便。所以我们要安装vim的full版本。
首先,先卸掉旧版的vi,输入以下命令: sudo apt-get remove vim-common
然后安装full版的vim,输入命令:sudo apt-get install vim
这样安装好了之后的VI就没有那么难用了。
此方法是我自己使用的,很有效,但就是得联网。

VMWare中ubuntu虚拟机设置分辨率

安装虚拟机ubuntu 分辨率问题

安装好之后分辨率不对, 得安装vmware tools

  1. 启动虚拟机
  2. 虚拟机菜单,安装tools
  3. 会再虚拟机上产生一个cd盘
  4. 随意一个建一个文件夹把cd 光驱里面的文件拷贝到自建文件夹
  5. 打开终端 cd 到自建文件夹 如 cd/temp , 或者先ls 下看看自己的位置在一步步cd 到位置
  6. tar zxvf VMwareTools-xxxx.tar.gz 解压这个文件夹,xxx 是版本信息
  7. cd 到解压的文件夹
  8. sudo ./VMware-install.pl 根据提示输入密码(sudo 的本机授权密码), 一路 yes 然后等待安装好,重启虚拟机就ok了

企业信息

北京智诚科普科技发展有限公司

游乐设备,儿童游乐园,水乐园

税号:911101143303060371
经营范围:专业承包;技术推广、技术服务;设计、制作、代理、发布广告;会议服务;承办展览展示;组织文化艺术交流活动(不含演出);应用软件服务;基础软件服务;销售日用品、家具、文化用品、体育用品、工艺品、汽车配件、家用电器、计算机、软件及辅助设备;零售金属材料、建筑材料、化工产品(不含危险化学品)、机械设备、电子产品、五金交电、通讯设备。(市场主体依法自主选择经营项目,开展经营活动;依法须经批准的项目,经相关部门批准后依批准的内容开展经营活动;不得从事国家和本市产业政策禁止和限制类项目的经营活动。)
张金伯18600080086

合肥轩伟自动化科技有限公司

游乐设备,儿童游乐园,水乐园

税号:913401000852390953
经营范围:技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;智能基础制造装备销售;五金产品零售;五金产品批发;文化场馆管理服务;科普宣传服务;专业设计服务;集成电路设计;会议及展览服务;工程管理服务;工程技术服务(规划管理、勘察、设计、监理除外);智能控制系统集成;信息系统集成服务;园林绿化工程施工;对外承包工程;软件开发;平面设计;广告制作(除许可业务外,可自主依法经营法律法规非禁止或限制的项目)许可项目:建筑智能化系统设计;建筑智能化工程施工;人防工程设计;建设工程设计;各类工程建设活动;工程造价咨询业务(依法须经批准的项目,经相关部门批准后方可开展经营活动)
莫宏伟:18056006486