独立博客的搭建

作者: 七弦桐语 | 来源:发表于2016-09-24 22:19 被阅读166次

    写作,一直是思考和表达的一种重要的途径,而博客是一个很好的表达和分享的平台。网络上的博客平台有很多,自己也有在用简书Lofter。但同时作为一个理想主义的程序员,总是向往更加简单和自由的写作方式。由此,经过一番折腾,才有了我的第一个独立博客以及这篇博客搭建的文章。

    废话少说,先上博客:点击访问我的博客


    Github+Hexo

    博客程序有很多,也都有各自的优缺点,关于选用哪一个,也因人而异,毕竟适合自己的才是做好的。

    可以看这一篇进行了解 : 各种博客程序有什么特点

    我所选用的是Github+hexo进行搭建。理由如下:

    • 用 Node.js 搭建的博客平台,速度快,免费
    • Hexo 操作比 Jekyll 简单,命令少,易于记忆。
    • 搭建在 Github 上,Github稳定,空间免费。

    搭建环境

    1. 安装 Git

    Git是目前世界上最先进的分布式版本控制系统。在这里主要用来把本地内容提交到github上区。

    安装方式:

    1. 下载
      http://msysgit.github.io/
    2. 安装
      安装过程中,询问是否修改环境变量,选择“Use Git Bash Only”. 即只在msysGit提供的Shell

    运行 Git 前的配置

    1. 配置你个人的用户名称和电子邮件地址

    $ git config --global user.name "xxx"
    $ git config --global user.email xxx@example.com

    1. 配置GitHub SSH
      (1)首先使用 ssh-keygen 生成 SSH 密钥
      $ ssh-keygen -t rsa -C "youremail@163.com"
      (2) 配置Github SSH。
      登陆GitHub->Settings->“SSH Keys”,然后,点“Add SSH Key”,起个Title,在Key文本框里粘贴id_rsa.pub文件的内容,点“Add Key”。

    2. 安装 node.js

    1. 下载
      下载:http://nodejs.org/download/
      作用:用来生成静态页面

    配置Github

    Github网址:https://github.com/
    作用:用来做远程博客的仓库

    1. 建立Repository

    建立与你用户名对应的仓库,仓库名必须为【your_user_name.github.io

    2. 配置SSH-Key

    参考http://www.cnblogs.com/zhcncn/p/3787849.html

    搭建 Hexo

    1. 安装

    打开Git命令行,执行如下命令

    $ npm install -g hexo
    

    2 Quick Start

    1. 建立你的博客

    在电脑中建立一个文件夹(比如我建在了D:\blog),然后在此文件夹中右键打开Git Bash。执行下面的命令

    $ hexo init 
    [info] Copying data 
    [info] You are almost done! Don't forget to run `npm install` before you start b logging with Hexo!
    

    Hexo随后会自动在目标文件夹建立网站所需要的文件。然后按照提示,运行 npm install(在 /D/blog下

    npm install
    

    会在D:\blog目录中安装node\_modules

    2. 打开服务

    运行下面的命令(在 /D/blog下)

    $ hexo server 
    [info] Hexo is running at http://localhost:4000/. Press Ctrl+C to stop.
    

    表明Hexo Server已经启动了,在浏览器中打开 http://localhost:4000/,这时可以看到Hexo已为你生成了一篇blog。

    你可以按Ctrl+C停止Server。

    文件目录为

    blog
    _config_yml -- 注配置文件
    db.json --数据
    debug.log -- 调试日志
    _node_mudules -- nodejs 相关依赖
    package.json -- 配置依赖
    scaffolds -- 脚手架 - 也就是一个工具模板
    source -- 存放blog正文的地方
    themes -- 存放皮肤的地方

    3. 创建一篇文章

    新打开一个git bash命令行窗口,cd到/D/blog下,执行下面的命令

    $ hexo new "My New Post"
    

    刷新http://localhost:4000/,可以发现已生成了一篇新文章 "My New Post"。

    注意

    在创建文章时,要ctrl+c关掉hexo server

    4. 生成静态页面

    执行下面的命令,将你自己写的markdown文件生成静态网页。

    $ hexo generate
    

    该命令执行完后,会在 D:\blog\public\ 目录下生成一系列html,css等文件。

    5. 编辑文章

    hexo new "My New Post"会在D:\blog\source\_posts目录下生成一个markdown文件:My-New-Post.md

    可以使用一个支持markdown语法的编辑器(推荐MarkEditor 或 Sublime Text 2)来编辑该文件。

    6. 部署到Github

    部署到Github前需要配置_config.yml文件,首先找到下面的内容

    # Deployment 
    ## Docs: http://hexo.io/docs/deployment.html 
    deploy: 
    type:
    

    将它们修改为

    # Deployment
    ## Docs: https://hexo.io/docs/deployment.html
    deploy:
    type: git
    repository: git@github.com:chuanqiang/chuanqiang.github.io.git
    branch: master
    

    7. 测试

    当部署完成后,在浏览器中打开http://chuanqiang.github.io/ 正常显示网页,表明部署成功。

    Hexo 命令总结

    1. 常用命令

    hexo new "postName" #新建文章
    hexo new page "pageName" #新建页面
    hexo generate #生成静态页面至public目录
    hexo server #开启预览访问端口(默认端口4000,'ctrl + c'关闭server)
    hexo deploy #将.deploy目录部署到GitHub
    hexo help  # 查看帮助
    hexo version  #查看Hexo的版本
    

    2. 复合命令

    hexo deploy -g  #生成加部署
    hexo server -g  #生成加预览
    

    命令的简写为:

    hexo n == hexo new
    hexo g == hexo generate
    hexo s == hexo server
    hexo d == hexo deploy
    

    为博客添加域名

    1. 域名购买

    网站:推荐去GoDaddy 购买
    优点:安全,支持支付宝。
    注意

    • 注册时用户填写信息时一定要输入正确的邮箱名字。
    • 买完域名之后一定要记得去自己的邮箱查看激活邮件,否则域名激活不了。

    2.域名和 Github 空间绑定

    1. GitHub Pages的设置

    方法1:在Repository的根目录下面,新建一个名为CNAME的文本文件,里面写入你要绑定的域名,不用写http://,直接写域名。比如我的是qixiantong.info
    方法2:到我的github仓库,点击右下角的「Download ZIP」,下载源文件,解压,修改CNAME,改成你想要的域名,放进Hexo\source目录下,用hexo命令提交上去。

    2.DNS设定

    网站DNSpod
    步骤

    1. 登录或者注册DNSpod
    2. 之后进入到了域名下一解析管理窗口,这里需记录两个记录值:\
    f1g1ns1.dnspod.net.
    f1g1ns2.dnspod.net.
    
    1. 点击添加记录,按图所述:
    1. 等待全球递归DNS服务器刷新(最多72小时)。

    Hexo 配置

    1. 配置文件介绍

    文件名:_config.yml(在文件根目录下)

    # Hexo Configuration
    ## Docs: http://hexo.io/docs/configuration.html
    ## Source: https://github.com/tommy351/hexo/
    
    # Site #整站的基本信息
    title: 1000 words a Day #网站标题
    subtitle: Writing 1000 Words a Day Changes My Life #网站副标题
    description: 学习总结 思考感悟 知识管理 #网站描述
    author:  cnFeat #网站作者,在下方显示
    email: cnFeat@gmail.com #联系邮箱
    language: zh-CN
    
    # URL
    ## If your site is put in a subdirectory
    url: http://www.cnfeat.com #你的域名
    root: /
    permalink: :year/:month/:day/:title/
    tag_dir: tags
    archive_dir: archives
    category_dir: categories
    code_dir: downloads/code
    
    # Directory
    source_dir: source
    public_dir: public
    
    # Writing
    new_post_name: :title.md # File name of new posts
    default_layout: post
    auto_spacing: false # Add spaces between asian characters and western characters
    titlecase: false # Transform title into titlecase
    external_link: true # Open external links in new tab
    max_open_file: 100
    multi_thread: true
    filename_case: 0
    render_drafts: false
    post_asset_folder: false
    highlight:
    enable: true
    line_number: true
    tab_replace:
    
    # Category & Tag
    default_category: uncategorized
    category_map:
    tag_map:
    
    # Archives
    ## 2: Enable pagination
    ## 1: Disable pagination
    ## 0: Fully Disable
    archive: 2
    category: 2
    tag: 2
    
    # Server
    ## Hexo uses Connect as a server
    ## You can customize the logger format as defined in
    ## http://www.senchalabs.org/connect/logger.html
    port: 4000
    server_ip: 0.0.0.0
    logger: false
    logger_format:
    
    # Date / Time format
    ## Hexo uses Moment.js to parse and display date
    ## You can customize the date format as defined in
    ## http://momentjs.com/docs/#/displaying/format/
    date_format: YYYY-MM-DD
    time_format: H:mm:ss
    
    # Pagination
    ## Set per_page to 0 to disable pagination
    per_page: 15 #每页15篇文章
    pagination_dir: page
    
    # Disqus #社会化评论disqus,我使用多说,在主题中配置
    disqus_shortname:
    
    # Extensions
    ## Plugins: https://github.com/tommy351/hexo/wiki/Plugins
    ## Themes: https://github.com/tommy351/hexo/wiki/Themes
    theme: jacman
    exclude_generator:
    Plugins:
    - hexo-generator-feed
    - hexo-generator-sitemap
    
    #sitemap
    sitemap:
    path: sitemap.xml
    
    #Feed Atom
    feed:
    type: atom
    path: atom.xml
    limit: 20
    
    # Markdown
    ## https://github.com/chjj/marked
    markdown:
    gfm: true
    pedantic: false
    sanitize: false
    tables: true
    breaks: true
    smartLists: true
    smartypants: true
    
    # Stylus
    stylus:
    compress: false
    
    # Deployment
    ## Docs: https://hexo.io/docs/deployment.html
    deploy:
    type: git
    repository: git@github.com:chuanqiang/chuanqiang.github.io.git
    branch: master      
    

    2. 修改局部页面

    页面展现的全部逻辑都在每个主题中控制,源代码在hexo\themes\jacman\中:

    ├── languages  #多语言
    |   ├── default.yml#默认语言
    |   └── zh-CN.yml  #中文语言
    ├── layout #布局,根目录下的*.ejs文件是对主页,分页,存档等的控制
    |   ├── _partial   #局部的布局,此目录下的*.ejs是对头尾等局部的控制
    |   └── _widget#小挂件的布局,页面下方小挂件的控制
    ├── source #源码
    |   ├── css#css源码 
    |   |   ├── _base  #*.styl基础css
    |   |   ├── _partial   #*.styl局部css
    |   |   ├── fonts  #字体
    |   |   ├── images #图片
    |   |   └── style.styl #*.styl引入需要的css源码
    |   ├── fancybox   #fancybox效果源码
    |   └── js #javascript源代码
    ├── _config.yml#主题配置文件
    └── README.md  #用GitHub的都知道
    

    安装主题

    1. 下载主题

    这里以我安装的主题为例。
    如果你熟悉 Git, 建议你使用 克隆最新版本 的方式,之后的更新可以通过 git pull 来快速更新, 而不用再次下载压缩包替换。
    在终端窗口下,定位到 Hexo 站点目录下。使用 Git checkout 代码:

    $ cd your-hexo-site
    $ git clone https://github.com/iissnan/hexo-theme-next themes/next
    

    2. 启用主题

    与所有 Hexo 主题启用的模式一样。 当 克隆/下载 完成后,打开 站点配置文件, 找到 theme 字段,并将其值更改为 next。

    启用 NexT 主题

    theme: next 
    

    到此,NexT 主题安装完成。下一步我们将验证主题是否正确启用。在切换主题之后、验证之前, 我们最好使用 hexo clean 来清除 Hexo 的缓存。

    首先启动 Hexo 本地站点,并开启调试模式(即加上 --debug),整个命令是 hexo s --debug。 在服务启动的过程,注意观察命令行输出是否有任何异常信息,如果你碰到问题,这些信息将帮助他人更好的定位错误。 当命令行输出中提示出:

    INFO Hexo is running at http://0.0.0.0:4000/. Press Ctrl+C to stop. 
    

    此时即可使用浏览器访问 http://localhost:4000,检查站点是否正确运行。

    现在,已经成功安装并启用了 主题。下一步要做的是更改一些主题的设定,包括个性化以及集成第三方服务。这个因主题而异。

    3. 主题设定

    这里叙述的是各主题通用的功能。

    设定语言

    编辑 站点配置文件, 将 language 设置成你所需要的语言。建议明确设置你所需要的语言,例如选用简体中文,配置如下:

    language: zh-Hans
    

    多说评论

    注意:duoshuo_shortname 不是你的多说登录的 id

    使用多说前需要先在 多说 创建一个站点。具体步骤如下:

    1. 登录后在首页选择 “我要安装”。
    2. 创建站点,填写站点相关信息。 多说域名 这一栏填写的即是你的 duoshuo\_shortname,如图:
    1. 创建站点完成后在 站点配置文件 中新增 duoshuo_shortname 字段,值设置成上一步中的值。
      【eg】:
    duoshuo_shortname: iissnan-notes
    

    百度统计

    注意: baidu_analytics 不是你的百度 id 或者 百度统计 id

    1. 登录 百度统计, 定位到站点的代码获取页面
    2. 复制 hm.js? 后面那串统计脚本 id,如:
    1. 编辑 站点配置文件, 新增字段 baidu_analytics 字段,值设置成你的百度统计脚本 id

    分享

    JiaThis

    编辑 站点配置文件, 添加字段 jiathis,值为 true。

    JiaThis 内容分享服务配置示例

    # JiaThis 分享服务
    jiathis: true
    

    百度分享

    编辑 站点配置文件,添加字段 baidushare,值为 true。

    百度内容分享服务配置示例

    # 百度分享服务
    baidushare: true
    

    多说分享
    多说分享必须与多说评论同时使用
    编辑 站点配置文件, 添加字段 duoshuo_share, 值为 true。
    多说内容分享服务配置示例

    # 多说分享服务
    duoshuo_share: true
    

    404页面

    GitHub Pages有提供制作404页面的指引:Custom 404 Pages
    直接在根目录下创建自己的404.html或者404.md就可以。但是自定义404页面仅对绑定顶级域名的项目才起作用,GitHub默认分配的二级域名是不起作用的,使用hexo server在本机调试也是不起作用的。

    推荐使用腾讯公益404。为公益尽自己的一份微薄之力。

    总结

    博客的搭建看似简单,其实过程中还是有许多磕磕绊绊。这时,需要的就是自己解决问题的能力:如何利用互联网搜索你需要的答案,如何借鉴别人的经验。这个也是搭建博客之外的宝贵收获。

    另外,博客只是一种输出和展现形式,关键还是在于内容本身。盛酒的容器美观与否固然重要,但瓶子里酒的味道才是真谛。所以,重要的还是不断输入和输出

    相关文章

      网友评论

      • IoserT:这里需记录两个记录值:
        f1g1ns1.dnspod.net.
        f1g1ns2.dnspod.net.
        这两个还需要在godaddy去配置吗,你文中没有提到,小白一个,麻烦你了
        七弦桐语: @Mr_杨森 对的,需要加到ogodaddy里面
      • IoserT:我在域名和 Github 空间绑定,GitHub Pages的设置这一步的时候,在我的username.github.io 下创建了一个CNAME 文件,里面也配置了 ,但是我发现由于我本地没有这个文件。在写完博客之后用hexo方法提交之后 gitHub.io里面的CNAME文件就没了 这个该怎么办。
        七弦桐语: @Mr_杨森 我的没有呢,放到根目录下。你不然在本地建一个,然后提交上去
      • IoserT:求博主 解答。。。
        IoserT:@七弦桐de独白 每次另一个地方写博客之前先拉一下保证是最新的,然后写完博客再推上去。
        IoserT:@七弦桐de独白 我在想可以在github上再建个仓库专存本地的文件。然后在家里和公司的电脑都git一份,然后不管是两地三地写晚博客都提交到上去,这样不管在多少地方写博客就可以同步了吗。
        七弦桐语:@Mr_杨森 我的博客是Hexo+Gituhb 搭建的。本地文件编译后放到Github的。本地的文件的话,你可以放到云上,比如国内的七牛云挺不错的,有免费空间,下载上传都很快。
      • IoserT:你好,问一下您,博客搭建成功后,自己电脑上的这些文件您是怎么保存的,如果不小心删除了这些文件 该怎么找回。
      • 995b33f7c645:支持,正准备折腾hexo
        七弦桐语: @钢筋水泥管 谢喽,生命不息,折腾不止😄

      本文标题:独立博客的搭建

      本文链接:https://www.haomeiwen.com/subject/sooxyttx.html