首页
友链
关于
留言
Search
1
MacOs Apple M1/M2 Arm64 Docker 安装宝塔面板
948 阅读
2
Golang爬取异步加载渲染的Html内容
841 阅读
3
Golang实现端口转发,搭隧道
838 阅读
4
Golang发起Http请求,带Header,gzip压缩
834 阅读
5
Go GUI golang基于go-astilectron打包Win,MacOs,Linux 可执行程序
809 阅读
生活小趣
大佬文章
菜鸟笔记
Golang
PHP
微服务
登录
Search
标签搜索
Golang
PHP
Go
RPC
Mysql
工作
Sqlite
微服务
ETCD
GRPC
MacOs
Mac
远航丫
累计撰写
39
篇文章
累计收到
2
条评论
首页
栏目
生活小趣
大佬文章
菜鸟笔记
Golang
PHP
微服务
页面
友链
关于
留言
搜索到
39
篇与
的结果
2022-04-24
菜鸟的Docker笔记
镜像加速地址http://hub-mirror.c.163.com https://registry.docker-cn.com http://f1361db2.m.daocloud.io https://mirror.ccs.tencentyun.com https://3laho3y3.mirror.aliyuncs.com宿主机地址host.docker.internal Redis 需要在配置文件加上docker给容器分配的ip:假如是172.17.0.3 // vi /www/server/redis/redis.conf bind 127.0.0.1 172.17.0.3配置{ "registry-mirrors": [ "http://hub-mirror.c.163.com", "https://registry.docker-cn.com", "http://f1361db2.m.daocloud.io", "https://mirror.ccs.tencentyun.com", "https://3laho3y3.mirror.aliyuncs.com", "https://registry.docker-cn.com", ], "builder": { "gc": { "enabled": true, "defaultKeepStorage": "20GB" } }, "experimental": false, "features": { "buildkit": true } }基本命令docker run 名称:标签 # 拉取并运行镜像 可以不加标签默认:latest docker pull 名称:标签 # 拉取镜像 docker images #查看镜像 docker search 名称 # 搜索镜像 docker rmi 名称:标签|ID # 删除镜像 docker ps # 查看正在运行的容器 docker ps -a # 查看全部容器 # 创建容器 docker run --name 容器名字(可选) 镜像名称 # -p 主机端口:容器端口(-P 随机) -it(进入容器前端运行) -di(守护进程后台运行) docker run -it --name mycentos -p 80:80 centos docker rm 名称:标签|ID # 删除容器 docker exec -it 容器名称|ID /bin/bash # 进入容器 docker stop 名称|ID # 停止容器 docker start 名称|ID # 运行容器 docker cp 文件或目录 容器名称:目录 # 拷贝文件到容器 docker cp 容器名称:目录 文件或目录 # 拷贝容器文件到主机 # 目录挂载 -v挂载 :ro 只读 :rw读写 例子:-v /a/:/aa:ro # 新容器继承其他容器的挂载 --volumes-from 容器名字 支持:ro :rw docker run -di -v 主机目录:容器目录 --name 容器名称 镜像:标签 # 目录挂载 多个 -v 挂载多个 docker run -di -v 容器目录 --name 容器名称 镜像:标签 # 匿名挂载 文件在/var/lib/docker/volumes/ docker run -di -v 名称:容器目录 --name 容器名称 镜像:标签 # 具名挂载 docker run --net=bridge #指定网络 docker inspect 名称 # 查看容器信息 docker volumes inspect 目录名称 # 查看这个目录是和谁挂载的 docker inspect --format'{{ .NetworkSettings.IPAddress }}' 容器名称|ID # 查看容器IP docker commit -a="作者" -m="描述" 容器名字 镜像名字:标签 # 创建镜像 docker save -o 目录/文件名.tar 镜像名称:标签 # 镜像备份 docker load -i 目录/文件名.tar # 加载镜像 # 网络 docker network ls #查看网络 docker network create -d bridge 网络名称 #-d 指定模式(默认桥接)bridge、host、none docker network rm 网络名称 #删除网络DockerfileFROM <image>:<tag> #根据那个镜像构建 LABLE <key>=<value> <key>=<value> #设置标签 RUN <command> #构建镜像时的命令 ADD <file> <dir> #拷贝文件到容器,可以是地址,并解压 COPY <file> <dir> #拷贝文件到容器 EXPOSE <port> #暴露容器端口,可以指定TCP/UDP 例:80 443 8080/tcp ENV <key> <value> ... #设置环境变量 CMD <command> <param1> ... #容器启动后执行的命令 只能单条,会被创建容器时指定的命令覆盖 ENTRYPOINT <command> <param1> ... #容器启动后执行的命令 只能单条,不会被创建容器时指定的命令覆盖 WORKDIR <path> # 设置工作目录 VOLUME # 挂载数据卷docker build -f Dockerfile -t 镜像名字:标签 拷贝文件的文件夹 #根据文件创建镜像DemoFROM golang:1.15-alpine LABEL maintainer="yuanhang" WORKDIR /root RUN mkdir -p /root/new_dir/test && mkdir -p /root/new_dir/test2 ADD https://studygolang.com/dl/golang/go1.16.3.src.tar.gz /root/new_dir/test ADD ./下载抖音无水印视频 /root/new_dir/test2 ADD ./main.go /root/new_dir EXPOSE 8080 ENV GOPROXY https://goproxy.io # 必须有任务在前台挂着 CMD go run /root/new_dir/main.go
2022年04月24日
196 阅读
0 评论
1 点赞
2022-04-24
Supervisor使用详解
来源: Supervisor使用详解supervisor安装配置好yum源后,可以直接安装yum install supervisorDebian/Ubuntu可通过apt安装apt-get install supervisorpip安装pip install supervisoreasy_install安装easy_install supervisorsupervisor使用supervisor配置文件:/etc/supervisord.conf注:supervisor的配置文件默认是不全的,不过在大部分默认的情况下,上面说的基本功能已经满足。子进程配置文件路径:/etc/supervisord.d/注:默认子进程配置文件为ini格式,可在supervisor主配置文件中修改。配置文件说明supervisor.conf配置文件说明:[unix_http_server] file=/tmp/supervisor.sock ;UNIX socket 文件,supervisorctl 会使用 ;chmod=0700 ;socket文件的mode,默认是0700 ;chown=nobody:nogroup ;socket文件的owner,格式:uid:gid # ;[inet_http_server] ;HTTP服务器,提供web管理界面 ;port=127.0.0.1:9001 ;Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性 ;username=user ;登录管理后台的用户名 ;password=123 ;登录管理后台的密码 # [supervisord] logfile=/tmp/supervisord.log ;日志文件,默认是 $CWD/supervisord.log logfile_maxbytes=50MB ;日志文件大小,超出会rotate,默认 50MB,如果设成0,表示不限制大小 logfile_backups=10 ;日志文件保留备份数量默认10,设为0表示不备份 loglevel=info ;日志级别,默认info,其它: debug,warn,trace pidfile=/tmp/supervisord.pid ;pid 文件 nodaemon=false ;是否在前台启动,默认是false,即以 daemon 的方式启动 minfds=1024 ;可以打开的文件描述符的最小值,默认 1024 minprocs=200 ;可以打开的进程数的最小值,默认 200 # [supervisorctl] serverurl=unix:///tmp/supervisor.sock ;通过UNIX socket连接supervisord,路径与unix_http_server部分的file一致 ;serverurl=http://127.0.0.1:9001 ; 通过HTTP的方式连接supervisord # ; [program:xx]是被管理的进程配置参数,xx是进程的名称 [program:xx] command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; 程序启动命令 autostart=true ; 在supervisord启动的时候也自动启动 startsecs=10 ; 启动10秒后没有异常退出,就表示进程正常启动了,默认为1秒 autorestart=true ; 程序退出后自动重启,可选值:[unexpected,true,false],默认为unexpected,表示进程意外杀死后才重启 startretries=3 ; 启动失败自动重试次数,默认是3 user=tomcat ; 用哪个用户启动进程,默认是root priority=999 ; 进程启动优先级,默认999,值小的优先启动 redirect_stderr=true ; 把stderr重定向到stdout,默认false stdout_logfile_maxbytes=20MB ; stdout 日志文件大小,默认50MB stdout_logfile_backups = 20 ; stdout 日志文件备份数,默认是10 ; stdout 日志文件,需要注意当指定目录不存在时无法正常启动,所以需要手动创建目录(supervisord 会自动创建日志文件) stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out stopasgroup=false ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程 killasgroup=false ;默认为false,向进程组发送kill信号,包括子进程 # ;包含其它配置文件 [include] files = relative/directory/*.ini ;可以指定一个或多个以.ini结束的配置文件子进程配置文件说明:给需要管理的子进程(程序)编写一个配置文件,放在/etc/supervisor.d/目录下,以.ini作为扩展名(每个进程的配置文件都可以单独分拆也可以把相关的脚本放一起)。如任意定义一个和脚本相关的项目名称的选项组(/etc/supervisord.d/test.conf):#项目名 [program:blog] #脚本目录 directory=/opt/bin #脚本执行命令 command=/usr/bin/python /opt/bin/test.py # #supervisor启动的时候是否随着同时启动,默认True autostart=true #当程序exit的时候,这个program不会自动重启,默认unexpected,设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的 autorestart=false #这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了。默认值为1 startsecs=1 # #脚本运行的用户身份 user = test # #日志输出 stderr_logfile=/tmp/blog_stderr.log stdout_logfile=/tmp/blog_stdout.log #把stderr重定向到stdout,默认 false redirect_stderr = true #stdout日志文件大小,默认 50MB stdout_logfile_maxbytes = 20MB #stdout日志文件备份数 stdout_logfile_backups = 20子进程配置示例:#说明同上 [program:test] directory=/opt/bin command=/opt/bin/test autostart=true autorestart=false stderr_logfile=/tmp/test_stderr.log stdout_logfile=/tmp/test_stdout.log #user = test supervisor命令说明常用命令supervisorctl status //查看所有进程的状态 supervisorctl stop es //停止es supervisorctl start es //启动es supervisorctl restart //重启es supervisorctl update //配置文件修改后使用该命令加载新的配置 supervisorctl reload //重新启动配置中的所有程序注:把es换成all可以管理配置中的所有进程。直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。常见问题unix:///var/run/supervisor.sock no such file问题描述:安装好supervisor没有开启服务直接使用supervisorctl报的错解决办法:supervisord -c /etc/supervisord.confcommand中指定的进程已经起来,但supervisor还不断重启问题描述:command中启动方式为后台启动,导致识别不到pid,然后不断重启,这里使用的是elasticsearch,command指定的是$path/bin/elasticsearch -d解决办法:supervisor无法检测后台启动进程的pid,而supervisor本身就是后台启动守护进程,因此不用担心这个启动了多个supervisord服务,导致无法正常关闭服务问题描述:在运行supervisord -c /etc/supervisord.conf之前,直接运行过supervisord -c /etc/supervisord.d/xx.conf导致有些进程被多个superviord管理,无法正常关闭进程。解决办法:使用ps -fe | grep supervisord查看所有启动过的supervisord服务,kill相关的进程。注意事项使用supervisor进程管理命令之前先启动supervisord,否则程序报错。使用命令supervisord -c /etc/supervisord.conf启动。若是centos7:systemctl start supervisord.service //启动supervisor并加载默认配置文件
2022年04月24日
226 阅读
0 评论
2 点赞
2022-04-24
云服务器数据盘分区及挂载到指定目录
来源: 云服务器数据盘分区及挂载到指定目录阿里云服务器的硬盘是分两块,一个系统盘,一个数据盘,默认数据盘没有被挂载。一、新增挂载1、检查云服务器的硬盘情况df -h fdisk -l 2、对数据盘进行分区操作# 数据盘名称不一定是 /dev/xvdb # fdisk -l 查看名称 fdisk /dev/xvdb # 根据提示依次输入“n”,“p”,“1”,两次回车,“wq”,视数据盘大小而完成时间不同。 # P.S 输入1则建立xvdb1分区,如已存在该分区,则可以输入2建立xvdb2分区。3、格式化新分区# /dev/xvdb1 是新分区的名称 # fdisk -l 查看名称 mkfs.ext3 /dev/xvdb1 # P.S 如需使用ext4格式,将命令中的ext3替换为ext4即可。4、添加分区信息echo "/dev/xvdb1 /home ext3 defaults 0 0" >> /etc/fstab5、挂载数据盘# /dev/xvdb1 新分区的名称 # /home 挂载到系统盘的/home目录 mount /dev/xvdb1 /home # 或者使用 mount -a。需要配置《4、添加分区信息》二、修改硬盘挂载目录# 1、查看分区情况及数据盘名称 df -h # 2、如果没有data目录就创建,否则此步跳过 mkdir /data # 3、卸载硬盘已挂载的mnt目录 umount /mnt # 如需更改硬盘盘格式使用命令 mkfs.ext4 /dev/xvdb1 #(ext4:更改的数据盘格式,需先将硬盘卸载才能更改格式) # 4、编辑fstab文件修改或添加,使重启后可以自动挂载 vim /etc/fstab # 找到 /dev/xvdb1 /mnt ext4 auto 0 0 将 mnt 改为 data # 5、挂载到data目录 mount /dev/xvdb1 /data
2022年04月24日
159 阅读
0 评论
1 点赞
2022-04-24
php反射获取类和方法中的注释
php反射获取类和方法中的注释
2022年04月24日
194 阅读
0 评论
1 点赞
2022-04-22
整合阿里云Oss,七牛云上传,兼容Thinkphp
GitHub:整合阿里云Oss,七牛云上传,兼容Thinkphp5.1文件大小验证文件Mime类型验证文件后缀名验证批量删除批量上传临时目录临时目录替换获取可访问地址V1..版本 运行环境要求PHP5.6+,七牛sdk7.3+,ossSdk2.3+。V2+版本 运行环境要求PHP7.4+,七牛sdk7.3+,ossSdk2.3+。安装使用composer安装composer require yuanhang/easy-upload使用设置配置\EasyUpload\EasyUpload::setConfig(array $config); \EasyUpload\EasyUpload::Instance(); Thinkphp5.1可在配置目录建EasyUpload.php 其他框架也可以自定义配置文件 使用 :\EasyUpload\EasyUpload::getConfigPath(); 获取配置文件位置 然后根据位置新建文件即可 示例文件:/src/example/Config.php获取实例$upload = \EasyUpload\EasyUpload::Instance();上传图片$res = $upload->imgUpload('form_name');上传文件$res = $upload->fileUpload('form_name');获取可访问地址$upload->httpPath('/uploads/images/a.png'); $upload->httpPath('http://www.a.com/uploads/a.png');把文件从临时目录移动到正式目录 (文件地址,是否图片,是否绝对路径)$upload->moveTmpToPath('http://www.d.com/temp/a.png', true, false); $upload->httpPath('/temp/a.png',true,true);删除文件$upload->del('http://www.d.com/temp/a.png'); $upload->del('/temp/a.png'); $upload->del(['/temp/a.png','http://www.d.com/temp/a.png']);返回值单文件上传成功 { "status": true, "success": "/temp/20210622/a.gif", "error": "" }单文件上传失败 { "status": false, "success": "", "error": "上传文件超过允许的最大值!" }多文件上传成功 { "status": true, "success": ["/temp/20210622/a.gif", "/temp/20210622/b.png"], "error": [] }多文件上传失败 { "status": false, "success": [], "error": ["上传文件超过允许的最大值!", "上传文件超过允许的最大值!"] }其他方法均以抛出异常方式返回目录结构src 项目根目录 ├─config 默认配置目录 │ ├─Config.php 默认配置文件 │ ├─example 示例目录 │ ├─Config.php 配置示例文件 │ ├─Upload.php 使用示例文件 │ ├─file 文件对象目录 │ ├─File.php 文件类 │ ├─interfaces 接口目录 │ ├─Upload.php 上传接口 │ ├─library 上传类目录 │ ├─BaseUpload.php 上传基类 │ ├─OssUpload.php 阿里云oss上传类 │ ├─QiNiuUpload.php 七牛云上传类 │ ├─SysUpload.php 系统上传类 │ ├─service 第三方服务整合类 │ ├─AliOssService.php 阿里云Oss上传封装 │ ├─QnService.php 七牛云上传封装 │ ├─tool 工具类目录 │ ├─Util.php 基础工具类 │ ├─EasyUpload.php 项目入口工厂类 工厂模式获取实例 │配置文件示例<?php return [ //Mimes验证 'mimes' => false, //上传oss(阿里云oss),server(服务器 默认),qn(七牛) 'upload_server' => 'server', //命名方式 md5(md5), dateMd5(日期md5 默认) , original(原名) , dateOriginal(日期原名) 'give_name' => 'dateMd5', //临时目录 false 关闭 'temp_dir' => 'temp', //图片文件上传目录 'img_path' => 'uploads' . DIRECTORY_SEPARATOR . 'images', //允许的图片文件MIME类型 空允许全部 'img_mimes' => [ 'image/jpeg', 'image/png', 'image/gif' ], //允许的图片文件后缀名 空允许全部 'img_ext' => ['jpg', 'jpeg', 'png', 'gif'], //允许的图片文件大小 kb 'img_size' => 2048, //文件上传目录 'file_path' => 'uploads' . DIRECTORY_SEPARATOR . 'file', //允许的其他文件MIME类型 'file_mimes' => [ 'application/msword', 'pplication/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ], //允许的其他文件后缀名 'file_ext' => ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx'], //允许的其他文件大小 'file_size' => 2048, //过滤路径中的字符串 ['\'=>'/'] 把路径中的\替换为/ 'filter' => [ '\\' => '/', ], // 自定义域名 'http_host' => '', // oss 配置 'oss_config' => [ 'key_id' => '', // 您的Access Key ID 'key_secret' => '', // 您的Access Key Secret 'network_protocol' => 'http', // 阿里云oss 外网协议 默认http 'endpoint' => 'oss-cn-shenzhen.aliyuncs.com', // 阿里云oss 外网地址endpoint 不带Bucket名称 'bucket' => '', // Bucket名称 'http_host' => '', // 自定义域名 ], // 七牛 配置 'qi_niu_config' => [ 'access_key' => '',// 您的Access Key 'secret_key' => '',// 您的Secret Key 'bucket' => '',// Bucket名称 'http_host' => '',// 外链域名 'expires' => 3600 // 上传超时 ], // 错误提示信息,使用配置方便制作多语言 'tips_message' => [ 'empty_images' => '没有图片被上传!', 'empty_file' => '没有文件被上传!', 'mime_error' => 'Mime配置错误!', 'ext_error' => '后缀名配置类型错误!', 'oversize_size' => '上传文件超过允许的最大值!', 'mime_not' => '上传文件Mime不允许!', 'ext_not' => '上传文件后缀名不允许!', 'upload_write_error' => '移动文件失败', 'move_empty_file' => '未找到源文件', 'del_file_max_num' => '每次最多不能超过1000个', ] ];
2022年04月22日
286 阅读
0 评论
1 点赞
1
...
6
7
8
首页
复制
搜索
前进
后退
重载网页
和我当邻居
给我留言吧