草庐IT

如何零基础零费用的在30分钟内用hugo+github pages创建一个专属于你的个人博客 - 简单快捷到建议人手一个

平凡pppf 2023-04-22 原文

写这篇文章的原因是在网上看了很多的教程,踩了不少的坑,更多的白费了很多功夫,也没找到一篇从头到尾完整有效的个人建站方法。

有些教程年代久远,有些教程极为繁琐,有些教程压根跑不通。

为了方便自己,做个记录,也方便大家,在这个人人都可以发声的时代,又感觉人人的喉咙都被扼住了。

虽然大家在各个媒体平台都有自己的账号,但是给自己留一份自己的自留地,貌似也不会是什么坏事。

这也是我建个人博客的最主要理由,因为有些东西因为这样的或者那样的原因,无法在公域平台发布,那么自己的博客网站,总可以容纳的下。

建立个人博客的两个方法

这是一套非常简单的方法,我希望可以让每一个人都可以照着这套方法建立自己的博客。

总共分为两个版本:

第一个版本为通用版本,利用云服务器的host功能,一个月仅需要花费一杯咖啡的钱。

第二个版本为github版本,利用github pages的免费host和自动部署功能,不需要花一分钱就可以拥有自己的博客。

视频版本:

如何零基础零费用的在30分钟内创建一个专属于你的个人博客 - 简单快捷到建议人手一个

前置准备

Mac 和 linux

需要:homebrew,git包管理,Node.js, vscode(推荐)

 

homebrew安装:直接命令行输入

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

 

git包管理:直接命令行输入

brew install git

 

Node.js: 下载安装包后按照默认设置安装

Node.js下载链接

Windows

需要:git包管理,hugo预编译文件,Node.js, vscode(推荐)

 

git包管理:点击下面链接下载后安装

git包管理下载链接

 

Node.js: 下载安装包后按照默认设置安装

Node.js下载链接

准备 hugo 环境

我们用hugo来写个人博客,它是一个非常快捷和友好的博客框架。

mac 安装方法:命令行种输入

brew install hugo

Windows安装方法

比mac要麻烦点,但是安装方法很详细。

windows版本的安装方法

学会在命令行中创建blog

windows:在搜索栏中输入cmd或者命令行

mac:找到Terminal

创建一个新的blog

使用命令hugo new site来创建一个博客,pingfan-blog这个名字可以根据自己的需要改

hugo new site pingfan-blog

进入刚刚创建好的博客文件夹中

在命令行中使用cd命令

cd pingfan-blog

给博客加个皮肤,一次复制+粘贴三行代码到命令行中

第一行:把当前目录进行github仓库的初始化

git init  

第二行:下载anatole主题,并存放在themes文件夹中

git submodule add https://github.com/lxndrblz/anatole.git themes/anatole  

第三行:把主题改为anatole

echo theme = "anatole" >> config.toml

写第一篇blog

hugo new + aaa/bbb.md, aaa指代的是某一个文件夹,如果你想写美食和电影两种,那就是[美食/第一篇美食.md],或者[电影/第一篇电影.md],尽量都用字母,其次一定要加.md

hugo new life/first_day.md

运行下博客看是否可行

hugo server

出现以下界面后,打开任意浏览器,输入http://localhost:1313 即可查看。

一般是因为1313端口被占用了,可以用它生成的别的网址;或者用kill -9 $(lsof -ti:1313)在命令行把1313端口重新释放出来

浏览器中出现如下界面说明你成功了

生成静态文件,准备进一步托管

hugo -D

你可以去自己的文件目录中看到,public文件夹里面已经多了很多文件出来。

静态网站托管服务

使用云服务进行托管,这一步针对是不能访问github的同学,那么你必须得用一款云服务器进行托管。

1. 首先你得有一个云服务空间,这里我使用的是腾讯云的cloudbase

这里我使用的是腾讯云的cloudbase,可以通过下面这个链接,选择新用户体验券后可以免费体验一个月。

腾讯云cloudbase免费试用一个月链接

添加成功后点击【控制台->云产品->cloudbase】,点开可以看到如下内容。

2. 创建好后得到了一个环境ID,待会儿要用到

3. 在本地安装Node.js

网址为:https://nodejs.org/en/ windows和mac按类型下载,下载完成后安装即可。

在命令行中输入以下验证是否安装成功

npm -v

出现类似于6.14.13就表示成功了。

4. 打开命令行,输入以下命令安装 cloudbase cli

npm install -g @cloudbase/cli

5. 登录云开发

tcb login

6. 在弹出的页面中单击确认授权进行授权

7. 执行以下命令,把public文件夹部署到云服务器上(把EnvID换成刚刚的环境ID

cloudbase hosting deploy ./public  -e EnvID

8.登录云开发控制台

进入静态网站托管页面,可以找到默认的域名,单击域名,就可以看到你的博客已经部署成功了。

下面就是自动生成的域名

出现如下界面表明创建成功了

使用Github进行托管

这个方法是给可以访问github的同学准备的,首先你需要新建一个github仓库,名字无所谓。

然后在命令后中进行操作

1.在命令行中进行git初始化

这步我们已经做过了,当然了,再做一次也没关系

git init

2. 检查是否有改变

git status

3. 提交到暂存区

git add .

4. 交到版本库

git commit -m "msg"

5. 创建分支

git branch -M main
git remote add origin https://.....git

6. 推送到远程仓库

git push -u origin main

7. 添加gh-pages.yml文件

新建一个文件,在pingfan-blog目录下,名称为**.github**,然后在.github文件夹下新建一个文件夹workflows,在workflows文件夹下新建一个文件叫gh-pages.yml

总的路径为pingfan-blog/.github/workflows/gh-pages.yml

在gh-pages.yml输入以下内容后保存。

name: github pages

on:
  push:
    branches:
      - main  # Set a branch to deploy
  pull_request:

jobs:
  deploy:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true  # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0    # Fetch all history for .GitInfo and .Lastmod

      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: 'latest'
          # extended: true

      - name: Build
        run: hugo --minify

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v3
        if: github.ref == 'refs/heads/main'
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public

8. 重新把修改过的文件上传到github上

再走一遍

git status 
git add .
git commit -m "add yml file"
git push

9. 成功的话,我们会发现所有的内容都上传到github了

10. 找到刚刚的github仓库,点击Actions,就可以看到我们的网站部署成功了

11. 修改branch为gh-pages,位置在settings->Pages那里

11. 最后一步,修改hugo的baseURL

在github的仓库中找到Settings->Pages,找到为https://******.github.io/pingfan-blog

复制粘贴,打开config.toml,然后替换掉原先的。

12. 再走一遍

git status 
git add .
git commit -m "revise config"
git push

13. 打开github,点开pages,点击sourse,选择gh-pages,结束

我这个是换成了我自己购买的域名,所以会显示的不一样,你也可以买一个自己喜欢的域名,而不是默认的域名。

这是我的域名

如果有问题,可以加这个群,有空我会看的。
群号:339309252
或者扫这个:QQ群

有关如何零基础零费用的在30分钟内用hugo+github pages创建一个专属于你的个人博客 - 简单快捷到建议人手一个的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  9. ruby-on-rails - Rails - 一个 View 中的多个模型 - 2

    我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何

  10. ruby-on-rails - 渲染另一个 Controller 的 View - 2

    我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>

随机推荐