名词?CONTAINER?ID(容器ID)
名词?IMAGE?ID(镜像ID)
cat?/etc/os-release?//查看系统信息
pwd?//查看当前路径
ls?//查看当前目录文件
docker?-v?//查看docker版本
docker-compose?up?-d?//在后台运行(取消-d是在控制台运行)
docker-compose?stop?//所有容器停止运行
docker?ps?-a?//查看正在运行的容器
docker?images?//查看安装的镜像
docker?stop?[CONTAINER?ID]?//停掉运行的容器
docker?rm?[CONTAINER?ID]?//删除运行的容器
systemctl?status?docker??//查看docker状态
systemctl?stop?docker????//停止docker
systemctl?start?docker????//启动docker
systemctl?restart?docker????//重启docker
Docker + Jenkins + Nginx 实战前端自动化部署
version:?'3.8'
#?执行脚本;docker-compose?-f?docker-compose-v1.0.yml?up?-d
services:
??jenkins:
????image:?jenkins/jenkins:2.439
????container_name:?jenkins
????privileged:?true
????user:?root
????ports:
??????-?"9090:8080"
??????-?"50001:50000"
????volumes:
??????-?./jenkins_home:/var/jenkins_home?#?如果不配置到云服务器路径下,则可以配置?jenkins_home?会创建一个数据卷使用
??????-?/var/run/docker.sock:/var/run/docker.sock
??????-?/usr/bin/docker:/usr/local/bin/docker
??????-?./maven/conf/settings.xml:/usr/local/maven/conf/settings.xml?#?这里只提供了?maven?的?settings.xml?主要用于修改?maven?的镜像地址
??????-?./jdk/jdk1.8.0_202:/usr/local/jdk1.8.0_202?#?提供了?jdk1.8,如果你需要其他版本也可以配置使用。
????environment:
??????-?JAVA_OPTS=-Djenkins.install.runSetupWizard=false?#?禁止安装向导「如果需要密码则不要配置」docker?exec?jenkins?cat?/var/jenkins_home/secrets/initialAdminPassword
????restart:?unless-stopped
volumes:
??jenkins_home:
Jenkins-Mac
1、安装jenkins
brew?install?jenkins
2、链接launchd配置文件
ln?-sfv?/usr/local/opt/jenkins/*.plist?~/Library/LaunchAgents
ln?-sfv?/usr/local/opt/jenkins-lts/*.plist?~/Library/LaunchAgents
3、启动jenkins
launchctl?load?~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
launchctl?load?~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist
4、停止jenkins
launchctl?unload?~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist
launchctl?unload?~/Library/LaunchAgents/homebrew.mxcl.jenkins-lts.plist
访问:http://localhost:8080?
清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
tar?-xvzf?jdk-8u281-linux-x64.tar.gz
vi?/etc/profile.d/java8.sh
export?JAVA_HOME=/usr/local/java/jdk1.8.0_281
export?JAVA_BIN=/usr/local/java/jdk1.8.0_281/bin
export?PATH=$PATH:$JAVA_HOME/bin
export?CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export?JAVA_HOME?JAVA_BIN?PATH?CLASSPATH
source?/etc/profile
java?-version
tar?-xvzf?apache-maven-3.6.3-bin.tar.gz
mv?apache-maven-3.6.3?maven3
vi?/etc/profile
MAVEN_HOME=/usr/local/tools/maven3?
export?MAVEN_HOME?
export?PATH=${PATH}:${MAVEN_HOME}/bin
source?/etc/profile?
mvn?-version
Jenkins是开源CI&CD软件领导者,是Devops神器
安装Jenkins->编写pipeline脚本->编写Dockerfile脚本。
FROM?openjdk:8-jdk-alpine
MAINTAINER?liunewshine@qq.com
ENV?TZ=Asia/Shanghai
RUN?ln?-snf?/usr/share/zoneinfo/$TZ?/etc/localtime?&&?echo?$TZ?>?/etc/timezone?&&?mkdir?-p?/esms
WORKDIR?/esms
EXPOSE?8090
ADD?./target/esms.jar?./
CMD?java?-Djava.security.egd=file:/dev/./urandom?-jar?esms.jar
docker?run?-u?root?-itd?--name?jenkins?-p?6001:8080?-v?$(which?docker):/usr/bin/docker?-v?/var/run/docker.sock:/var/run/docker.sock?-e?TZ="Asia/Shanghai"?-v?/etc/localtime:/etc/localtime:ro?-v?/volume1/docker/jenkins:/var/jenkins_home?jenkins/jenkins
docker pull jenkins/jenkins
流水线+docker,流水线可以让项目发布流程更加清晰,docker
可以大大减少Jenkins
配置。
尽量减少Jenkins的配置和发布脚本的书写。
CPU使用率、内存使用率和磁盘使用率的提高通常与系统中发生的特定操作和情况相关。以下是一些常见情况和操作,可能会导致这些资源的使用率增加:
内存使用率增加:
磁盘使用率增加:
docker?run?-p?3306:3306?--restart=always?-e?TZ="Asia/Shanghai"?\
--name?mymysql?-v?/usr/local/gourd/docker/mysql/conf:/etc/mysql/conf.d?\
-v?/usr/local/gourd/docker/mysql/logs:/logs?\
-e?MYSQL_ROOT_PASSWORD=123456?-d?mysql:5.7
docker?run?-p?8080:8080?--name?gourdtomcat?\
--restart=always?-e?TZ="Asia/Shanghai"?\
-v?/docker/tomcat/test:/usr/local/tomcat/webapps/test?-d?tomcat
?docker?run?-p?6379:6379?--restart=always?-e?TZ="Asia/Shanghai"?\
?-v?/usr/local/gourd/docker/redis/data:/data?\
?-v?/usr/local/gourd/docker/redis/conf/redis.conf:/etc/redis/redis.conf?\
?--name?myredis?-d?redis?redis-server?--appendonly?yes
?
?docker?run?--name?gourdnginx?-p?80:80?\
?--restart=always?-e?TZ="Asia/Shanghai"?-d?\
?-v?$PWD/conf/nginx.conf:/etc/nginx/nginx.conf?\
?-v?$PWD/logs:/var/log/nginx?nginx
//?查看运行中的容器
docker?ps
//?查看所有的容器
docker?ps?-a
//?搜索镜像
docker?search?keyword
//?例:docker?search?mysql
//?查看下载的镜像
docker?iamges
//?启动容器
docker?start?[容器名/容器ID]
//?停止容器
docker?stop/kill?[容器名/容器ID]
//?重启容器
docker?restart?[容器名/容器ID]
//?删除已停止的容器
docker?rm?[容器名/容器ID]
//?强制删除容器
docker?rm?-f?[容器名/容器ID]
//?删除镜像
docker?rmi?镜像id
//?查看容器日志
docker?logs?[容器名/容器ID]
//?查看容器运行状态信息
docker?stats
//?获取容器/镜像的元数据
docker?inspect?[OPTIONS]?NAME|ID?[NAME|ID...]
//?查看容器中运行的进程信息,支持?ps?命令参数
docker?top?[OPTIONS]?CONTAINER?[ps?OPTIONS]
//?将宿主机目录拷贝到容器目录
docker?cp?[path1]?[容器ID]:[path2]
//?将容器目录拷贝到宿主机目录
docker?cp?[容器ID]:[path2]?[path1]
docker?search?postgres
docker?pull?postgres
docker?images
[root@localhost?~]$?cd?/data/
[root@localhost?data]$?mkdir?postgres
[root@localhost?postgres]$?pwd
/data/postgres
docker?run?--name?postgresql?--privileged?-e?POSTGRES_PASSWORD=password?-p?15433:5432?-v?/data/postgres:/var/lib/postgresql/data?-d?postgres
docker?ps?-a
docker?pull?postgres
docker?volume?create?postgre-data
docker?run?-id?--name=postgresql?-v?postgre-data:/var/lib/postgresql/data?-p?5432:5432?-e?POSTGRES_PASSWORD=123456?-e?LANG=C.UTF-8?postgres
1?搜索镜像?docker?search?<镜像名称>
2?下载镜像?docker?pull?<镜像名称>:<标签>
3?运行容器?docker?run?<选项>?<镜像名称>:<标签>
4?配置容器?docker?exec?<容器名称>?<命令>
5?保存容器?docker?commit?<容器名称>?<新镜像名称>:<标签>
6?导出容器?docker?save?-o?<文件名称>?<镜像名称>:<标签>
7?导入容器?docker?load?-i?<文件名称>
Navicat for PostgreSQL 是一个简单易用的 PostgreSQL 数据库开发图形工具。从编写简单的 SQL 查询到开发复杂的数据库,Navicat for PostgreSQL 旨在满足广泛的用户需求,从 PostgreSQL 初学者到经验丰富的开发人员。连接到本地/远程 PostgreSQL 服务器,并与 Amazon Redshift、Amazon Aurora、Amazon RDS、Google Cloud 和 Microsoft Azure 等云数据库以及所有 PostgreSQL 数据库对象兼容。
brew install ab
。brew install wrk
。brew install siege
。brew install vegeta
。创建MQTT pub Sampler录入要发送MQTT的topic,如果需要发送不同数据,可以创建一个CVS,从表里获取数据。这时候在Pub sampler 里就需要使用${}来获取数据,字符串要加“”。
如果要模拟多个设备,那就创建多个线程组即可。如果想要测试MQTT服务能承受多大的并发, 可以根据需要设置线程数和间隔时间,不过这个数量如果特别大的话,并发量会不精准,但总体上还是可以达到我们的测试目的。
注意超时时间,这里默认的是10毫秒,如果MQTT服务不稳定,可能会出现偶尔连不上的问题,建议1000毫秒
public?enum?ServiceError?{
????NORMAL(1,?"操作成功"),
????UN_KNOW_ERROR(-1,?"未知错误"),
????/**?Global?Error?*/
????GLOBAL_ERR_NO_SIGN_IN(-10001,"未登录或登录过期/Not?sign?in"),
????GLOBAL_ERR_NO_CODE(-10002,"code错误/error?code"),
????GLOBAL_ERR_NO_AUTHORITY(-10003,?"没有操作权限/No?operating?rights"),
????;
????private?int?code;
????private?String?msg;
????private?ServiceError(int?code,?String?msg)
????{
????????this.code=code;
????????this.msg=msg;
????}
????public?int?getCode()?{
????????return?code;
????}
????public?String?getMsg()?{
????????return?msg;
????}
}
jar启动请忽略,war启动请继承 SpringBootServletInitializer
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
import?org.springframework.boot.builder.SpringApplicationBuilder;
import?org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public?class?SecurityApplication?extends?SpringBootServletInitializer?{
????public?static?void?main(String[]?args)?{
????????SpringApplication.run(SecurityApplication.class,?args);
????}
????//?war启动请实现该方法
????@Override
????protected?SpringApplicationBuilder?configure(SpringApplicationBuilder?builder)?{
????????return?builder.sources(SecurityApplication.class);
????}
}
Docker Compose是一个用于定义和运行多个Docker容器的工具。它允许您使用YAML文件来配置应用程序的服务、网络和卷,并使用单个命令启动、停止和管理整个应用程序。通过Docker Compose,您可以在一个命令中启动包含多个容器的应用程序,而无需手动运行多个docker run
命令。
Docker Compose的核心概念包括:
docker-compose.yml
。使用Docker Compose,您可以轻松地在开发、测试和生产环境中部署和管理复杂的容器化应用程序。
全局参数
filter
监测数据项统一过滤,保留两位小数。
{{10.23123|montionFilter?}}
扫码登录流程讲解、获取授权登录二维码
微信开放平台的方式应该是最舒服的微信扫码登陆了,但是前提需要交认证300元的认证费用,网站的话还需要提交《微信开放平台网站信息登记表》,也是审核最麻烦的方式,只好先pass啦
开发者认证
网站审核
时序图总结流程:
1、用户点击网站微信登陆图标。
2、网站带上AppID和AppSecret和回调域名参数请求微信OAuth2.0授权登陆。
3、第二步通过后,微信返回二维码供用户扫码。
4、用户扫码确定授权。
5、微信带上code参数回调java后端相关接口。
6、java后端获取到code后,在带上带上AppID和AppSecret和code再去调微信接口。
7、获取access_token后就可以解析用户的一些基本信息,比如:微信用户头像、用户名、性别、城市等一些基本参数。
准备工作
网站应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者账号,并拥有一个已审核通过的网站应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。
授权流程说明
微信OAuth2.0授权登录让微信用户使用微信身份安全登录第三方应用或网站,在微信用户授权登录已接入微信OAuth2.0的第三方应用后,第三方可以获取到用户的接口调用凭证(access_token),通过access_token可以进行微信开放平台授权关系接口调用,从而可实现获取微信用户基本开放信息和帮助用户实现基础开放功能等。 微信OAuth2.0授权登录目前支持authorization_code模式,适用于拥有server端的应用授权。该模式整体流程为:
1.?第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
2.?通过code参数加上AppID和AppSecret等,通过API换取access_token;
3.?通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
第一步:请求CODE
第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在PC端打开以下链接: https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,如redirect_uri的域名与审核时填写的授权域名不一致或scope不为snsapi_login。
1.?若access_token已超时,那么进行refresh_token会获取一个新的access_token,新的超时时间;
2.?若access_token未超时,那么进行refresh_token不会改变access_token,但超时时间会刷新,相当于续期access_token。
请求方法
获取第一步的code后,请求以下链接进行refresh_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN
1、Appsecret?是应用接口使用密钥,泄漏后将可能导致应用数据泄漏、应用的用户数据泄漏等高风险后果;存储在客户端,极有可能被恶意窃取(如反编译获取Appsecret);
2、access_token?为用户授权第三方应用发起接口调用的凭证(相当于用户登录态),存储在客户端,可能出现恶意获取access_token?后导致的用户数据泄漏、用户微信相关接口功能被恶意发起等行为;
3、refresh_token?为用户授权第三方应用的长效凭证,仅用于刷新access_token,但泄漏后相当于access_token?泄漏,风险同上;
4、如无特别业务需求,建议开发者自行管理业务登录态并合理设置过期时间,减少用户重新授权登录次数,优化用户体验。
建议将secret、用户数据(如access_token)放在App云端服务器,由云端中转接口调用请求。
对于接口作用域(scope),能调用的接口有以下:
授权作用域(scope) | 接口 | 接口说明 |
---|---|---|
snsapi_base | /sns/oauth2/access_token | 通过code换取access_token、refresh_token和已授权scope |
snsapi_base | /sns/oauth2/refresh_token | 刷新或续期access_token使用 |
snsapi_base | /sns/auth | 检查access_token有效性 |
snsapi_userinfo | /sns/userinfo | 获取用户个人信息 |
Spring学习笔记(二十三)——实现网站微信扫码登录获取微信用户信息Demo-左眼会陪右眼哭の博客
1、微信开放平台介绍(申请里面的网站应用需要企业资料) 微信开放平台网站:https://open.weixin.qq.com/
2、什么是appid、appsecret、授权码code appid和appsecret是 资源所有者向申请人分配的一个id和秘钥 code是授权凭证,A->B 发起授权,想获取授权用户信息,那a必须携带授权码,才可以向B获取授权信息 (你要从我这里拿东西出去,就必须带身份证)
3、先仔细阅读下微信开放平台 官方给出的微信登录开发指南: https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html
#????1、扫码支付文档:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=2_2
#????2、名称理解
????????appid:公众号唯一标识
????????appsecret:公众号的秘钥
????????mch_id:商户号,申请微信支付的时候分配的
????????key:支付交易过程生成签名的秘钥,设置路径?
????????????微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->密钥设置
#????3、和微信支付交互方式
????????1、post方式提交
????????2、xml格式的协议
????????3、签名算法MD5
????????4、交互业务规则?先判断协议字段返回,再判断业务返回,最后判断交易状态
????????5、接**易单位为?分
????????6、交易类型:JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付
微信支付业务流程说明:
(1)商户后台系统根据用户选购的商品生成订单。
(2)用户确认支付后调用微信支付【统一下单API】生成预支付交易;
(3)微信支付系统收到请求后生成预支付交易单,并返回交易会话的二维码链接code_url。
(4)商户后台系统根据返回的code_url生成二维码。
(5)用户打开微信“扫一扫”扫描二维码,微信客户端将扫码内容发送到微信支付系统。
(6)微信支付系统收到客户端请求,验证链接有效性后发起用户支付,要求用户授权。
(7)用户在微信客户端输入密码,确认支付后,微信客户端提交授权。
(8)微信支付系统根据用户授权完成支付交易。
(9)微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。
(10)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。
(11)未收到支付通知的情况,商户后台系统调用【查询订单API】。
(12)商户确认订单已支付后给用户发货。