腾讯云 + serverless 快速部署全栈项目(vue + express + postgresql)

初步试用了一下 serverless 一键生成项目框架和部署到腾讯云,果然和官方宣传的一样,过程非常丝滑。
基本操作按照官方文档的指导来就可以正常完成一个框架的部署。

操作场景

该模板可以快速部署一个基于 Vue + Express + PostgreSQL 的全栈 Serverless 应用。主要包含以下组件:

  • Serverless RESTful API:通过云函数API 网关构建的 Express 框架实现 RESTful API。
  • Serverless 静态网站:前端通过托管 Vue.js 静态页面到 COS 对象存储中。
  • PostgreSQL Serverless:通过创建 PostgreSQL DB 为全栈网站提供数据库服务。
  • VPC:通过创建 VPC子网,提供 SCF 云函数和数据库的网络打通和使用。

说明:
本项目云函数因 VPC,导致无法直接访问外网,如需访问外网请参考 云函数网络配置。

https://cloud.tencent.com/document/product/583/38202

初始化应用

在空目录下,执行初始化命令:

1
2
# 交互式 serverless 初始化命令
$ serverless

接下来按照交互提示,完成项目初始化,选择 fullstack 组件模版,并等待依赖安装结束:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Serverless: 当前未检测到 Serverless 项目,是否希望新建一个项目? Yes
Serverless: 请选择您希望创建的 Serverless 应用 fullstack

eggjs-starter - 快速部署一个Egg.js 基础应用
express-starter - 快速部署一个 Express.js 基础应用
flask-starter - 快速部署一个 Flask 基础应用
❯ fullstack - 快速部署一个 Full Stack 应用, vuejs + express + postgres
koa-starter - 快速部署一个 Koa.js 基础应用
laravel-starter - 快速部署一个 Laravel 基础应用
nextjs-starter - 快速部署一个 nextjs 应用

Serverless: 请输入项目名称 fullstack
Serverless: 正在安装 fullstack 应用...

- 项目 "fullstack" 已在当前目录成功创建
- 执行 "cd fullstack && serverless deploy" 部署应用

fullstack › 创建成功

在jenkins pipeline 项目 + jmeter 自动化测试 + HTML Publisher 生成测试报告

最近在调研jmeter自动化测试这个topic,简单学习了一下jmeter的各种用法和语法,用jmeter写一套测试计划倒是挺简单的。
不过我认为,ui工具写出来的用例,如果不能git维护+持续集成,那就谈不上自动化测试。
所以就有了 jenkins + jmeter + 生成报告的这套工具的构建。

总结一下我的操作步骤,以及解决的一些坑(如生成的HTML报告没有样式等问题)

构建结果展示

项目构建状态:

project

HTML生成报告:

html

使用Github Actions自动同步仓库代码至gitee

本文主要研究通过 github actions 自动同步仓库代码至 gitee,顺便了解一下github actions的基础用法。

1. Github和Gitee添加公钥

通过终端生成公钥

在终端中输入: ssh-keygen ,不需要输入任何信息,直接回车,默认生成公钥文件如图:

public key

根据提示的文件路径,查看公钥内容:

1
2
# 根据路径修改,如: cat /c/Users/Administrator/.ssh/id_rsa.pub
cat [xxx.pub]

添加公钥信息

将输入的公钥内容复制下来,分别添加至 githubgitee 账户设置中。

检查公钥是否成功添加

1
2
ssh -T git@github.com
ssh -T git@gitee.com

返回成功认证的信息,则说明成功添加公钥。

1
2
# like this.
Hi! You've successfully authenticated, but GitHub does not provide shell access.

Centos用yum安装的nginx相关配置

使用 yum install nginx 安装的 nginx 服务器,配置文件路径:

  • html 目录默认路径: /usr/share/nginx/html
  • 默认 nginx.conf 路径: /etc/nginx/nginx.conf
  • vhost 配置目录:/etc/nginx/conf.d

现在开始普及 docker 之后,基本上 nginx 就是专门用来做转发配置了。

Linux 安装 docker 可视化管理工具 Portainer

简介

Portainer是一个可视化的容器镜像的图形管理工具,利用Portainer可以轻松构建,管理和维护Docker环境。 而且完全免费,基于容器化的安装方式,方便高效部署。

官网:https://www.portainer.io/

安装

官网提供的 docker 安装方式: https://documentation.portainer.io/v2.0/deploy/ceinstalldocker/

1 创建一个docker数据目录

1
docker volume create portainer_data

2 启动服务

1
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

3 初始化管理账户

用浏览器访问: http://[ip]:9000

设置管理员用户名密码。

4 选择管理方式

点击 Docker -> Connect 确定。

以上,配置完成。

点击左侧菜单栏的 Host 可以查看主机信息。

Centos系统的 VPS 初始环境整理(yum, docker, node, vpn, ss 等等)

搞了一台新VPS上手,一堆软件又不记得怎么装了。记录一下各种软件部署的流程。

安装工具

升级yum

1
2
yum update
yum makecache #生成仓库缓存

基础工具

1
2
yum install -y git python3
sudo yum install -y gcc gcc-c++

nodejs - 推荐用下面的 nvm 安装替代:

1
2
3
4
5
6
7
8
9
# 下载node 版本参考<https://nodejs.org/en/download/>
wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz
tar -xvf node-v12.18.3-linux-x64.tar.gz
cd node-v12.18.3-linux-x64
./configure
# 编译
make && make install
# 查看node版本
node -v

nvm - node版本管理工具:

1
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

完成后,在 .bash_profile 文件中加入:

1
2
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

执行 source .bash_profile 后,安装 node 的命令就很简单了:

1
nvm install stable

用gulp实现全站HTML、CSS、JS和图片压缩

最近被安利了一款一键更新 npm package 的小工具,叫 npm-check-updates ,装完只需要在目录下运行 ncu -u,然后就会自动把 package.json 中的包版本更新到最新版本号,然后再一键 npm install 就完成了依赖升级。

本来这个博客 hexo 也是好多年前起的,看到最近 hexo 发布了 5.0 大版本,冲动之下马上一键更新,结果发现自己之前定制的 gulp 压缩脚本也用不了,跑去官网一看,原来 gulp 更新的新版本的语法已经变了。

于是只好花了2个小时左右学习新版本的语法,重写了 hexo 的全站压缩脚本 gulpfile.js

先上官网:

再来个中文网快速入门:

nodejs将base64编码的图片上传至指定服务器

最近做项目的时候遇到了一个小细节问题,对接第三方云平台接口拿到了一个图片的 base64 编码,微信小程序中需要使用这个图片,并且将图片上传至java后端服务器上。
后端提供了图片上传接口,但只支持 FormData 文件流,不支持 base64 直接传,前端需要考虑的就是如何把 base64 编码变成图片。

这个其实 web 端已经有成熟的方案了,将 base64 转换成二进制图片 Blob,再组装 FormData 对象即可完成。

贴一段示例代码,应该很容易看懂:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var base64String = '/*base64图片串*/';

// 这里对base64串进行操作,去掉url头,并转换为byte
var bytes = window.atob(base64String.split(',')[1]);

// 处理异常,将ASCII码小于0的转换为大于0
var ab = new ArrayBuffer(bytes.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < bytes.length; i++) {
ia[i] = bytes.charCodeAt(i);
}
// Blob对象
var blob = new Blob([ab], {type: 'image/jpeg'}); //type为图片的格式

// FormData对象
var fd = new FormData();

// FormData对象接受三个参数,第三个参数为文件名,通常我们只传前两个参数,第三个参数不传则使用默认文件名。
// 这里使用的Blob对象,所以需要一个文件名,用时间戳代替。
fd.append('file', blob, Date.now() + '.jpg');

然而这一切到了微信小程序上,开始变得困难了 =。=

微信小程序里没有 atob ,也不支持 Blob 对象,这种转换不允许放在微信小程序上前端执行。这时候我只好退而求其次,让 nodejs 作为中间件去完成这个小任务。

mac安装jenkins和微信小程序发布助手集成

mac安装jenkins真是遇到了大坑,jenkins官方pkg下载下来,安装后默认jenkins home主目录不能修改,然后各种报没有权限。本来安装就花了半天的时间去准备环境,最后还是不得不忍痛卸载官方jenkins,使用 brew install jenkins 来解决问题。结果等 brew install 同样等了俩小时。

卸载jenkins的终端命令:

1
/Library/Application Support/Jenkins/Uninstall.command