将个人博客从GitHub迁移至阿里云服务器过程总结

时间:2022-03-10 10:07:18

让我们先回顾下前两篇博客:

程序员如何从0到1搭建自己的技术博客

在个人博客中优雅的使用Gitalk评论插件

通过前两篇博客,我们了解了如何快速的从0到1搭建一个个人博客并使用了Gitalk评论插件,虽然博客现在是有了,但是存在一些缺点,主要有以下几点:

  • 访问不稳定
  • 百度收录不好
  • 百度统计功能无法正常使用

作为一个有追求的程序员,岂能容忍这些缺点,哈哈,于是趁着阿里云Hi购季买了一台阿里云服务器,开启了将个人博客迁移至阿里云服务器的历程,谁知竟然倒腾了两三天,本篇博客就详细总结下在这个过程中遇到的问题,希望也能帮助到读到这篇文章的你。

1.服务器搭建Jekyll环境

说明:我这里购买的服务器是Windows系统的。

因为Jekyll是基于Ruby开发的,因此,我们需要在服务器上安装下Ruby,下载地址:https://rubyinstaller.org/downloads/

整个的安装过程非常痛苦,试了各个版本,安装都没问题,就是最后编译博客成静态站点时,各种报错,网上也没有合适的解决方案,最后我选择了安装最新版:

将个人博客从GitHub迁移至阿里云服务器过程总结

软件的安装过程相对比较简单,这里就不做详细讲解。

安装完成后,我们可以打开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代码到服务器:

git clone https://github.com/zwwhnly/zwwhnly.github.io.git

然后使用Jekyll编译:

将个人博客从GitHub迁移至阿里云服务器过程总结

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

将个人博客从GitHub迁移至阿里云服务器过程总结

说明:这一步非常折腾人,特别容易出错,是因为安装的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

将个人博客从GitHub迁移至阿里云服务器过程总结

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

将个人博客从GitHub迁移至阿里云服务器过程总结

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

将个人博客从GitHub迁移至阿里云服务器过程总结

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.配置域名解析

登录阿里云后台配置域名解析:

将个人博客从GitHub迁移至阿里云服务器过程总结

7.网站备案

备案的过程很简单但是很繁琐,用的阿里云备案,前后耗时大概有4~5天。

友情提示:备案前准备好身份证,如果是在上海又不是上海户口,还需要准备居住证,更独特的是,还需要一个安卓手机,因为中间有一步要上传手持身份证照片校验,竟然只支持安卓手机(我是拿身份证耗时1天,拿居住证耗时1天,又拿了个安卓手机耗时1天,剩余的审批,阿里云备案效率还是挺高的)。

备案成功后,将备案号展示在网站底部:

将个人博客从GitHub迁移至阿里云服务器过程总结

8.验证

满心欢喜的在浏览器输入我的域名http://www.zwwhnly.com访问,结果一直访问不了,最后才发现是使用阿里云服务的原因。

最后的解决方案如下:

在阿里云控制台找到自己购买的ECS实例,配置安全组规则,因为我们使用的是默认的端口号80,因此添加的安全组规则如下:

将个人博客从GitHub迁移至阿里云服务器过程总结

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

将个人博客从GitHub迁移至阿里云服务器过程总结

9.总结

后续还是使用Markdown写作,博客写完后将代码提交到GitHub,然后去服务器执行如下命令(可以写成一个批处理bat文件),重新编译下站点:

cd C:\Nginx\nginx-1.12.2\zwwhnly.github.io

git pull https://github.com/zwwhnly/zwwhnly.github.io.git

jekyll build

如果嫌麻烦,可以添加一个任务计划程序定期执行该脚本,比如一天执行一次。

10.参考链接

jekyll 部署

windows安装jekyll步骤及问题

NGINX配置好之后,localhost可以访问,但域名无法访问?坑可能在阿里云

将个人博客从GitHub迁移至阿里云服务器过程总结的更多相关文章

  1. 【五】将博客从jekyll迁移到了hexo

    本系列有五篇:分别是  [一]Ubuntu14.04+Jekyll+Github Pages搭建静态博客:主要是安装方面  [二]jekyll 的使用 :主要是jekyll的配置  [三]Markdo ...

  2. (2016春) 作业1:博客和Github简单练习

    0. 博客和Github简单练习 总分:10分 1. 目的 博客使用:注册.发布博客.博客管理练习 Github使用:注册.文件同步等练习 2. 要求 (总体作业要求参考[链接]) 发布一篇博客: 介 ...

  3. 关于个人博客和Github地址提交

    请大家尽快按照http://www.cnblogs.com/SivilTaram/p/5857858.html的要求提交个人博客和Github地址.谢谢!

  4. 如何搭建一个独立博客——简明Github Pages与Hexo教程

    摘要:这是一篇很详尽的独立博客搭建教程,里面介绍了域名注册.DNS设置.github和Hexo设置等过程,这是我写得最长的一篇教程.我想将我搭建独立博客的过程在一篇文章中尽可能详细地写出来,希望能给后 ...

  5. 搭建个人博客-hexo+github

    自己也算是摸爬滚打搭建成功,然后自己再重新安装部署一遍,把完整步骤分享给大家,同时最后有一些连接,如果我的步骤不行,大家可以参考其他人的(这个有点花费时间,大家提前有个心理准备 - _-) 一.第一步 ...

  6. 将个人博客与github关联

    目录 将个人博客与github关联 将个人博客与github关联 #基于svg <a href="https://github.com/chatlotte" class=&q ...

  7. 使用Docker快速搭建Halo个人博客到阿里云服务器上&lbrack;附加主题和使用域名访问&rsqb;

    一.前言 小编买了一个服务器也是一直想整个网站,一直在摸索,看了能够快速搭建博客系统的教程.总结了有以下几种方式,大家按照自己喜欢的去搭建: halo wordpress hexo vuepress ...

  8. 我的博客即将同步至腾讯云&plus;社区,邀请大家一同入驻:https&colon;&sol;&sol;cloud&period;tencent&period;com&sol;developer&sol;support-plan&quest;invite&lowbar;code&equals;3cp8ng15g94wc

    我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc

  9. 实战:基于 Spring 的应用配置如何迁移至阿里云应用配置管理 ACM

    最近遇到一些开发者朋友,准备将原有的Java Spring的应用配置迁移到 阿里云应用配置管理 ACM 中.迁移过程中,遇到不少有趣的问题.本文将通过一个简单的样例来还原迁移过程中遇到的问题和相关解决 ...

随机推荐

  1. 学习mongo系列(三) update&lpar;&rpar; save&lpar;&rpar;

    一.update()方法 >db.user.update({"name":"user1"},{$set:{"title":" ...

  2. C&num;中截取字符串的几种方法

      1.根据单个分隔字符用split截取 例如 复制代码代码如下: string st="GT123_1"; string[] sArray=st.split("_&qu ...

  3. abap case when 例子

    DATA: gv_1 TYPE c. DATA: gv_2 TYPE i. gv_2 = 60. IF gv_2 >= 0 AND gv_2 < 60 . gv_1 = 'A'. ELSE ...

  4. 『重构--改善既有代码的设计』读书笔记----Move Method

    明确函数所在类的位置是很重要的.这样可以避免你的类与别的类有太多耦合.也会让你的类的内聚性变得更加牢固,让你的整个系统变得更加整洁.简单来说,如果在你的程序中,某个类的函数在使用的过程中,更多的是在和 ...

  5. nodejs实现接收Snmp的Trap消息

    var assert = require('assert'); var ASN1 = { EOC: 0, Boolean: 1, Integer: 2, BitString: 3, OctetStri ...

  6. POJ 1066 Treasure Hunt(相交线段&amp&semi;amp&semi;&amp&semi;amp&semi;更改)

    Treasure Hunt 大意:在一个矩形区域内.有n条线段,线段的端点是在矩形边上的,有一个特殊点,问从这个点到矩形边的最少经过的线段条数最少的书目,穿越仅仅能在中点穿越. 思路:须要巧妙的转换一 ...

  7. java程序连接MongoDB副本集测试

    三个节点有一个节点挂掉也不会影响应用程序客户端对整个副本集的读写! public class TestMongoDBReplSet { public static void main(String[] ...

  8. 关于oracle导出时的query用法

    QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,where子句的写法和SELECT中相同: 如果是UNIX平台所有"和'都需 ...

  9. hiberate关系映射大全

    1. 集合映射 开发流程: 需求分析/数据库设计.项目设计/ 编码/测试/实施部署上线/验收 需求: 用户购买, 填写地址! 数据库: 代码: // javabean设计 public class U ...

  10. 题解 P4783 【【模板】矩阵求逆】

    题目大意 求一个N×N的矩阵的逆矩阵.答案对10^9+7取模.N<=400 前置知识 矩阵的初等变换 矩阵的逆定义为 A*B=E(E为单位矩阵)此时B为A的逆 思路 如果矩阵有逆 那么这个矩阵经 ...