开坑
- ubuntu HA_BUILD
用官方的ubuntu镜像即可,16.04或18.04都可以,不要用最新的20.04。一般来说启动之后的镜像除了手动指定的目录是持久化的,其他的会重启后失效,所以最好自己做一个镜像,把安卓编译环境安装上。
启动时映射本地目录,当作ANDROID_ROOT目录。
mer MER_BUILD
OBS
gitlab ci
开坑
用官方的ubuntu镜像即可,16.04或18.04都可以,不要用最新的20.04。一般来说启动之后的镜像除了手动指定的目录是持久化的,其他的会重启后失效,所以最好自己做一个镜像,把安卓编译环境安装上。
启动时映射本地目录,当作ANDROID_ROOT目录。
mer MER_BUILD
OBS
gitlab ci
注意:必须是用域名的方式(也就是有内网的dns),如果以前用ip,则本方法无效!
Harbor1.2之前的版本不能直接升级到新版本,想要升级到最新版并且业务不中断,可以采用如下方式。
大体流程如下:
B机器搭一个新harbor -> 手动将旧harbor的镜像push到新harbor -> 更改A域名指向到B主机ip ->
测试B的harbor服务是否正常 -> 铲掉A上的旧harbor -> 在A上重新搭建harbor -> B机器上的harbor同步到A上的harbor
测试A的harbor服务是否正常 -> 改回A域名指向A主机 -> 删掉B上的同步。
手动push旧harbor镜像到新harbor所用到的脚本:
pip install python_harborclient
get_all.py:
1 | #!/usr/bin/python |
python get_all.py > all_repos.txt
allimages=$(cat all_repos.txt)
ORIGIN_HOST=”pk8snode01.rmz.flamingo-inc.com:8888” #旧harbor
BACK_HOST=”pk8stemp02.rmz.flamingo-inc.com:8888” #新harbor
#提前登录一下
#docker login $BACK_HOST
for image in ${allimages}; do
docker pull ${ORIGIN_HOST}/$image
docker tag ${ORIGIN_HOST}/$image ${BACK_HOST}/$image
docker push ${BACK_HOST}/$image
sleep 1
echo $image “done”
done`
使用Gitlab/Bitbucket等CI搭建自己的临时代理
这篇文章只是从技术层面探讨可行性,不接受一切反驳!
具体可以查看frp github主页
下载对应你操作系统版本的包(我的docker打包的客户端是0.17.0版本,想使用新版的可以自行打包)
服务端配置如下(frps.ini):1
2
3[common]
bind_port = 7000
token = 123456
解压下载的压缩包,启动服务端: ./frps -c frps.ini
注意开通7000及需要frp客户端映射端口(这里用到了6200)
Gitlab参见 https://gitlab.com/0312birdzhang/frp_proxy
客户端配置如下(frpc.ini):1
2
3
4
5
6
7
8
9[common]
server_addr = 12.13.14.15
server_port = 7000
token = 123456
[socks_proxy_6200]
type = tcp
plugin = socks5
remote_port = 6200
fork代码后,需要修改server_addr、server_port、token、remote_port 为你服务器相关的,然后保存即可。
Bitbucket的参考:
bitbucket-pipelines.yml
image: 0312birdzhang/frpc_proxy:v2
pipelines:
default:
- step:
caches:
- pip
script:
- cp frpc.ini /app/my_frpc.ini
- /app/frpc -c /app/my_frpc.ini
12.13.14.15:6200 即是你的socks5代理地址
首先强调的是,这里需要两层nginx,用户访问nginx1,转发到nginx2(192.168.1.111),nginx2到真实后端。
1 | server{ |
1 | server{ |
用户访问1
curl -i -H "X-Forwarded-For: 110.110.110.110" -H "X-real-ip: 110.110.110.110" -s nginx1:8888/test -v
nginx1 日志:1
192.168.1.110 0.000 - [12/Sep/2018:11:01:51 +0800] "GET /test HTTP/1.1" 200 13 - "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" 110.110.110.110 110.110.110.110
nginx2 日志:1
192.168.1.111 0.000 - [12/Sep/2018:11:01:51 +0800] "GET /test2 HTTP/1.1" 200 13 - "-" "curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" 192.168.1.110 110.110.110.110
其中192.168.1.111为nginx1的ip
可以看到,在nginx2中可以拿X-real-ip获取用户的真实ip,在后端中可以拿这个头信息。
注意!必须要规定好nginx是在架构的哪一层级,根据所处的层级配置,否则该方法无效。
This post will show you how to install Docker on SailfishOS, and some hacks need to do.
这篇文章将介绍如何将Docker安装到SailfishOS上,和需要做的一些hack。
ps executable, usually provided by procps or a similar package.A properly mounted cgroupfs hierarchy; a single, all-encompassing cgroup mount point is not sufficient. See Github issues #2683, #3485, #4568).
64位系统
psUse this script check-config.sh
使用这个脚本 check-config.sh
1 | [nemo@Sailfish ~]$ ./check-config.sh |
Generally Necessary must be all enabled, if not enabled, you must enable it in your kernel defconfig, and rebuild kernel.
Generally Necessary 部分必须全部是enabled, 如果没有启用,必须启用然后重启编译内核。
https://download.docker.com/linux/static/stable/aarch64/
Extract the archive and put them to /usr/bin/, 18.06 is a working version.
1 | groupadd docker |
Start docker daemon/ 启动docker守护进程devel-su /usr/bin/dockerd
Or use systemd/ 或者使用systemd
1 | [Unit] |
Check version/检查版本1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20[root@Sailfish nemo]# docker version
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:20:38 2018
OS/Arch: linux/arm64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.3
Git commit: e68fc7a
Built: Tue Aug 21 17:27:20 2018
OS/Arch: linux/arm64
Experimental: false
Test/测试devel-su docker run hello-world
This command downloads a test image and runs it in a container. When the container runs, it prints an informational message and exits. / 这个命令会下载一个测试镜像,如果执行成功会打印如下信息
1 | [root@Sailfish nemo]# docker run hello-world |
On one terminal/在一个终端中执行1
2
3[root@Sailfish nemo]# docker run -it --rm -p 6080:80 nginx:latest
172.17.0.1 - - [05/Sep/2018:08:54:52 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.58.0-DEV" "-"
172.17.0.1 - - [05/Sep/2018:08:55:51 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.58.0-DEV" "-"
Vist on another terminal/在另一个终端中访问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[nemo@Sailfish ~]$ curl -s 127.0.0.1:6080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[nemo@Sailfish ~]$
Wayland forward /wayland转发
Reference/参考:
Have fun ;)
#### 未完待续…
参考如下:
https://raimue.blog/2018/01/09/goodbye-sailfish-os-and-jolla/
长时间运行的k8s节点可能会存在某些pod不自动退出,一直处于Terminating的状态
于是我们可以用这个脚本定时进行清理
1 | #!/bin/bash |
No subject alternative DNS name matching xxx.com found
[TOC]
故事太长,可以直接看这里 解决
昨天下午,突然有同事说OA打不开了,打开页面一看出现如下错误:
1 | 500 Servlet Exception |
内心中第一反应是证书的问题,于是赶紧上cas服务器查看日志,一切正常😵
然后上OA的服务器,将证书导入,重启服务,该是什么错还是什么错。。。
上谷歌一查,应该是匹配不到证书里的DNS名,但是确实是有的呀。
由于还有其他java系统接入了CAS登录,都是正常的,于是开始怀疑是OA那台的有问题,开始查看是不是有人最近改动过什么
然鹅并没有。。。
然后查看OA的日志(用的Resin中间件。。。
发现如下错误:
1 | [17:00:15.288] {http--8080-6$1533061820} java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching auth.corp.flamingo-inc.com found. |
开始怀疑是我写的AuthenticationFilter的锅,于是用了个新版本的cas-client-core,依然不行
开始升级jdk,由于是windows,直接安装的exe,然后改了启动脚本里面的JAVA_HOME,重启依然发现不行。。。 (((φ(◎ロ◎;)φ)))
于是暂时回退到了没有用CAS接入的版本,下班了。。。
今天回来不甘心啊,继续尝试解决
既然证书找不到xxx.com,那我换台nginx直接写host试试?
更新了一下测服nginx的证书,OA主机指定测服nginx ip
然后!!!! 可以了!!!! 😭
然后跟同事调试了一会,发现他昨天下午添加了一个域名abc.com,然后导致了default_server不是adc.com了。。。
更新一下jdk就可以了(摊手),OA用的是jdk1.6,jdk1.6旧版本不支持SNI,至于什么是SNI等,看这里 https://github.com/ditunes/blog/issues/13
之前没成功是因为windows的服务里面写死了jdk的路径。。。
这里用的 https://github.com/solusipse/fiche 的pastebin服务端,功能不多但是贴一些代码或者日志足够了
fiche将贴的内容保存为文件,然后用nginx显示,如下:1
2
3
4
5
6
7
8
9
10server {
listen 80;
server_name mysite.com www.mysite.com;
charset utf-8;
location / {
root /home/www/code/;
index index.txt index.html;
}
}
这样显示出来的文本在行数多的时候就看瞎眼了 @_@
我们可以用openresty将要显示的文本提前拼凑成html,html中用google的code prettify格式化处理。
对于用curl请求的我们不做处理,直接返回纯文本。
lua代码如下:
1 | local headers = ngx.req.get_headers() |
nginx 配置如下:1
2
3
4
5
6
7
8
9server {
listen 80;
server_name mysite.com www.mysite.com;
charset utf-8;
location / {
default_type text/html;
content_by_lua_file "/usr/local/openresty/scripts/fiche.lua";
}
}
代码还不完善,可能存在一些bug,欢迎提出
OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
Openresty解决了nginx不能很好的添加一些逻辑判断的痛点,而且又不失性能。
代码简单到不能再简单了,就三行
1 | local ip = ngx.var.remote_addr |
1 | ... |
1 | server |