Skip to content

Commit

Permalink
feat: full update
Browse files Browse the repository at this point in the history
  • Loading branch information
bsdayo committed Aug 17, 2023
1 parent c7cb2aa commit 912c633
Show file tree
Hide file tree
Showing 57 changed files with 1,161 additions and 1,139 deletions.
12 changes: 11 additions & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,48 @@
name: Deploy

on:
workflow_dispatch: {}
workflow_dispatch: { }
push:
branches:
- main

jobs:
deploy:
runs-on: ubuntu-latest

permissions:
pages: write
id-token: write

environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- uses: pnpm/action-setup@v2
with:
version: 8

- uses: actions/setup-node@v3
with:
node-version: 18
cache: pnpm

- run: pnpm install

- name: Build
run: pnpm run build

- uses: actions/configure-pages@v2

- uses: actions/upload-pages-artifact@v1
with:
path: content/.vitepress/dist

- name: Deploy
id: deployment
uses: actions/deploy-pages@v1
5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 33 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/watcherTasks.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# BsBlog v4

> Powered by VitePress + Vuetify
**Still WIP...**
11 changes: 3 additions & 8 deletions content/.vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { defineConfigWithTheme } from 'vitepress'
import vuetify from 'vite-plugin-vuetify'
import { BsBlogThemeConfig } from '../../theme'
import { BsBlogThemeConfig } from '../../theme/types/config'
import { createContainer } from './utils'

export default defineConfigWithTheme<BsBlogThemeConfig>({
title: 'BsBlog',
description: 'BsBlog v4 - Built with VitePress',
description: 'BsBlog v4 - Powered by VitePress',

markdown: {
theme: 'one-dark-pro',
Expand Down Expand Up @@ -36,7 +36,7 @@ export default defineConfigWithTheme<BsBlogThemeConfig>({
author: 'bsdayo',
bio: '♪sakana——\\(>○<\\)♪',
avatar: 'https://avatars.githubusercontent.com/u/41754841',
postPerPage: 8,
defaultPostCover: 'https://cdn.vuetifyjs.com/images/parallax/material.jpg',
navLinks: [
{
href: '/',
Expand Down Expand Up @@ -80,11 +80,6 @@ export default defineConfigWithTheme<BsBlogThemeConfig>({
icon: 'si:bilibili',
desc: 'BiliBili',
},
// {
// href: 'mailto:bs@sorabs.cc',
// icon: 'si:microsoftoutlook',
// desc: 'Mail',
// },
],
giscus: {
host: 'https://giscus.app',
Expand Down
3 changes: 2 additions & 1 deletion content/.vitepress/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import container from 'markdown-it-container'

// https://github.com/vuejs/vitepress/blob/main/src/node/markdown/plugins/containers.ts
type ContainerArgs = [typeof container, string, { render: Function }]

export function createContainer(
klass: string,
defaultTitle: string,
Expand All @@ -11,7 +12,7 @@ export function createContainer(
container,
klass,
{
render(tokens, idx) {
render(tokens: any, idx: any) {
const token = tokens[idx]
const info = token.info.trim().slice(klass.length).trim()
if (token.nesting === 1) {
Expand Down
7 changes: 4 additions & 3 deletions content/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
---
home: true
title: 首页
image: https://w.wallhaven.cc/full/zy/wallhaven-zygeko.jpg
type: home
#title: BsBlog
description: 欢迎!
# cover: https://w.wallhaven.cc/full/zy/wallhaven-zygeko.jpg
---

9 changes: 5 additions & 4 deletions content/pages/about/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ comment: true

## Ciallo~(∠・ω&lt; )⌒☆

- 苦逼高三生
- ~~苦逼高三生~~ 毕业了!
- 经常(天天)熬夜
- 又菜又爱玩的音游fw
- ~~lolicon~~
Expand All @@ -14,9 +14,10 @@ comment: true

第四版 Blog 终于还是来了...

这一次是基于 [VitePress](https://vitepress.dev/) 的纯前端 SSG 博客,自己用 Vuetify 搭了一个 Material Design 风格的界面,目前感觉是挺满意的。界面参考了 Hexo 的 [Butterfly](https://butterfly.js.org/) 主题,也算是以前一直很喜欢的设计
这一次是基于 [VitePress](https://vitepress.dev/) 的纯前端 SSG 博客,自己用 Vuetify 搭了一个 Material Design
风格的界面,目前感觉是挺满意的。

VitePress 的好处还是很多的,比如直接在 Markdown 中使用 Vue 组件
VitePress 的好处还是很多的,比如直接在 Markdown 中使用 Vue 组件库

<v-btn class="my-2">这是一个 v-btn 组件</v-btn>

Expand All @@ -31,7 +32,7 @@ VitePress 的好处还是很多的,比如直接在 Markdown 中使用 Vue 组
和一些内置的 [Markdown 扩展](https://vitepress.dev/guide/markdown)(这里我自己加了样式):

::: tip 一些自定义的文本块
♪sakana——\\(>○<\\)♪ &emsp; :fish: Emoji 支持
♪sakana——\\(>○<\\)♪ &emsp; `:fish:`:fish: Emoji 支持
:::

最后还是希望自己能坚持写下去(跑
Expand Down
4 changes: 2 additions & 2 deletions content/pages/links/LinkCard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
<v-card class="link-card text-center" :href="$props.url" target="_blank">
<div class="d-flex justify-center pt-4 pb-1">
<v-avatar size="110">
<v-img class="link-card-avatar" cover :src="$props.avatar" />
<v-img class="link-card-avatar" :cover="true" :src="$props.avatar"/>
</v-avatar>
</div>
<v-card-title>{{ $props.title }}</v-card-title>
<v-card-subtitle>{{ $props.desc }}</v-card-subtitle>
<v-card-actions class="d-flex justify-center">
<v-btn icon="mdi-open-in-new" :href="$props.url" target="_blank" />
<v-btn icon="mdi-open-in-new" :href="$props.url" target="_blank"/>
</v-card-actions>
</v-card>
</template>
Expand Down
8 changes: 5 additions & 3 deletions content/pages/links/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,21 +60,23 @@ links:
---

::: tip 欢迎交换友链!

- 名称:BsBlog
- 链接:[https://sorabs.cc/](https://sorabs.cc/)
- 链接:[https://blog.bsdayo.moe/](https://blog.bsdayo.moe/)
- 头像:[https://avatars.githubusercontent.com/u/41754841?v=4](https://avatars.githubusercontent.com/u/41754841?v=4)
- 简介: bs在摸鱼还是睡觉呢zzz

~~(和我熟的话其实写什么都行 xxx)~~
:::

交换友链可以[在 GitHub 上修改本页面](https://github.com/bsdayo/bsblog/edit/main/content/pages/links/index.md),并提交 Pull Request;或者直接在下面评论,记得带上类似上面的的格式哦~
交换友链可以[在 GitHub 上修改本页面](https://github.com/bsdayo/bsblog/edit/main/content/pages/links/index.md),并提交
Pull Request;或者直接在下面评论,记得带上类似上面的的格式哦~

拜拜各位大佬们~

排序不分先后,最近加的会放在列表顶部 qwq

<v-container class="page-container" fluid>
<v-container class="page-container" :fluid="true">
<v-row>
<v-col :cols="$vuetify.display.mobile ? 12 : 6" v-for="link in $frontmatter.links">
<LinkCard :key="link.url" v-bind="link" />
Expand Down
56 changes: 36 additions & 20 deletions content/posts/deploy-aspnetcore-on-aliyun-fc/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,27 @@
title: 超低成本使用阿里云函数计算部署 ASP.NET Core 应用
create: 2023-05-07T20:40:31+08:00
cover: /covers/deploy-aspnetcore-on-aliyun-fc.webp
description: |
Serverless 是前几年提出的一种新的云服务架构,迅速得到了业界的广泛关注和使用。
对于用户来说,直接能够体验到的就是各大云计算厂商的云函数产品,例如阿里云函数计算,腾讯云云函数,Azure Functions,AWS Lambda 等等。
对于一个不需要持续进行后台任务的接口服务(例如 REST API 等),Serverless 相比传统的云服务器部署拥有许多得天独厚的优势。
---

## 简单介绍 Serverless

Serverless 是前几年提出的一种新的云服务架构,迅速得到了业界的广泛关注和使用。对于用户来说,直接能够体验到的就是各大云计算厂商的云函数产品,例如阿里云函数计算,腾讯云云函数,Azure Functions,AWS Lambda 等等。
Serverless 是前几年提出的一种新的云服务架构,迅速得到了业界的广泛关注和使用。对于用户来说,直接能够体验到的就是各大云计算厂商的云函数产品,例如阿里云函数计算,腾讯云云函数,Azure
Functions,AWS Lambda 等等。

对于一个不需要持续进行后台任务的接口服务(例如 REST API,gRPC 等),Serverless 相比传统的云服务器部署,拥有许多得天独厚的优势
对于一个不需要持续进行后台任务的接口服务(例如 REST API,gRPC 等),Serverless 相比传统的云服务器部署拥有许多得天独厚的优势

- 运维成本低:传统的云服务器需要使用者对运维有一定的了解,并且在服务器选型/购买、环境配置、资源分配等方面都需要亲力亲为。Serverless 则不同,所有实例的创建销毁都由云服务提供方自动管理,使用者只需要指定资源需求,上传可执行文件/代码,就能直接把服务跑起来。(所谓 "Serverless",就是让用户感知不到配置服务器的步骤)
- 使用成本低:传统的云服务器是按时间收费,比如几个月、一年一次付清,其间如果没有在跑服务,或者使用频率比较低,那时间就白白浪费了。而 Serverless 服务是按需计费的,只有在接受请求的时候会按调用次数计费,没有请求的时候服务实例会被释放,不会产生费用。
- 运维成本低:传统的云服务器需要使用者对运维有一定的了解,并且在服务器选型/购买、环境配置、资源分配等方面都需要亲力亲为。Serverless
则不同,所有实例的创建销毁都由云服务提供方自动管理,使用者只需要指定资源需求,上传可执行文件/代码,就能直接把服务跑起来。(所谓 "
Serverless",就是让用户感知不到配置服务器的步骤)
- 使用成本低:传统的云服务器是按时间收费,比如几个月、一年一次付清,其间如果没有在跑服务,或者使用频率比较低,那时间就白白浪费了。而
Serverless 服务是按需计费的,只有在接受请求的时候会按调用次数计费,没有请求的时候服务实例会被释放,不会产生费用。
- 利于解耦:Serverless 比微服务还要更进一步,可以把服务拆成更细的粒度,从而在更新时只需要进行小范围的迭代,而不用整个应用都重新部署一遍。
- 弹性扩容:不比云服务器需要在一开始考虑好配置问题,Serverless 服务的资源可以看成是无限的 —— 由于是根据调用动态创建实例,就可以随时随地根据业务规模去动态调整配置需求。
- 弹性扩容:不比云服务器需要在一开始考虑好配置问题,Serverless 服务的资源可以看成是无限的 ——
由于是根据调用动态创建实例,就可以随时随地根据业务规模去动态调整配置需求。

以阿里云为例,我们看一下一个云函数的使用成本:

Expand Down Expand Up @@ -89,13 +98,16 @@ TestAliyunFC -> C:\Users\bsdayo\Code\TestAliyunFC\TestAliyunFC\bin\Release\net8.

## 准备 ASP.NET Core 运行时

阿里云官方提供的 .NET 环境少得可怜,只有 .NET Core 2.1,.NET Core 3.1 和 .NET 6 三个版本,难以满足我们的需求。好在阿里云提供了 Custom Runtime 和“层”功能,我们可以上传自己的运行时,从而支持各种各样的自定义环境。
阿里云官方提供的 .NET 环境少得可怜,只有 .NET Core 2.1,.NET Core 3.1 和 .NET 6 三个版本,难以满足我们的需求。好在阿里云提供了
Custom Runtime 和“层”功能,我们可以上传自己的运行时,从而支持各种各样的自定义环境。

前往 [.NET 下载页](https://dotnet.microsoft.com/zh-cn/download/dotnet),选择自己想要的 .NET 版本。下文将用 .NET 8 Preview 3 举例。
前往 [.NET 下载页](https://dotnet.microsoft.com/zh-cn/download/dotnet),选择自己想要的 .NET 版本。下文将用 .NET 8 Preview
3 举例。

![.NET 下载页](./dotnet-runtime-download.webp)

由于我们是需要运行应用,所以下载”ASP.NET Core 运行时“就可以了。系统选择 Linux,在二进制文件一栏找到 x64 架构下载。下载下来是一个 `.tar.gz` 压缩包,我们可以使用 7-Zip 等软件将其解压,也放在一旁备用。
由于我们是需要运行应用,所以下载”ASP.NET Core 运行时“就可以了。系统选择 Linux,在二进制文件一栏找到 x64
架构下载。下载下来是一个 `.tar.gz` 压缩包,我们可以使用 7-Zip 等软件将其解压,也放在一旁备用。

## 创建层

Expand Down Expand Up @@ -132,7 +144,8 @@ TestAliyunFC -> C:\Users\bsdayo\Code\TestAliyunFC\TestAliyunFC\bin\Release\net8.
:::

::: note 关于路径
自定义层在挂载的时候会自动把所有文件解压到 `/opt` 目录下,因此需要注意路径问题。向上面选择直接包含 `dotnet` 文件的文件夹,挂在后 `dotnet` 文件的路径就是 `/opt/dotnet`
自定义层在挂载的时候会自动把所有文件解压到 `/opt` 目录下,因此需要注意路径问题。向上面选择直接包含 `dotnet`
文件的文件夹,挂在后 `dotnet` 文件的路径就是 `/opt/dotnet`
:::

完成后如下,点创建就行。
Expand All @@ -158,29 +171,32 @@ TestAliyunFC -> C:\Users\bsdayo\Code\TestAliyunFC\TestAliyunFC\bin\Release\net8.
/opt/dotnet TestAliyunFC.dll
```

::: note 关于路径
上传的代码同样需要注意路径问题,上传的文件夹或 zip 包****的代码会存放在 `/code` 目录下,函数启动时的初始目录也是 `/code`
:::
::: note 关于路径
上传的代码同样需要注意路径问题,上传的文件夹或 zip 包****的代码会存放在 `/code`
目录下,函数启动时的初始目录也是 `/code`
:::

::: warning 坑:应用监听地址
跑在云函数上的应用**必须监听 `0.0.0.0` 地址**,且**应用和函数的监听端口需要保持一致**。为了达成这个要求,我们需要给 ASP.NET Core 显式设置一下,否则会导致请求超时。

有两种方法,选择其一即可,这里举例将端口设置为 1145。
::: warning 坑:应用监听地址
跑在云函数上的应用**必须监听 `0.0.0.0` 地址**,且**应用和函数的监听端口需要保持一致**。为了达成这个要求,我们需要给
ASP.NET Core 显式设置一下,否则会导致请求超时。

有两种方法,选择其一即可,这里举例将端口设置为 1145。

- 在启动命令后面加上 `--urls http://0.0.0.0:1145`
-`Program.cs` 中加上以下代码,并重新发布上传:
```csharp
builder.WebHost.UseUrls("http://0.0.0.0:1145");
```
然后将”监听端口“项也设置为 1145。
:::

然后将”监听端口“项也设置为 1145。
:::
- 高级配置中可以选择实例规格,按需求选就好,后续可以更改。
- 剩下的环境变量等可以自行配置。

创建完成后会自动打开函数详情页,里面有一个基于 VSCode 的在线编辑器,不过我们只有一堆 dll,只能看着发呆没啥用。

如果对目录结构还是不太清楚,可以开一个内置的终端自己探索一下。需要注意的是层只有在运行的时候才会挂载进来,所以即便稍后添加了自定义层,`/opt` 目录底下也是找不到我们的运行时的。
如果对目录结构还是不太清楚,可以开一个内置的终端自己探索一下。需要注意的是层只有在运行的时候才会挂载进来,所以即便稍后添加了自定义层,`/opt`
目录底下也是找不到我们的运行时的。

在编辑器上方找到”编辑层“,点进去

Expand Down
Loading

0 comments on commit 912c633

Please sign in to comment.