首页
友链
关于
留言
Search
1
MacOs Apple M1/M2 Arm64 Docker 安装宝塔面板
858 阅读
2
Golang实现端口转发,搭隧道
720 阅读
3
Golang发起Http请求,带Header,gzip压缩
706 阅读
4
在Golang中运行JavaScript(爬虫必备技术)
687 阅读
5
Golang爬取异步加载渲染的Html内容
678 阅读
生活小趣
大佬文章
菜鸟笔记
Golang
PHP
微服务
登录
Search
标签搜索
Golang
PHP
Go
RPC
Mysql
工作
Sqlite
微服务
ETCD
GRPC
MacOs
Mac
远航丫
累计撰写
39
篇文章
累计收到
6
条评论
首页
栏目
生活小趣
大佬文章
菜鸟笔记
Golang
PHP
微服务
页面
友链
关于
留言
搜索到
4
篇与
的结果
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日
169 阅读
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日
97 阅读
0 评论
1 点赞
2022-04-24
php反射获取类和方法中的注释
php反射获取类和方法中的注释
2022年04月24日
136 阅读
0 评论
1 点赞
2022-04-20
Golang交叉编译go-sqlite3
背景需要在mac机上编译出linux使用的应用,引用了go-sqlite3包,出现编译错误错误详情qiantao@qiant elfishfs-go % CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags "-linkmode external -extldflags -static" -o demo # github.com/mattn/go-sqlite3 sqlite3-binding.c:33886:42: error: use of undeclared identifier 'pread64' sqlite3-binding.c:33904:42: error: use of undeclared identifier 'pwrite64' sqlite3-binding.c:34037:22: error: invalid application of 'sizeof' to an incomplete type 'struct unix_syscall []' sqlite3-binding.c:34046:22: error: invalid application of 'sizeof' to an incomplete type 'struct unix_syscall []' sqlite3-binding.c:34073:20: error: invalid application of 'sizeof' to an incomplete type 'struct unix_syscall []' sqlite3-binding.c:34090:16: error: invalid application of 'sizeof' to an incomplete type 'struct unix_syscall []' sqlite3-binding.c:14567:38: note: expanded from macro 'ArraySize' sqlite3-binding.c:34094:14: error: invalid application of 'sizeof' to an incomplete type 'struct unix_syscall []' sqlite3-binding.c:14567:38: note: expanded from macro 'ArraySize' sqlite3-binding.c:36748:11: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] sqlite3-binding.c:33890:49: note: expanded from macro 'osPread64' sqlite3-binding.c:36860:17: warning: type specifier missing, defaults to 'int' [-Wimplicit-int] sqlite3-binding.c:33908:57: note: expanded from macro 'osPwrite64'问题需要交叉工具编译解决安装交叉编译工具brew install FiloSottile/musl-cross/musl-cross重新编译CC=x86_64-linux-musl-gcc CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags "-linkmode external -extldflags -static" -o demo作者:guhan121链接:https://www.jianshu.com/p/6ec6021c0e46来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2022年04月20日
481 阅读
0 评论
1 点赞
首页
复制
搜索
前进
后退
重载网页
和我当邻居
给我留言吧