腾讯云部署git服务器 腾讯云部署git服务器错误

fatal: protocol error: bad line length character: This

昨晚尝试搭建一个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博客

先搞明白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服务器

搭建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.

剩下的推送就简单了。


当前文章:腾讯云部署git服务器 腾讯云部署git服务器错误
转载注明:http://scyanting.com/article/ddsjggc.html