github搭建服务器(怎么clone自己搭建的git服务器)
很多朋友对于github搭建服务器和怎么clone自己搭建的git服务器不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
如何在github上搭建自己的博客_html/css_WEB-ITnose
之前闲暇之余尝试着在github上搭建自己的博客,搭建过程中发现没有自己想象的那么容易,几经波折,好不容易才搭建好了雏形。现在就将在github上构建自己博客的整个流程好好总结一下。
注:本文并非完全原创,在搭建自己博客的时候,我也上网查阅了很多资料,只是网上我所查到的资料或多或少都有这样那样的欠缺。所以,我将这些资料整合在一起,并分享我在构建过程中遇到的问题和解决方法。
另外,在github构建自己博客并非只有一种方法,我整合出来的只是其中的一种。
1.建立一个项目先在GitHub创建一个项目,名字随意,尽量全部小写字母,避免随后会碰到的URL冲突问题。
1.1在自己github右上角上,点击+号按钮,在出现的菜单中选择 New repository
1.2进入到创建仓库页面,给仓库命名并给于描述之后,点击create repository按钮创建仓库
项目创建完毕。
2.安装Git git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。
git的安装地址(http://msysgit.github.io/)
关于git的具体安装步骤可参考http://jingyan.baidu.com/article/90895e0fb3495f64ed6b0b50.html
关于git的常用命令可参考http://www.bootcss.com/p/git-guide/
3.clone项目本地运行Git,随意选个目录,将刚才创建的项目clone下来。
例:
cd/e/bloggit clone https://github.com/stxwd46/EX.github-io.gitcd EX.github-io
4.建立配置文件_config.yml注意:之后建立的所有文档务必使用UTF-8无 BOM(隐藏字符)的编码保存
在项目的根目录下打开git命令行界面,输入命令>> _config.yml新建文件 _config.yml,填写 baseurl:/blogdemo, blogdemo是你的项目名称,这一行内容规定了整个网站的根路径。
例:
baseurl:/EX.github-io
目录结构变为
/EX.github-io|--_config.yml
5.建立主页在根目录下新建文件 index.html,内容如下:
---title: Hello, My Blog---{{ page.title}}
每篇文章的头部,必须有一个yaml文件头,用来设置一些元数据。它用三根短划线"---",标记开始和结束,里面每一行设置一种元数据。"title: Hello, My Blog",表示该文章的标题是"Hello, My Blog",如果不设置这个值,默认使用嵌入文件名的标题,即"hello world"。
在yaml文件头后面,就是文章的正式内容,{{}}这些是Liquid模板语言,在{{}}里面我们可以使用模板变量。{{ page.title}}表示“本页面的标题”,因为我们前面设置了title为Hello, My Blog。所以到时候进入到博客首页,title就会显示相应的文案。
目录结构变成:
/EX.github-io|--_config.yml|-- index.html
6.在_posts内撰写文章,并在首页加入文章列表现在首页有了,那我们怎么发博文上去呢?
回到项目根目录,打开git bash,运行 mkdir _posts新建一个目录,看名字也知道啦,这里存放你所有的文章。
进入_posts目录,新建一篇文章。注意默认的文件名格式是 year-month-day-postTitle这样。比如 2015-05-05-my_first_article.md,尽量避免空格或者其他乱七八糟的字符,这个文件名将作为URL的生成依据。文件名的格式可以通过修改 _config.yml中的 permalink属性而改变,默认值为 date,也就是我们刚刚创建的文件的样子,具体的规则可以看这里。
如果你发现了我刚才创建的文件后缀名是.md,熟悉GitHub或者StackOverFlow的朋友应该知道Markdown格式。对于不熟悉前端的人来说,用markdown可以避开HTML,转而使用更加直观的Markdown语法。如果不熟悉Markdown语法也没关系,可以参见这份Markdown语法说明,应该说是相当易学,并且在熟悉之后非常易用的。而作为一个前端开发者来讲,我还是更倾向于用html。
回到主题,打开刚才创建的文件,输入如下内容:
---title:我的第一篇文章---#{{ page.title}}##目录+ [第一部分](#partI)+ [第二部分](#partII)+ [第三部分](#partIII)----------------------------------##第一部分这里是第一部分的内容----------------------------------##第二部分这里是第二部分的内容----------------------------------##第三部分这里是第三部分的内容{{ page.date|date_to_string}}
这段内容中使用了最常用的几种Markdown语法,比如使用#,##表示 HTML中的,。使用[text](link)创建超链接,使用连续多个-创建水平线(注意:不包括最上端包围title所使用的横线,那里表示一个页面的“头属性”),等等。更多详细的语法可以在之前提到的页面查询,这里不再赘述,总之,这是一种更加贴近真实写作的语法,推荐大家尝试。
页面最后面的那个{{ page.date|date_to_string}}是指显示本页的日期属性,并且转换为可读的字符串形式。同样也是Liquid语法。
OK,第一篇文章就写好了,然后到主页给文章加上入口链接。
打开我们的 index.html文件,添加内容,变成下面这样:
---title: My Blog---{{ page.title}}{% for post in site.posts%}{{ post.date|date_to_string}}{{ post.title}}{% endfor%}
简单解释一下,Liquid标记最主要分为两种,一种是直接输出变量内容,像这样:
{{ page.title}}
另一种则是逻辑命令形式的,像这样:
{% for x in y%}...{% endfor%}
而刚才写进主页的内容,就是遍历所有post文件,然后逐一显示在页面上,这里需要注意的一点就是在创建文章的超链接时,除了 post.url之外,也要注意在前面加上site.url,原因前面也有提到过,我们正在创建的是 Project Pages类型的网站,其最终生成的网址根目录是:username.github.com/projectname,而 post.url生成的超链接仅仅会自动加上 username.github.com/这样的前缀。
现在检查一下更改的所有内容,确认不要犯下愚蠢的错误,比如把“.”打成“。“或者单词拼错之类的。
目录结构变为
/EX.github-io|--_config.yml|-- index.html|-- _posts||--2015-05-05-my_first_article.md
7.配置SSH keys为什么要配置ssh keys?因为github和本地代码做推送和拉取时,需要用到ssh的密钥对进行数据加解密,由于github上新建的项目没有添加密钥,所以本地仓库连接不到远程仓库。
那么如何配置ssh keys呢?
7.1我们需要检查你电脑上现有的ssh key:
cd~/.ssh
如果提示:No such file or directory说明你是第一次使用git。
7.2生成新的ssh keys:
ssh-keygen-t rsa-C"邮件地址@youremail.com"
注意1:此处的邮箱地址,你可以输入自己的邮箱地址;注意2:此处的「-C」的是大写的「C」。
按回车后出现
再按一次回车即可。
然后系统会要你输入密码:
Enter passphrase(empty for no passphrase):Enter same passphrase again:
在回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。这个设置是防止别人往你的项目里提交内容。
注意:输入密码的时候没有*字样的,你直接输入就可以了。
最后看到这样的界面,就成功设置ssh key了:
7.3添加ssh key到GitHub
在本机设置SSH Key之后,需要添加到GitHub上,以完成SSH链接的设置。
1、打开本地C:\Documents and Settings\Administrator.ssh\id_rsa.pub文件。此文件里面内容为刚才生成人密钥。如果看不到这个文件,你需要设置显示隐藏文件。准确的复制这个文件的内容,才能保证设置的成功。
2、登录你的GitHub个人主页。点击右上角的 Settings进入设置页面,然后点击SSH Keys页面中的Add SSH key按钮
3、把你本地生成的密钥复制到里面(key文本框中),点击 add key就ok了
8.发布到GitHub这个时候我们就可以把页面提交到github上了,到根目录打开git命令行界面
8.1把刚创建的所有文件添加到本地git库
git add-A
8.2保持良好的习惯,每次提交都提交添加描述
git commit-m"create my blog"
8.3推送到GitHub,这里注意,因为我们使用的是GitHub Pages中的 Project Pages,GitHub规定,只有该分支中的页面,才会生成网页文件。即GitHub仅会将分支 gh-pages下的内容进行自动生成操作,所以本地的 master分支应推送到远端的 gh-pages分支
git push origin master:gh-pages
输入账号和密码,账号即你的GitHub账号(不是昵称,是账号名!),输入密码的时候命令行界面不会有任何的变化,所以在输入密码的时候要谨慎小心。之后按回车即可。
好了,那现在我们要如何查看我们的博客页面呢。打开GitHub,进入到自己博客的仓库,右侧菜单栏有一个setting选项
点击进入之后会看到这个页面
GitHub Pages中显示的链接就是你的博客地址啦。
9.增加模板套装_layouts其实到第8步博客的构建就已经完成了,只是没有样式的博客实在太难看。GitHub Pages有提供一些主题给我们使用。但作为一个前端开发者,肯定更希望自己给自己的博客布局和创建样式。
回到项目根目录,新建文件夹 _layouts,顾名思义,“布局”是也。在 _layouts中新建一个最基本的布局文件,姑且命名为default.html好了:
{{ page.title}}{{ content}}
首先,charset=utf-8让我们一劳永逸地解决了UTF-8的编码问题,随后指定了正文内容的位置,当然在这里只是一个最简单的内容,在body内仅有一个{{ content}}标签,你可以根据自己的喜好对页面进行任何改动,只要记得保留这个内容标签在你想要的位置就好。
然后我们修改index.html和刚写完的那篇文章,只要在头属性上加一句就好:
---title: xxoolayout: default.html---
我们当然还可以把这个结构变得更灵活一些,比如继续新增两个模板分别叫做l_post.html与l_index.html,他们首先引用default.html,但在其基础上做出一定的修改。然后首页使用l_index模板,而所有的post文件则使用l_post模板,等等等等,请随意发挥。但始终记得加上{{ content}}标签
目录结构变为
/EX.github-io|--_config.yml|-- index.html|-- _posts||--2015-05-05-my_first_article.md|-- _layouts||--default.html
再次推送到GitHub即可。
这样,我们就已经构建好了一个最简单的blog。之后你们就可以开始为自己的博客添砖加瓦了。
9.问题汇总 9.1推送到GitHub之后个人主页的contributions没有提交记录
Git会根据用户的名字和邮箱来记录提交。GitHub也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的。
如何查看自己的名称和邮箱呢。回到GitHub个人主页,点击右上角的setting图标
进入之后Personal settings菜单栏下的Profile页面中,Name即为你的名字
但邮箱不是Name下面的Public email,很多人在这里被误导了。邮箱是Emails页面中的邮箱地址
知道了名字和邮箱之后,打开git命令行界面,通过下面的命令行来设置你的名字和邮箱
git config--global user.name"cnfeat"//用户名git config--global user.email"cnfeat@gmail.com"//填写自己的邮箱
设置正确之后,提交记录就都恢复了。不仅仅你以后提交的都会出现在提交记录中,你以前提交的也会恢复并出现在记录中。
9.1每次提交都要求你输入账号跟密码
原因是我们在clone分支时使用了 HTTPS的地址,
HTTPS的地址是做什么用的呢?其实它主要是用在一些防火墙或者代理服务器设置比较严格的情况下的,比如有些公司是禁止使用 SSH连接外网,那么在这种情况下要想使用 Git的话,就只能用 HTTPS的方式了。
使用 HTTPS的方式,也有储存密码的方式,但我们首推的方式是切换到 SSH,如果你的网络环境支持的话。
回到你博客的根目录。打开git命令行界面,输入
git remote set-url你博客的ssh url
如果你不知道你博客的ssh url,打开你的博客项目,右下角选择SSH,然后复制框里的url就行了
之后再提交就不会要求你输入账号密码了。
9.3页面调试不方便
如果我们要给我们的博客布局或设置样式神马的,我们是否每次都要把代码写好然后推送到GitHub上,再打开自己的博客地址,看看布局有没有什么问题。如果有的话再改代码,再提交,再查看呢?
这样效率岂不是很低,有没有能够本地调试GitHub Pages上的页面的工具呢?
答案是肯定的。我用的是Jekyll。它的官网就有完整的教程,使用起来非常的简便。
10.参考资料 1.http://www.ruanyifeng.com/blog/2012/08/blogging_with_jekyll.html
2.
3.http://cnfeat.com/2014/05/10/2014-05-11-how-to-build-a-blog/
4.http://www.open-open.com/lib/view/open1366080269265.html
搭建GitLab服务器
GitLab是GitHub的免费私有库替代方案,并且安装与配置都很方便。
GitLab要求最少4GB内存,支持小团队使用没问题,实测2GB内存的VPS基本没法用,开swapfile也不行,动不动就60秒超时。因此4GB内存是必须的。
关于这一点,内存大户主要是Unicorn,基于ruby的http服务器。Unicorn会在启动后预先占用大部分内存,内存会随着使用逐渐增长,并且不会释放。根据GitLab和Unicorn的官方文档,这不是它们的锅,那么这个锅可能是ruby和rails了。解决方法是unicorn-work-kill,会根据请求次数和内存占用自动重启Unicorn。Omnibus版的GitLab是默认开启的。
GitLab分为社区版和企业版,在未付费的情况下,两者的功能是一样的。并且社区版整合了CI/CD,因此可以满足绝大部分的开发需求。
安装包主要包括Omnibus整合包,Docker、AWS等的云镜像,以及一些第三方维护的版本。其中Omnibus直接整合了所有服务端组件,适合自用和练手。
安装以Omnibus整合包为例,操作系统为Ubuntu16.04。
Gitlab需要 curl,openSSH和 ca-certificates这几个组件:
不过服务器系统一般自带,所以是可选的。
邮件服务,用于GitLab发送找回密码的邮件:
不过如果服务器没有域名的话,大部分邮箱会拒收邮件,而管理员帐号可以直接重置其他账号的密码,所以是可选的。
官方提供的脚本:
这个脚本会自动添加源到apt的source list,以及安全key。另外,如果自己服务器在国内,脚本会自动添加清华的镜像,速度还行。
先更新apt缓存:
推荐使用 apt而不是 apt-get,前者大多数情况下更简单一点。
然后是安装:
其中 EXTERNAL_URL,改成自己的域名。没有域名的话,可以直接设置成IP的形式: http://1.2.3.4,这个推测跟nginx服务以及GitLab中的项目地址有关,所以最好正确设置。当然也可以之后在配置文件里更改。
安装完成后,可以在配置文件中修改配置/etc/gitlab/gitlab.rb。
比如之前的 EXTERNAL_URL:
官方还有一个关于 unicorn的优化建议:
默认值是2,如果服务器只用于GitLab的话,官方建议是CPU核心数加一,可以提高服务器的响应速度。不过如果内存只有4G,或者服务器同时承载其他服务,就不要改了,以免内存不足。另外,这个参数最小值是2,设为1,服务器可能会卡死。
配置完成后,刷新配置:
每次修改完 gitlab.rb,都要刷新配置。
如果没有报错的话,GitLab就配置完毕并且正常运行了。接下来可以打开浏览器开始访问了。
怎么clone自己搭建的git服务器
首先需要装好CentOS系统,作为测试,你可以选择装在虚拟机上,这样比较方便。这步默认你会,就不讲了。
有了CentOS,那么如何搭建Git服务器呢?
1、首先需要安装Git,可以使用yum源在线安装:
[root@localhost Desktop]# yum install-y git
2、创建一个git用户,用来运行git服务
# adduser git
3、初始化git仓库:这里我们选择/data/git/learngit.git来作为我们的git仓库
[root@localhost git]# git init--bare learngit.git
Initialized empty Git repository in/data/git/learngit.git/
执行以上命令,会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git:
[root@localhost git]# chown git:git learngit.git
4、在这里,Git服务器就已经搭得差不多了。下面我们在客户端clone一下远程仓库
Zhu@XXX/E/testgit/8.34
$ git clone git@192.168.8.34:/data/git/learngit.git
Cloning into'learngit'...
The authenticity of host'192.168.8.34(192.168.8.34)' can't be established.
RSA key fingerprint is 2b:55:45:e7:4c:29:cc:05:33:78:03:bd:a8:cd:08:9d.
Are you sure you want to continue connecting(yes/no)? yes
Warning: Permanently added'192.168.8.34'(RSA) to the list of known hosts.
git@192.168.8.34's password:
这里两点需要注意:第一,当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host'github.com(xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting(yes/no)?
这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added'github.com'(RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
如果你实在担心有人冒充GitHub服务器,输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。
第二,这里提示你输入密码才能clone,当然如果你知道密码,可以键入密码来进行clone,但是更为常见的方式,是利用SSH的公钥来完成验证。
5、创建SSH Key
首先在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen-t rsa-C"youremail@example.com"
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码。
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
6、Git服务器打开RSA认证
然后就可以去Git服务器上添加你的公钥用来验证你的信息了。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,即:
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile.ssh/authorized_keys
这里我们可以看到公钥存放在.ssh/authorized_keys文件中。所以我们在/home/git下创建.ssh目录,然后创建authorized_keys文件,并将刚生成的公钥导入进去。
然后再次clone的时候,或者是之后push的时候,就不需要再输入密码了:
Zhu@XXX/E/testgit/8.34
$ git clone git@192.168.8.34:/data/git/learngit.git
Cloning into'learngit'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.
7、禁用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每次一登录就自动退出。
关于github搭建服务器,怎么clone自己搭建的git服务器的介绍到此结束,希望对大家有所帮助。