NoBige-JackCh3n

copy to my blog

code

文件格式

在windows上编写的脚本命令,在centos,ubuntu上报错bad interpreter: No such file or directory

1.检查是否有权限,没有则设置权限 chmod +x test.sh

2.文件格式错误,windows上写的格式是dos,需要unix格式才能运行

1
2
3
4
5
vi test.sh
:set ff 或 :set fileformat
:set ff=unix
ESC键
:x

windows下一劳永逸的方法

  1. 使用Notepad++ ,编辑,文档格式转换,转为 Unix
    1. Notepad++ 设置中文,Setting,Preferences,General,Localization,English下拉简体中文
  2. sublime text 设置,"default_line_ending": "unix",

至于dos2unix方法,若不是特别多需要转换不建议采用。

参考

概念图

docker概念图

命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# 删除镜像
docker rm ID
# 删除仓库镜像
docker rmi ID

# 拉取镜像
docker pull node

# 拉取指定镜像版本
docker pull node:latest

# 运行镜像
docker run node

# 后台运行镜像
docker run -d node

# 停止
docker stop node

# 重启
docker restart node

# 端口映射,外部:内部
docker run -d 80:80 nginx

# 查看docker运行
docker ps

# 查看docker运行日志
docker logs ID
docker logs NAME

# 结束镜像
docker kill ID
docker kill NAME

# 进入镜像操作
docker exec -it ID /bin/bash

# 强制删除使用中的镜像
docker rm -f ID

# commit 修改打包镜像(不推荐)
docker commit -m "信息" ID username/project:vesion

Dockerfile方式打包镜像

1
2
3
4
mkdir abc
cd abc
vi Dockerfile
docker build -t "username/abc:v1" .

一个简单的Dockerfile,已发布在docker社区

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
FROM node:lts-stretch-slim
ENV LANG C.UTF-8
MAINTAINER lenyuadmin
WORKDIR /opt/hexo
RUN apt-get update -y \
&& apt-get install -y git \
&& npm install hexo-cli -g \
&& echo "---------------" \
&& node -v \
&& echo "---------------" \
&& git --version \
&& echo "---------------" \
&& npm -v \
&& echo "------end---------"
WORKDIR blog

问题

容器启动报错

Error response from daemon: Conflict. The container name “/xware” is already in use by container “3664cd9dca080ee8bb1438cb6b6f01f6cd12d39b7674d202c801b2720bad4a65”. You have to remove (or rename) that container to be able to reuse that name.

解决:结束进程,删除镜像或者重命名将xware改成 xware2 或者 xwareN

1
2
docker kill 3664cd9dca080ee8bb1438cb6b6f01f6cd12d39b7674d202c801b2720bad4a65
docker rm 3664cd9dca080ee8bb1438cb6b6f01f6cd12d39b7674d202c801b2720bad4a65

安装

Play With Docker(Docker在线实验室) 是一个运行在浏览器中的Docker Playground,无需安装任何环境,就可以在线体验 Docker。

​ 安装是不可能的,既麻烦又耗时间。所以我推荐Play with Docker,登录后既可以无限试用4个小时。

play-with-docker源码

镜像加速器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Docker官方提供的中国镜像库:https://registry.docker-cn.com
// 七牛云加速器:https://reg-mirror.qiniu.com
// 网易加速器:http://hub-mirror.c.163.com
// daocloud加速器:http://f1361db2.m.daocloud.io
//******以下为配置文件******
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"http://f1361db2.m.daocloud.io"
],
"insecure-registries" : [
"registry.docker-cn.com",
"f1361db2.m.daocloud.io"
],
"debug" : true,
"experimental" : true
}

参考

Motorcycle

流程

  1. 本地GIT提交到github或其他仓库
  2. github通过webhook之类的方式通知netlify拉取最新版的的文章
  3. netlify拉取,编译
  4. 等待1分30秒左右
  5. 刷新看下更新后的博客

好处

  • 免费,支持htpps,无广告
  • 开放性强大,可以配合AWS Lambda函数等
  • 便捷,写博客不限制于本地的环境

与Coding对比

  • coding使用Tencent香港服务器,netlify使用AWS新加坡服务器
  • netlify比较简单,不需要太多设置既可以支持Jekyll,Grunt,Middleman,Hexo,Hugo,Gatsby,VuePress。coding则需要对Docker有一定了解才能自定义
  • 建议:已备案推荐netlify配合upyun,快到飞起。未备案则就coding吧

准备

  1. 一个github或gitlab或bitbucket账号
  2. 一个hexo或者其他类型的博客,若没有则建议Fork下hexo-template

开始

打开netlify网站,用你的github账号登录

点击New site from Git,在Create a new site中选择你的git仓库账号,博主的时Gihubt,如下图所示

New site from Git

在弹出来的授权信息点击Authorize Netlify by Netlify,如下图所示

Authorize Netlify by Netlify

在Install Netlify页面中选择Only select repositories,然后选中刚刚Fork的hexo-template或是你自己的仓库,如下图所示

Install Netlify

点击 JackCh3n/hexo-template

hexo-template

选择团队和分支,Build command填写hexo g,Publish directory填写public即可点击Deploy site完事了。

Deploy setting

后会跳到网站的详情页面,如下图所示

netlify设置

可以根据自己的需求来绑定域名和一些其他设置,如果你是Fork的hexo-template则可以修改netlify.toml来实现http跳到https以及netlify的域名转跳到你的域名。

netlify.toml

绑定域名

​ 在Domain management,Custom domains,Add custom domain新增一个

自己的域名,然后CNAME指向他给你域名即可,如给我的是nobige.netlify.com。

https

​ 绑定域名后可以在Domain management,HTTPS,开通

http跳https

可以参考netlify.toml文件,基本规则如下

1
2
3
4
5
[[redirects]]
from = "http://www.nobige.cn/*"
to = "https://nobige.cn/:splat"
status = 301
force = true

预览

​ 自己动手建一个呗

A colorful strip of buildings in Havana

流程

  1. 本地GIT提交到Coding
  2. Coding通过持续集成把md文件编译成html文件,并提交到public仓库
  3. Coding通过持续部署把刚编译提交到public的html文件部署到page服务
  4. 等待1分30秒左右
  5. 刷新看下更新后的博客

好处

  • 免费,支持htpps,无广告
  • 访问速度快,Tencent香港服务器
  • 后台强大,Tencent做坚强的后盾
  • 便捷,写博客不限制于本地的环境

准备

  1. coding团队版,5人以下免费(注册地址)
  2. 原Hexo可以正常的使用

持续集成

​ 登录团队版coding后创建一个项目,公开和私有均可,如我创建的叫nobige

​ 将Jenkinsfile文件下载到你原来的Hexo博客根目录下,若没有博客可以直接下载整个hexo-template项目。然后提交到刚创建的nobige项目

在登录coding团队版后,创建一个叫public的仓库,如下图所示

创建仓库

在设置,开发者选项,项目令牌,新建一个项目令牌,如下图创建了一个叫子账号的令牌

子账号

子账号信息

接着进入Job列表,创建配置一个Job,触发规则如下图所示

创建job

配置持续集成过程,使用master分支中的Jenkinsfile,路径默认,点一下文本编辑查看时否解析错误,如下图所示

配置持续集成过程

开始持续集成,需要配置环境变量,缓存目录默认即可

1
2
3
4
5
6
7
8
9
USER_NAME = 你的昵称

USER_EMAIL = 你的邮箱

USER_PROJECT = 提交的地址
如,我的page仓库的https地址为:https://e.coding.net/nobige/nobige/public.git
USER_PROJECT地址的规则是
https://子账号名:子账号的密码@项目https地址
最终USER_PROJECT地址则为: https://pttfwy8fu:9708d6996d2fdd43a7e5e47216cc2a@e.coding.net/nobige/nobige/public.git

如此一来便开启了持续集成。

持续部署

在持续部署,静态网站中新建静态网站,需要注意的是选择仓库要选public,如下图所示

新建静态网站

绑定域名和https可以自行开启。

预览

​ 本博客现在就是通过这种方法来部署博客的。

结束

  • 原本是企图通过Docker来进行免npm安装这个环节,但是Jenkinsfile环境后与原Docker镜像环境有所不同所以不能实现,好在有缓存目录,也是一样的原理。

  • 原本的原本是打算把md文件转成json,然后放在coding的page上,接着发现有更为实用的方式(json还需要自己再写一套模板)折腾下便有了本文。

  • A colorful strip of buildings in Hava… | HD photo by Spencer Everett (@sp3v) on Unsplash

腾讯防水墙填坑

服务端URL大小写

​ 文档给出的几个字段必须按其“标准“的进行填写,若全小写或大小则出现解密错误。

错误的链接拼接:

1
2
3
4
5
6
https://ssl.captcha.qq.com/ticket/verify?
aid=2000000666
&appsecretkey=qweasd**
&ticket=t02Du9JFjXbk2kdLWeO0iDKXs9L-tjRd-fqWh4vQZG6Jb5lMJN1hSDKEDjHlgk7A2bC1lNXz6yK7wPV_pYcAe9p_dIEnDsLBr5jAQCJOmablbPhfVlMKNsmMg**
&randstr=@ZDU
&userip=127.0.0.1

报错

1
{ "response": "15", "evil_level": "0", "err_msg": "decrypt fail" }

正确的链接拼接

1
2
3
4
5
6
https://ssl.captcha.qq.com/ticket/verify
?aid=2000000666
&AppSecretKey=qweasd**
&ticket=t02Du9JFjXbk2kdLWeO0iDKXs9L-tjRd-fqWh4vQZG6Jb5lMJN1hSDKEDjHlgk7A2bC1lNXz6yK7wPV_pYcAe9p_dIEnDsLBr5jAQCJOmablbPhfVlMKNsmMg**
&Randstr=@ZDU
&UserIP=127.0.0.1
0%