2024 ,新年伊始。
hi 2023,go with me
2023年,学习和应用Go
学习 华为的设备设备知识和波分基础理论
学了Golang
- go study 基本概念和语法
- gin
- gorm
- excel with go
宝塔自编译nginx,隐藏nginx的名称
cd /www/server/panel/install/
echo “sed -i -e ’49s/nginx/yourwebserver/’ /www/server/nginx/src/src/http/ngx_http_header_filter_module.c” > /www/server/panel/install/nginx_prepare.sh
sh nginx.sh install 1.16
利用ssh隧道端口转发,方便调试内网服务器
目标把内网A主机(IP地址: a.a.a.a) 的80端口,通过外网主机(IP地址: b.b.b.b)端口 8080暴露到公网。
A,B都为CentOS Linux. 并且B不能ssh到A
下面从A测试 ssh -NTR 0.0.0.0:8080:0.0.0.0:80 root@b.b.b.b -p 22
(请先设置B可以让A 采用key方式免密登录。自行Google)
然后在B上面看 netstat -anlp | grep ssh | grep 8080 ,可以看到相应的
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1800/sshd: root
tcp6 0 0 :::8080 :::* LISTEN 1800/sshd: root
在B,需要改写 /etc/ssh/sshd_config 里面 GatewayPorts yes,然后B 重启ssh , systemctl restart sshd
测试端口是否已经转发 curl -v http://b.b.b.b:8080
关于让A可以自动在断线后连接B,可以做如下处理
A修改 /etc/ssh/ssh_config 增加
ServerAliveInterval 10
ServerAliveCountMax 3
B修改 /etc/ssh/sshd_config,增加
ClientAliveInterval 10
ClientAliveCountMax 3
同时A做一个service
vi /usr/lib/systemd/system/ssh-link.service
[Unit]
Description=ssh port forwarding service.
[Service]
Type=simple
ExecStart= /bin/sh -c 'ssh -NT -R 8080:0.0.0.0:80 root@b.b.b.b -p 22'
Restart=always
RestartSec=10
User=root
Group=root
[Install]
WantedBy=multi-user.target
启动
systemctl start ssh-link
加入自动启动
systemctl enable ssh-link
本文参考 :https://segmentfault.com/a/1190000038153088
备注,关于如果B不改写 GatewayPorts yes, 在B上面只能有 127.0.0.1:8080的绑定,不过可以通过nginx的proxy来实现对127.0.0.1:8080的代理,配置代码如下:
stream {
server {
listen 8081;
proxy_pass 127.0.0.1:8080;
}
}
wd blue ssd 西数固态盘 绿盘数据修复
下面是硬盘的 smartctl -i /dev/sdd 的信息,
Model Family: WD Blue and Green SSDs
Device Model: WDC WDS100T2G0A-00JH30
Serial Number: 19099D802020
LU WWN Device Id: 5 001b44 8b8446785
Firmware Version: UH510000
User Capacity: 1,000,207,286,272 bytes [1.00 TB]
Sector Size: 512 bytes logical/physical
Rotation Rate: Solid State Device
Form Factor: 2.5 inches
Device is: In smartctl database [for details use: -P show]
ATA Version is: ACS-2 T13/2015-D revision 3
SATA Version is: SATA 3.2, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is: Fri Feb 19 21:40:34 2021 CST
SMART support is: Available – device has SMART capability.
SMART support is: Enabled
这个固态盘的数据是用lvm管理的,数据格式是 xfs ,但是 在 mount的时候提示 bad superblock , 采用 xfs_repaire 无法直接在原硬盘修复。
用 dd if=/dev/volume-group/lvname of=/big_good_dir/lvname.img
然后 xfs_repair /big_good_dir/lvname.img 修复,或者
xfs_repair -L /big_good_dir/lvname.img
最后 mount -o loop -t xfs /big_good_dir/lvname.img /mnt 在 /mnt 里面查看文件。至此结束修复。
go 2021
2021继续努力
理解2进制用于检测错误收集
终于理解了 PHP错误E_ALL E_NOTICE 设计的理由。
例子:需要有8个检测点的程序,每个如果出错,标识为1,方式可以用
- array(8) 每个index来作为一个检测点标志位
- bit方式,假设在 第三bit位检测,($checkerbit >>2)&1 向左挪2,然后和1做与, 如果结果是0,那么第三bit位就是0,反之是1,代码如下
if (($checkerbit>>2)&1==0){//当未对此位置设置1的时候,
$checkerbit=$checkerbit^pow(2,3); //将第三监测点设置为1,当出错的时候
}
来自手机
手机woespress client
test 测试手机移动端手机的速度怎么样?
看起来如果说是用声音来更新的话,那么说效率还是非常高的。
你那个测试一下。
微信支付在微信内部出现time_expire时间过短,刷卡至少1分钟,其他5分钟
原因可能是服务器的时间错误!
下列命令同步linux系统时间
date -s “$(wget -qSO- –max-redirect=0 163.com 2>&1 | grep Date: | cut -d’ ‘ -f5-8)Z”
docker跑tinydns
docker pull jbanetwork/tinydns
假设在/etc/tinydnsdocker/目录下存在data文件是解析文件
docker run -it –rm -v /etc/tinydnsdocker:/opt/tinydns jbanetwork/tinydns:latest tinydns-data
docker stop tinydns
docker rm tinydns
docker run -d –read-only -p 53:53/udp –name tinydns –restart=always -v /etc/tinydnsdocker:/opt/tinydns jbanetwork/tinydns:latest
mysql用户创建,授权,取回,删除
1)create user ‘user1’@’%’ identified by ‘password’;
2) grant all privileges on dbname.* to ‘user1’@’%’;
查看 show grants for ‘user1’;
3) revoke all privileges on dbname.* from ‘user1’@’%’;
查看 show grants for ‘user1’;
4) drop user ‘user1’@’%’
简化的方式是:
1)grant all privileges on ssapi.* to zhangsan@’%’ identified by ‘zhangsanpassword’;
2) drop user ‘zhangsan’;
go ahead ,zjpro 2020
继续努力2020
mysql5.7的初始化的二三事
- mysql第一次启动 密码位置在 grep ‘temporary password’ /var/log/mysqld.log
- 如果修改密码出现密码规则的限制,可以
set global validate_password_policy=0; - /etc/my.cnf 里面 设置
validate_password_policy=0 - mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘root123’;
mysql的变量 @var
set @var = 0;
select @var:=@var+1 , id,other_cols from tb ;
mysql开启慢日志
log-slow-queries = /tmp/mysql-slow.log
long_query_time = 2
apache rewrite 转 iis web.config
apache rewrite 转 iis web.config
1) ^(.*)/ 替换为 ^ ,
2) $1/ 删除
3) . ? 去掉前面的 \
4) $N 更换为 $N-1 ,从大到小换!!!
例子
RewriteRule ^(.*)/read_([0-9]+)/([0-9]+).html$ $1/modules/article/reader.php\?aid=$2&cid=$3
需要改为
RewriteRule ^read_([0-9]+)/([0-9]+).html$ modules/article/reader.php?aid=$1&cid=$2
web.config 就可以是
借用工具
Cannot load M3U8: crossdomain access denied
有时候仅仅是因为你的m3u8源采用了https 并且 禁止了http的调用,那么只需要把自己配置好https即可,有关nginx的配置https,简单!
destoon的php5.4之后,title中文问题
destoon在php 5.4更高版本之后,会出现标题中文会自动为空的情况
解决方法是搜索,
function dhtmlspecialchars
修改这个函数为如下
参考地址 http://blog.sina.com.cn/s/blog_409bd3ad0102vgxl.html
function dhtmlspecialchars($string) { $encoding = 'utf-8'; if(DT_CHARSET=='gbk') { $encoding = 'gb2312'; } if(is_array($string)) { return array_map('dhtmlspecialchars', $string);
} else { if(defined('DT_ADMIN')) { return str_replace(array('&'), array('&'), htmlspecialchars($string, ENT_QUOTES,$encoding));
} else { return str_replace(array('&', '"', '"', '"'), array('&', '', '', ''), htmlspecialchars($string, ENT_QUOTES,$encoding)); } } }
pure-ftp 服务器发回了不可路由的地址,使用服务器地址代替
一些服务器供应商的服务器采用反向nat方式,只给服务器内网ip,外网ip是映射得到的,比如172.x.x.x 或者 192.168.x.x , pure-ftp会返回这些内部ip的地址,从而导致外部互联网用户不可能达到。
到阿里云或者别的什么云,把防火墙里面的 39000-40000端口放开
curl 测试https指定Host头
curl -v -k -I -H “Host:www.domain_name.com” https://ip:port/url
参数解释:
curl –help
-v: verbose 详细信息
-k: 不验证证书
-I:只显示头信息
-H:发送的Header
phpcmsphpsso在https情况下的改动(phpcms)
phpcms的phpsso,在https情况下,代码file_get_contents(“https://…….”);出现错误
file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed ,
在phpcms的phpsso_server/phpcms/modules/admin/applications.php 的check_status函数里面
需要修改为
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
if ($data = file_get_contents($url.'code='.urlencode($param),false,stream_context_create($arrContextOptions))) {
dedecms织梦的arclist标签的二次开发,增加参数
首先官网的开发文档
http://help.dedecms.com/manual/tagmanual/DedeTagmanual_Finnal/arclist.htm
我们增加 mydata参数
形式如下
{dede:arclist row=14 titlelen=32 mydata="params"}
修改文件 \include\taglib\arclist.lib.php
1)增加参数获取 在 function lib_arclist( &$ctag, &$refObj ) 函数里面
$mydata = $ctag->GetAtt(‘mydata’);
2)传递参数到 函数 lib_arclistDone
return lib_arclistDone ( $refObj, $ctag, $typeid, $ctag->GetAtt('row'), $ctag->GetAtt('col'), $titlelen, $infolen, $ctag->GetAtt('imgwidth'), $ctag->GetAtt('imgheight'), $listtype, $orderby, $ctag->GetAtt('keyword'), $innertext, $envs['aid'], $ctag->GetAtt('idlist'), $channelid, $ctag->GetAtt('limit'), $flag,$ctag->GetAtt('orderway'), $ctag->GetAtt('subday'), $ctag->GetAtt('noflag'), $tagid,$pagesize,$isweight,$mydata ); }
3) 函数 lib_arclistDone定义处增加 mydata
function lib_arclistDone(&$refObj, &$ctag, $typeid=0, $row=10, $col=1, $titlelen=30, $infolen=160, $imgwidth=120, $imgheight=90, $listtype='all', $orderby='default', $keyword='', $innertext='', $arcid=0, $idlist='', $channelid=0, $limit='', $att='', $order='desc', $subday=0, $noflag='',$tagid='', $pagesize=0, $isweight='N',$mydata='')
4) 在 函数 lib_arclistDone 里面为所欲为吧
$mydata = AttDef($mydata,'默认参数'); if($mydata == '默认参数') { //您的需求实现代码 }
apache 的代理 proxypass 正则匹配
ProxyPass /la http://后端地址
ProxyPassMatch ^/la.* http://后端地址
ProxyPassReverse /la http://后端地址
匹配地址
nginx配置文件的编码问题
nginx的配置文件居然可以用多种编码,比如utf8和gbk两种,
需要你把utf8和gbk分别写入两个文件比如 vhost1.conf vhost2.conf
然后在 nginx.conf 里面 include vhost1.conf; include vhost2.conf; 即可
这类应用一般是你在需要些配置文件时候用到中文的时候。
比如 :
subs_filter ‘nihao’ ‘你好’;
有关,nginx的 subs_filter 是定制模块 地址在 https://github.com/yaoweibin/ngx_http_substitutions_filter_module
curl 设置指定hostname来访问某个ip
curl_setopt($ch, CURLOPT_URL,”http://IP/……..”);
curl_setopt($ch,CURLOPT_HTTPHEADER,array(‘Host: 域名’));
lftp 设置主被动模式
set ftp:passive-mode on
iptables 根据ip设置开放某些ip的访问,ip地址段 a-b 的方式
IPB=/sbin/iptables $IPB -F INPUT for kk in ` cat ip.txt | awk '{printf ("%s_%s\n",$1,$2)}'` do #echo $kk startip=`echo $kk | awk -F "_" '{print $1}'` endip=`echo $kk | awk -F "_" '{print $2}'` $IPB -A INPUT -p tcp --dport 80 -m iprange --src-range $startip-$endip -j ACCEPT done ### deny all $IPB -A INPUT -p tcp --dport 80 -j DROP
ip.txt内容是
1.0.1.0 1.0.3.255 768
1.0.8.0 1.0.15.255 2,048
1.0.32.0 1.0.63.255 8,192
十句话
帝国cms 更新缓慢的处理方法
e/data/tmp 目录下的 3个文件可以考虑删除,就会再次生成缓存,从而快速更新首页,列表页,内容页。
dt_tempindexpage.php
dt_templist9.php
dt_temptext1.php