frp教程

frp教程 frp是什么? frp 是内网穿透的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务暴露到公网。 安装目录/root/frp server配置 vim /root/frp/frps.ini [common] bind_port = 19000 # 端口白名单 allow_ports = 19001-19999 # 认证 authentication_method = token token = XXXXXXXXXXXXXXXXXX log_file = /var/log/frp/frps.log log_max_days = 30 开机自启 vim /etc/systemd/system/frps.service [Unit] # 服务名称,可自定义 Description = frp server After = network.target syslog.target Wants = network.target [Service] Type = simple # 启动frps的命令,需修改为您的frps的安装路径 ExecStart = /root/frp/frps -c /root/frp/frps.ini [Install] WantedBy = multi-user.target systemctl status frps start restart stop enable client配置 vim /root/frp/frpc.ini ...

2018-04-16 · 1 分钟 · 209 字 · 王站站

minikube操作教程

minikube操作教程 安装 官方文档 amd64 curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube arm64 curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64 sudo install minikube-linux-arm64 /usr/local/bin/minikube 没安装 kubectl 可以使用 minikube kubectl -- 代替 启动你的集群 开始 minikube start --force kubectl get po -A minikube version web界面 minikube dashboard --port=19888 # eg: http://127.0.0.1:19888/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ kubectl安装 官方文档 x86_64 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" arm64 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl" sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl kubectl version kubectl cluster-info kubectl get nodes helloworld kubectl run hello-world -ti --rm --image=hello-world:latest --restart=Never -- 部署应用程序 services kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0 kubectl expose deployment hello-minikube --type=NodePort --port=8080 kubectl get services hello-minikube minikube service hello-minikube or kubectl port-forward service/hello-minikube 7080:8080 loadBalancer kubectl create deployment balanced --image=kicbase/echo-server:1.0 kubectl expose deployment balanced --type=LoadBalancer --port=8080 minikube tunnel kubectl get services balanced Ingress minikube addons enable ingress … ...

2018-04-09 · 3 分钟 · 522 字 · 王站站

ubuntu20.04系统dd成debian11并安装xray

ubuntu20.04系统dd成debian11并安装xray 概述 甲骨文的ubuntu20.04升级成debian11 ubuntu20.04 1.4G 大 debian11 400MB 小 #更新apt源 apt-get update #安装需要的工具包 apt-get install -y xz-utils openssl gawk file bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -d 11 -v 64 -a -firmware -p "root密码" apt-get install -y nginx curl tar net-tools iftop 大约等20多分钟, 如果失败, 请删除重开(?) timedatectl set-timezone Asia/Shanghai # 设置hostname #hostnamectl set-hostname aaa # 配置authorized_keys ssh-keygen # 安装工具 apt-get install -y nginx curl tar net-tools iftop # ./tcp.sh # ./superbench.sh ## 安装xray bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install -u root --version 1.5.3 # 删除xray # bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ remove cp config.json /usr/local/etc/xray/config.json #创建你的网站目录 mkdir /home/www/{你的域名} vim /etc/nginx/site-enable/default root /home/www/{你的域名} systemctl restart nginx #防火墙, debian可忽略 #iptables -L #sudo iptables -F 安装证书 curl https://get.acme.sh | sh ~/.acme.sh/acme.sh --register-account -m email@gmail.com ~/.acme.sh/acme.sh --issue -d {你的域名} --webroot /home/www/{你的域名}/ mkdir /usr/local/etc/xray/cert ~/.acme.sh/acme.sh --installcert -d {你的域名} --key-file /usr/local/etc/xray/cert/private.key --fullchain-file /usr/local/etc/xray/cert/cert.crt ~/.acme.sh/acme.sh --upgrade --auto-upgrade chmod -R 755 /usr/local/etc/xray/cert systemctl restart xray systemctl restart nginx # 查看日志 journalctl -u xray --output cat -f #配置cfw

2018-04-02 · 1 分钟 · 159 字 · 王站站

gorm中文文档

gorm中文文档 入门指南 概述 全功能 ORM 关联 (Has One、Has Many、Belongs To、Many To Many、多态、单表继承) Create、Save、Update、Delete、Find 前/后的勾子 基于Preload、Joins的预加载 事务、嵌套事务、保存点、回滚至保存点 Context、Prepared Statment 模式、DryRun 模式 批量插入、FindInBatches、查询至 Map SQL Builder, Upsert, Locking, Optimizer/Index/Comment Hints 复合主键 自动迁移 自定义 Logger 灵活的可扩展插件 API:Database Resolver(读写分离)、Prometheus… 所有特性都通过了测试 开发者友好 快速入门 package main import ( "gorm.io/gorm" "gorm.io/driver/sqlite" ) type Product struct { gorm.Model Code string Price uint } func main() { db, err := gorm.Open(sqlite.Open("test.db"), &amp;gorm.Config{}) if err != nil { panic("failed to connect database") } // 迁移 schema db.AutoMigrate(&amp;Product{}) // Create db.Create(&amp;Product{Code: "D42", Price: 100}) // Read var product Product db.First(&amp;product, 1) // 根据整形主键查找 db.First(&amp;product, "code = ?", "D42") // 查找 code 字段值为 D42 的记录 // Update - 将 product 的 price 更新为 200 db.Model(&amp;product).Update("Price", 200) // Update - 更新多个字段 db.Model(&amp;product).Updates(Product{Price: 200, Code: "F42"}) // 仅更新非零值字段 db.Model(&amp;product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"}) // Delete - 删除 product db.Delete(&amp;product, 1) } 声明模型 type User struct { ID uint Name string Email *string Age uint8 Birthday *time.Time MemberNumber sql.NullString ActivedAt sql.NullTime CreatedAt time.Time UpdatedAt time.Time } gorm.Model ...

2018-03-26 · 10 分钟 · 2020 字 · 王站站

gin中文文档

gin中文文档 简介 Gin 是一个 go 写的 web 框架,具有高性能的优点。官方地址:https://github.com/gin-gonic/gin 安装 要安装Gin包,首先需要安装Go并设置Go工作区 go get -u github.com/gin-gonic/gin import "github.com/gin-gonic/gin" go mod init package main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.GET("/ping", func(c *gin.Context) { c.JSON(http.StatusOK, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080") } go run main.go 代码示例 使用 GET, POST, PUT, PATCH, DELETE, OPTIONS func main() { // Disable Console Color // gin.DisableConsoleColor() // 使用默认中间件创建一个gin路由器 // logger and recovery (crash-free) 中间件 router := gin.Default() router.GET("/someGet", getting) router.POST("/somePost", posting) router.PUT("/somePut", putting) router.DELETE("/someDelete", deleting) router.PATCH("/somePatch", patching) router.HEAD("/someHead", head) router.OPTIONS("/someOptions", options) // 默认启动的是 8080端口,也可以自己定义启动端口 router.Run() // router.Run(":3000") for a hard coded port } 获取路径中的参数 func main() { router := gin.Default() // 此规则能够匹配/user/john这种格式,但不能匹配/user/ 或 /user这种格式 router.GET("/user/:name", func(c *gin.Context) { name := c.Param("name") c.String(http.StatusOK, "Hello %s", name) }) // 但是,这个规则既能匹配/user/john/格式也能匹配/user/john/send这种格式 // 如果没有其他路由器匹配/user/john,它将重定向到/user/john/ router.GET("/user/:name/*action", func(c *gin.Context) { name := c.Param("name") action := c.Param("action") message := name + " is " + action c.String(http.StatusOK, message) }) router.Run(":8080") } 获取Get参数 func main() { router := gin.Default() // 匹配的url格式: /welcome?firstname=Jane&lastname=Doe router.GET("/welcome", func(c *gin.Context) { firstname := c.DefaultQuery("firstname", "Guest") lastname := c.Query("lastname") // 是 c.Request.URL.Query().Get("lastname") 的简写 c.String(http.StatusOK, "Hello %s %s", firstname, lastname) }) router.Run(":8080") } 获取Post参数 func main() { router := gin.Default() router.POST("/form_post", func(c *gin.Context) { message := c.PostForm("message") nick := c.DefaultPostForm("nick", "anonymous") // 此方法可以设置默认值 c.JSON(200, gin.H{ "status": "posted", "message": message, "nick": nick, }) }) router.Run(":8080") } Get + Post 混合 func main() { router := gin.Default() router.POST("/post", func(c *gin.Context) { id := c.Query("id") page := c.DefaultQuery("page", "0") name := c.PostForm("name") message := c.PostForm("message") fmt.Printf("id: %s; page: %s; name: %s; message: %s", id, page, name, message) }) router.Run(":8080") } 上传文件 单文件上传 上传文件的文件名可以由用户自定义,所以可能包含非法字符串,为了安全起见,应该由服务端统一文件名规则 ...

2018-03-19 · 6 分钟 · 1210 字 · 王站站