吃灰的云主机不要忘,部署个人博客,隔壁开发都馋哭了(上)

简介: 笔者置办个人博客的技术选型:简洁:界面简洁,排版合理,不需要花里花哨;简单:上手简单,开箱即用,输出文章即可,无需过于关注实现细节;快:加载快,性能高效,移动端适配(地铁上也可以康康);

Gitbook、Hexo、WordPress等之前折腾过一下,各有优缺点,最后决定用尤大的 Vuepress,相关介绍自行移步至官网查阅:vuepress.docschina.org/,就不复制粘贴了。


网上大部分文章都是教如何把Vuepress部署到Github上,上面也说了不稳定,

部署到云服务器上也不难,就是build一下生成带样式的 静态网站,通过ftp传上去,

配置下Nginx,域名解析下即可。于是乎每次更新博客的流程:


本地修改 → 命令行build → ftp工具上传生成文件进行覆盖


可以是可以,就是有点繁琐,其实可以把build这一步放在服务器上,就不用ftp传了:

答:自动化构建 了解下?说到这个名词,第一反应是不是:Gitlab CI + jenkins


但是小博客用他两太重了,官方推荐Gitlab服务器内存4G以上,Jenkins对配置要求也较高, 内存只有一个鸡的云服务器表示心有余而力不足。


我把目光转向了国产Github → 码云Gitee,支持 WebHooks


网络异常,图片无法展示
|


em,要写一个API接口给它调,接口功能:拉取最新博客源代码 → 执行vuepress build构建命令 等。 一切准备就绪后的结果:我文章写完,git push一波,个人博客就自动更新了。妙啊! 另外,考虑到云服务器的硬盘只有50G,图片类资源文件就不丢上去了,直接用CDN~


本节就来手把手实践一波~


0x1、Vuepress 本地部署


① Node.js 安装配置


官网下载:nodejs.org/en/download…,傻瓜式下一步安装,完成后可配置

npm 安装的 全局模块 和 缓存cache的路径,不然全局安装的模块都会塞到:

C:\Users\用户名\AppData\Roaming\npm 中,占用C盘空间,可通过下述命令

修改为node.js的安装文件夹:


cd nodejs
# 创建文件夹 
mkdir node_global
mkdir node_cache
# 设置
npm config set prefix node_global
npm config set cache node_cache
# 配置下环境变量(路径根据自己的实际情况进行替换):
# 系统变量 => 新建 => NODE_PATH => 输入
D:\Coding\nodejs\node_global\node_modules
# 用户变量Path中删除:
C:\Program Files\nodejs\node_global
# 新增
D:\Coding\nodejs\node_global


附:Node.js 及 npm 更新相关命令:


# 查看安装的node.js版本 
node -v 
# 清除cache
sudo npm cache clean -f
# 安装用于管理node.js版本的n工具
sudo npm install -g n
# 安装最新node.js
sudo n stable
# 查看版本号
npm -v  
# 更新最新版
npm install npm@latest -g.  


Tips:深入了解npm可移步至:www.npmjs.cn/getting-sta…


② 快速搭建


走一波命令安装vuepress,以及创建相关文件


# 全局安装,执行一次即可
npm install -g vuepress
# 创建博客项目
mkdir Blog
# 项目初始化
npm init -y
# 添加主README.md文件
touch README.md
# 添加docs文件夹
mkdir docs
# docs文件夹中创建.vuepress文件夹
cd docs
mkdir .vuepress
# 新建总配置config.js文件
cd .vuepress
touch config.js
# dosc文件夹中创建README.md文件
cd ..
touch README.md


此时目录结构比较简单:


D:\Blog
├── docs
|  ├── .vuepress
|  |  └── config.js
|  └── README.md
├── package-lock.json
├── package.json
└── README.md


接着打开package.json添加运行脚本:


"scripts": {
    "dev": "vuepress dev docs",
    "build": "vuepress build docs"
}


保存后,输入下述命令中的一个即可运行:


npm run dev
yarn run dev


运行成功,可以看到控制台输出:


网络异常,图片无法展示
|


此时打开localhost:8080,即可看到效果。


③ 推荐的目录结构


VuePress 遵循 “约定优于配置” 的原则,推荐的目录结构如下(小改了一些~):


.
├── docs
│   ├── .vuepress (可选) → 存放全局配置、组件、静态资源等
│   │   ├── components (可选) → 该目录中的 Vue 组件将会被自动注册为全局组件
│   │   ├── theme (可选) → 存放本地主题
│   │   │   └── Layout.vue
│   │   ├── public (可选) → 静态资源目录
│   │   ├── styles (可选) → 存放样式相关的文件
│   │   │   ├── index.styl → 将会被自动应用的全局样式文件,会生成在最终的
│   │   │   │                CSS 文件结尾,具有比默认样式更高的优先级。
│   │   │   └── palette.styl → 重写默认颜色常量,或者设置新的 stylus 颜色常量
│   │   ├── templates (可选,谨慎配置,最好基于默认模板文件来修改) → 存储HTML模板文件
│   │   │   ├── dev.html → 用于开发环境的HTML模板文件
│   │   │   └── ssr.html → 重写默认颜色常量,或者设置新的 stylus 颜色常量    
│   │   ├── config.js → 全局配置文件
│   │   ├── enhanceApp.js → 客户端应用的增强
│   ├── guide (可选) → 一般会在此目录下创建网站指南
│   │   └── README.md
│   ├── study (举例)
│   │   └── study01.md
│   │   └── study02.md
│   ├── README.md → 博客首页
└── package.json → 项目启动配置


④ 默认主题配置


此处只是做下简单配置,更详细的配置可移步至官方文档:

www.vuepress.cn/theme/defau…


1)页面标题与图标


修改 → docs/.vuepress/config.js


module.exports = {
    title: 'CoderPig的小世界',  // 网站标题
    description: '吾日三省吾身',    // 网站描述  
    head: [
        // 网页标签图标,'/'指向docs/.vuepress/public 文件目录
        ['link', { rel: 'icon', href: '/img/favicon.ico' }]
    ],
    base: '/',// 设置站点根路径
    dest: './ROOT',  // 设置输出目录
    plugins: [],
}


2) 设置封面页


修改 → docs/README.md


---
home: true
heroImage: /img/logo.png
heroText: CoderPig的小世界
tagline: 吾日三省吾身
actionText: Get Started →
actionLink: /zh/guide/
features:
- title: 待填充
  details: 待填充
- title: 待填充
  details: 待填充
- title: 待填充
  details: 待填充
footer: MIT Licensed | Copyright © 2018-present Evan You
---


看下运行效果,很Nice!


网络异常,图片无法展示
|



相关文章
|
运维 监控 安全
堡垒机是用来干什么的?堡垒机的好处有什么?
堡垒机能保障网络和数据不受来自外部和内部用户的入侵和破坏,运用各种技术手段实时收集和监控网络环境。
1704 1
|
存储 安全 Java
小白聊《JAVA编程思想》-一切都是对象(一)
小白聊《JAVA编程思想》-一切都是对象(一)
92 0
|
NoSQL Redis 数据安全/隐私保护
macos系统中redis如何设置密码
以上步骤应该可以帮助你在macOS系统的Redis服务中设置密码,确保你的数据存储更加安全。此外,确保你定期检查Redis安全性相关的最佳实践和更新,以保持你的服务安全可靠。
926 3
|
消息中间件 Serverless Kafka
Serverless 应用引擎产品使用合集之Terraform怎么创建trigger
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
213 57
|
存储 移动开发 IDE
2022年十月份电赛OpenMV巡线方案详细代码分析(1)
2022年十月份电赛OpenMV巡线方案详细代码分析(1)
747 0
|
Linux Shell 编译器
用msys2与mingw编译FFmpeg
用msys2与mingw编译FFmpeg
572 0
|
JSON Java API
【Elasticsearch】搜索结果处理和RestClient查询文档(下)
【Elasticsearch】搜索结果处理和RestClient查询文档
1021 0
|
编译器 BI C语言
C语言假期作业 DAY 12
C语言假期作业 DAY 12
|
JavaScript 前端开发 编译器
如何优雅地在 React 中使用TypeScript,看这一篇就够了!(2)
毕业已有3月有余,工作用的技术栈主要是React hooks + TypeScript。其实在单独使用 TypeScript 时没有太多的坑,不过和React结合之后就会复杂很多。本文就来聊一聊TypeScript与React一起使用时经常遇到的一些类型定义的问题。阅读本文前,希望你能有一定的React和TypeScript基础
1238 0