重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
昨晚尝试搭建一个Git服务器,在搭建好服务器后,在服务器创建了一个空项目,我在本地使用git clone 拉取项目时,报了fatal: protocol error: bad line length character: This的错误。这个问题是出在Git服务器端,不是Git客户端的问题,所以Git客户端不需要修改任何东西。
成都创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为杨浦企业提供专业的成都网站建设、成都做网站,杨浦网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
我们可以查看如果我们是通过git用户拉去项目的,我们可以在服务器端通过cat /etc/passwd来查看git的登录shell,应该可以看到类似下面一行:
我们可以通过vim把它改为
或者通过命令修改也可以
这样Git客户端就可以通过git账户拉取项目啦。
先搞明白Hexo博客从搭建到自动发布的架构,才能更好的理解我们每一步进行的操作。
不然只跟着步骤过了一遍,却不知道为什么这么做。
首先看这张架构图:
整个流程就是本地将 *.md 渲染成静态文件,然后Git推送到服务器的 repository ,服务器再通过 git-hooks 同步网站根目录。
前提条件: 腾讯云服务器
第一部分 : 服务器环境搭建,包括安装 Git 、 Nginx 配置 、创建 git 用户 。
第二部分 : 本地 Hexo 初始化, 包括安装 NodeJS 、 hexo-cli , 生成本地静态网站
第三部分 : 使用Git自动化部署发布博客
NodeJS 安装可以参考: Linux安装NodeJS
找到以下内容
在下面添加一行
保存退出后改回权限
随后设置Git用户的密码,
切换至git用户,创建 ~/.ssh 文件夹和 ~/.ssh/authorized_keys 文件,并赋予相应的权限
然后就可以执行ssh 命令测试是否可以免密登录
至此,Git用户添加完成
我是用的是lnmp 一键安装包,nginx安装教程一大堆,就不再叙述。主要看nginx配置。
找到nginx的配置文件,修改配置如下:
首先要安装 hexo-cli ,安装 hexo-cli 需要 root 权限,使用 sudo 运行
然后初始化Hexo程序
等执行成功以后安装两个插件, hexo-deployer-git 和 hexo-server ,这俩插件的作用分别是使用Git自动部署,和本地简单的服务器。
hexo-deployer-git帮助文档
hexo-server帮助文档
使用 hexo new 文章名称 来新建文章,该命令会成成一个 .md 文件放置在 sources/_posts 文件夹。
编辑完毕以后, 使用 hexo g 将 .md 文件渲染成静态文件,然后启动 hexo-server :
现在便可以打开浏览器访问 来查看我们的博客了!
创建一个裸仓库,裸仓库就是只保存 git 信息的 Repository , 首先切换到 git 用户确保 git 用户拥有仓库所有权
一定要加 --bare ,这样才是一个裸库。
在这里我们使用的是 post-receive 这个钩子,当git有收发的时候就会调用这个钩子。 在 ~/blog.git 裸库的 hooks 文件夹中,
新建 post-receive 文件。
保存后,要赋予这个文件可执行权限
然后打开 _config.yml , 找到 deploy
保存后,尝试将我们刚才写的"hello hexo"部署到服务器
访问服务器地址,就可以看到我们写的文章"Hello hexo",以后写文章只需要:
博客就更新咯!~
使用 Git Hook 自动部署 Hexo 到个人 VPS
Hexo 文档
搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。
假设你已经有sudo权限的用户账号,下面,正式开始安装。
第一步,安装git:
$ sudo apt-get install git
第二步,创建一个git用户,用来运行git服务:
$ sudo adduser git
第三步,创建证书登录:
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。
第四步,初始化Git仓库:
先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令:
$ sudo git init --bare sample.git
Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
$ sudo chown -R git:git sample.git
第五步,禁用shell登录:
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
第六步,克隆远程仓库:
现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行:
$ git clone git@server:/srv/sample.git
Cloning into 'sample'...
warning: You appear to have cloned an empty repository.
剩下的推送就简单了。