将个人博客从GitHub迁移至阿里云服务器过程总结
让我们先回顾下前两篇博客:
通过前两篇博客,我们了解了如何快速的从0到1搭建一个个人博客并使用了Gitalk评论插件,虽然博客现在是有了,但是存在一些缺点,主要有以下几点:
- 访问不稳定
- 百度收录不好
- 百度统计功能无法正常使用
作为一个有追求的程序员,岂能容忍这些缺点,哈哈,于是趁着阿里云Hi购季买了一台阿里云服务器,开启了将个人博客迁移至阿里云服务器的历程,谁知竟然倒腾了两三天,本篇博客就详细总结下在这个过程中遇到的问题,希望也能帮助到读到这篇文章的你。
1.服务器搭建Jekyll环境
说明:我这里购买的服务器是Windows系统的。
因为Jekyll是基于Ruby开发的,因此,我们需要在服务器上安装下Ruby,下载地址:https://rubyinstaller.org/downloads/。
整个的安装过程非常痛苦,试了各个版本,安装都没问题,就是最后编译博客成静态站点时,各种报错,网上也没有合适的解决方案,最后我选择了安装最新版:

软件的安装过程相对比较简单,这里就不做详细讲解。
安装完成后,我们可以打开cmd窗口,输入以下命令验证Ruby是否安装成功:
ruby -v
ruby 2.6.1p33 (2019-01-30 revision 66950) [x64-mingw32]
接下来,执行如下命令安装Jekyll:
gem install jekyll
安装完成后,输入以下命令校验:
jekyll -v
jekyll 3.8.5
2.服务器Git安装
Git的安装对各个开发来说,更加简单,这里只贴下Git的下载地址:https://git-scm.com/download/win
3.拉取GitHub代码并编译成静态站点
首先先拉取GitHub代码到服务器:
然后使用Jekyll编译:

编译成功后会自动生成一个_site文件夹,里面的内容就是我们要部署的静态站点:

说明:这一步非常折腾人,特别容易出错,是因为安装的Ruby版本和GitHub仓库根目录的Gemfile.lock里的版本不一致,要修改下这个文件。
因为我已经修改完成了,你可以直接下载该文件替换你的文件即可:https://github.com/zwwhnly/zwwhnly.github.io/blob/master/Gemfile.lock。
如果还是编译报错,按照提示执行如下命令即可:
gem install {缺少的包名称,如jekyll-paginate}
4.服务器Nginx环境安装
现在静态站点已经成功生成,接下来就是部署的事情,这里我并没有使用传统的IIS来部署,而是选择使用Nginx来部署。
首先,下载Nginx安装包,下载地址:http://nginx.org/en/download.html

然后将下载的压缩包解压到指定的目录,解压后的结构如下:

双击nginx.exe运行nginx,在浏览器输入http://localhost查看效果如下:

5.修改Nginx配置
打开conf文件夹下的nginx.conf文件,修改配置如下(这里只标记了修改项,其余项可保持默认):
server {
listen 80;
server_name www.zwwhnly.com;
location / {
root C:/Nginx/nginx-1.12.2/zwwhnly.github.io/_site;
index index.html index.htm;
}
}
6.配置域名解析
登录阿里云后台配置域名解析:

7.网站备案
备案的过程很简单但是很繁琐,用的阿里云备案,前后耗时大概有4~5天。
友情提示:备案前准备好身份证,如果是在上海又不是上海户口,还需要准备居住证,更独特的是,还需要一个安卓手机,因为中间有一步要上传手持身份证照片校验,竟然只支持安卓手机(我是拿身份证耗时1天,拿居住证耗时1天,又拿了个安卓手机耗时1天,剩余的审批,阿里云备案效率还是挺高的)。
备案成功后,将备案号展示在网站底部:

8.验证
满心欢喜的在浏览器输入我的域名http://www.zwwhnly.com访问,结果一直访问不了,最后才发现是使用阿里云服务的原因。
最后的解决方案如下:
在阿里云控制台找到自己购买的ECS实例,配置安全组规则,因为我们使用的是默认的端口号80,因此添加的安全组规则如下:

此时,输入域名,访问网站成功:

9.总结
后续还是使用Markdown写作,博客写完后将代码提交到GitHub,然后去服务器执行如下命令(可以写成一个批处理bat文件),重新编译下站点:
cd C:\Nginx\nginx-1.12.2\zwwhnly.github.io
jekyll build
如果嫌麻烦,可以添加一个任务计划程序定期执行该脚本,比如一天执行一次。
10.参考链接
NGINX配置好之后,localhost可以访问,但域名无法访问?坑可能在阿里云
将个人博客从GitHub迁移至阿里云服务器过程总结的更多相关文章
- 【五】将博客从jekyll迁移到了hexo
本系列有五篇:分别是 [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面 [二]jekyll 的使用 :主要是jekyll的配置 [三]Markdo ...
- (2016春) 作业1:博客和Github简单练习
0. 博客和Github简单练习 总分:10分 1. 目的 博客使用:注册.发布博客.博客管理练习 Github使用:注册.文件同步等练习 2. 要求 (总体作业要求参考[链接]) 发布一篇博客: 介 ...
- 关于个人博客和Github地址提交
请大家尽快按照http://www.cnblogs.com/SivilTaram/p/5857858.html的要求提交个人博客和Github地址.谢谢!
- 如何搭建一个独立博客——简明Github Pages与Hexo教程
摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...
- 搭建个人博客-hexo+github
自己也算是摸爬滚打搭建成功,然后自己再重新安装部署一遍,把完整步骤分享给大家,同时最后有一些连接,如果我的步骤不行,大家可以参考其他人的(这个有点花费时间,大家提前有个心理准备 - _-) 一.第一步 ...
- 将个人博客与github关联
目录 将个人博客与github关联 将个人博客与github关联 #基于svg <a href="https://github.com/chatlotte" class=&q ...
- 使用Docker快速搭建Halo个人博客到阿里云服务器上[附加主题和使用域名访问]
一.前言 小编买了一个服务器也是一直想整个网站,一直在摸索,看了能够快速搭建博客系统的教程.总结了有以下几种方式,大家按照自己喜欢的去搭建: halo wordpress hexo vuepress ...
- 我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc
- 【hexo博客搭建】将搭建好的hexo博客部署到阿里云服务器上面(下)
一.部署到阿里云服务器 既然博客也已经成功在本地部署,然后主题也成功安装,接下来就可以部署到服务器上面了,如果你也想要魔改matery主题,可以去各种博客上面找一找大佬的教程,或者联系我,也可以让你少 ...
随机推荐
- Python之路,进程、线程、协程篇
本节内容 进程.与线程区别 cpu运行原理 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者 ...
- servlet简介及生命周期
Servlet 简介 Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上 ...
- SVN服务器搭建--Subversio与TortoiseSVN的配置安装(Windows)
1. Subversio和TortoiseSVN 简介 Subversio简介: Subversion是一个自由,开源的版本控制系统,可以随意地免费下载.修改.以及重新发布. 是一个通用系统,可以管 ...
- Global一点小经验
Global: Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法,他位于应用程序根目录下. 这个 Global.asax ...
- 洛谷 P3177 树上染色 解题报告
P3177 [HAOI2015]树上染色 题目描述 有一棵点数为\(N\)的树,树边有边权.给你一个在\(0\) ~ \(N\)之内的正整数\(K\),你要在这棵树中选择\(K\)个点,将其染成黑色, ...
- spring事务机制
一.Java动态代理 1.定义 Java动态代理是利用反射机制生成一个实现代理接口的匿名类,在调用具体方法前调用InvokeHandler来处理. 默认情况下会采用JDK的动态代理实现AOP . 2. ...
- cross-env 兼容跨平台运行脚本
https://www.npmjs.com/package/cross-env 跨平台运行脚本 The problem Most Windows command prompts will choke ...
- 计算机网络相关:应用层协议(二):HTTP
前言 复习下计算机网络的知识并记录 正文 定义:HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议. 一.HTT ...
- Spring Boot全局支持CORS(跨源请求)的配置方法
http://blog.csdn.net/zhangchao19890805/article/details/53893735
- .net 工程中引用出现感叹号
在工程中引用出现感叹号,有两个原因 原因1: 这是由于之前引用的Dll文件不见了. 解决方案: 右键有感叹号的项,然后选择 “属性” 里边有一个路径属性 这个路径就是之前这个Dll文件的路径,现在这 ...