macbook pro的无线大坑

这周一直在给macbook pro 重装系统,可恶的天朝网络,时断时续,经常从十几MB的下载速度掉到几十KB, 还有动不动can’t download items..

今天无意间在抽屉里发现当初买macbook时赠送的thunderbolt2转网线的接口,就无意识的插上网线一试发现reload system时,速度竟然能够一直保持在几十MB每秒, 6.05GB的macos Mojave,只需要5分钟就可以下载完毕..

看来再好的无线wifi硬件,在稳定性上还是不如ethernet

Macbook通过恢复功能重新安装macOS

大家都知道在开机的时候,按住Command+R可以重装系统,但是其实这里还有另外两个选项:

Option + Command + R, 也可以通过internet自动重装系统,但是是自动安装最新版本的macOS

Shift + Option +Command + R, 通过internet自动重装买这台macbook时安装的系统,如果这个系统太老并且不再被苹果所支持了,那么会通过internet安装正在支持的最为接近这个旧系统的macOS

防止阿里云备案被撤销

鉴于国内BT的备案的制度,阿里云更为甚之。。。

在阿里云备案的域名,如果没有把IP指向阿里云,也被会阿里云警告

因此最好的办法就是把IP只想阿里云并且模拟一些流量

打开centos 的crontab,可以设置如下crojob,来模拟真实的流量:

0 2 * * * curl -s www.domain1.com > /dev/null 2>&1 >/dev/null 2>&1
0 3 * * * curl -s www.domain2.com > /dev/null 2>&1 >/dev/null 2>&1
0 4 * * * curl -s www.domain3.cn > /dev/null 2>&1 >/dev/null 2>&1
0 5 * * * curl -s www.domain4.cn > /dev/null 2>&1 >/dev/null 2>&1

国内cloud安装军哥LNMP1.6

02-18-2019 Updated: 军哥已经修复了这个问题. 

 

军哥的LNMP准时在1月1号更新了,之前一直在国外的cloud上安装,所以没有遇到任何问题

但是今天在阿里云的深圳机房上安装,确发现了一个小的问题

具体说来就是在LNMP1.6上安装boost的时候,boost 的安装被写入了mysql 的config,mysql 会自动从internet上下boost并且安装配置boost.

问题就出现这里,mysql下载boost,是从sourceforge上下载boost

下载地址:

http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

阿里云连sourceforge速度超慢,时间一长就会被程序自动timeout了, 不得不说这是国内的悲哀。。。

解决这个办法还是比较简单的,就是提前下载号boost1.59到/root/lnmp1.6/src下面,也就是你的lnmp文件夹下面的src里面就可以了

下载地址:

http://soft.vpser.net/lib/boost/

需要注意的是,lnmp1.6需要是tar.bz2的boost

删除阿里云自带的云盾,监控服务等等

其他的系统我不太清楚,但是aliyun的centos模板自带许多阿里云的服务,比如说云盾,cloudwatch等等,而这些往往是我们不愿意透露出去的,因此需要一上来就删掉这些服务,而这些服务往往还像牛皮癣,很难删的完完整整

下面的操作都是在aliyun 深圳机房的一台安装了centos 7的轻量云上操作的

卸载阿里云监控

wget http://update.aegis.aliyun.com/download/uninstall.sh
chmod +x uninstall.sh
sudo ./uninstall.sh
wget http://update.aegis.aliyun.com/download/quartz_uninstall.sh
chmod +x quartz_uninstall.sh
sudo ./quartz_uninstall.sh

其实quartz的uninstall中已经包含了aegis的卸载命令

删除残留

sudo pkill aliyun-service
sudo rm -rf /etc/init.d/agentwatch /usr/sbin/aliyun-service
sudo rm -rf /usr/sbin/aliyun*
sudo rm -rf /etc/systemd/system/aliyun.service
sudo rm -rf /usr/local/aegis*

 

屏蔽云盾IP

如果用iptables,可用如下命令

iptables -I INPUT -s 140.205.201.0/28 -j DROP
iptables -I INPUT -s 140.205.201.16/29 -j DROP
iptables -I INPUT -s 140.205.201.32/28 -j DROP
iptables -I INPUT -s 140.205.225.192/29 -j DROP
iptables -I INPUT -s 140.205.225.200/30 -j DROP
iptables -I INPUT -s 140.205.225.184/29 -j DROP
iptables -I INPUT -s 140.205.225.183/32 -j DROP
iptables -I INPUT -s 140.205.225.206/32 -j DROP
iptables -I INPUT -s 140.205.225.205/32 -j DROP

如果用防火墙,可以直接屏蔽下面的IP

140.205.201.0/28
140.205.201.16/29
140.205.201.32/28
140.205.225.192/29
140.205.225.200/30
140.205.225.184/29
140.205.225.183/32
140.205.225.206/32
140.205.225.205/32

最后删除云监控cloudwatch 需要注意的是,centos安装的是go版本的云监控

可以参考这个官方页面

http://help.aliyun.com/document_detail/97929.html

也可以直接使用下面的命令:

/usr/local/cloudmonitor/CmsGoAgent.linux-amd64 stop && \
/usr/local/cloudmonitor/CmsGoAgent.linux-amd64 uninstall && \
rm -rf /usr/local/cloudmonitor

如果你的centos安装的是java版本的话,可以使用

/usr/local/cloudmonitor/wrapper/bin/cloudmonitor.sh stop
/usr/local/cloudmonitor/wrapper/bin/cloudmonitor.sh remove && \
rm -rf /usr/local/cloudmonitor

Nginx安装Sectigo 的essential SSL

以前一直使用的是rapid SSL,但是rapid SSL 最近爆出了一些问题,因此开始转向我以前不是很喜欢的comodo,也就是现在的sectigo.

安装过程和rapid ssl 大同小异,有些不同的地方在rapid ssl 的intermediate certificate 只有一个文件,而comodo sectigo essential 的 chain files 确有三个, 需要注意的是chain files 根据时间的流逝,可能会有新的chain files产生, 而sectigo 的官方support 更新比较慢,建议自己从email 中合成chain file

chain file 从上到下,应该是SectigoRSADomainValidationSecureServerCA,USERTrustRSAAddTrustCA,AddTrustExternalCARoot

在nginx下,crt 是需要和chain file 合在一起的,因此在最后的crt中,应包含的证书,从上到下是 CRT, SectigoRSADomainValidationSecureServerCA,USERTrustRSAAddTrustCA,AddTrustExternalCARoot

 

 

现代Linux系统的swap空间

以前的资料上的东西,都是以RAM很小为前提,但是现在的server,RAM动不动就是32G,64G什么的,内存要大不少

下面的内容是从fedora 28的安装文档上看到的。Fedora 28安装指南定义了有关swap 空间分配的思路。需要注意的是,fedora的分配思路可能与其他Linux发行版略有不同,但是和REHL,Centos是一摸一样的,这些建议自从Fedora19以来就没有变过

Fedora的建议:

RAM<=2GB, SWAP = 2X RAM

2GB < RAM < 8GB, SWAP = RAM

8GB < RAM < 64GB, 4G<=SWAP<=0.5XRAM

RAM> 64GB, SWAP>=4GB

但是根据多年专业的运维人员的经验来说,

RAM <= 2GB, SWAP = 2X RAM

2GB < RAM < 8GB, SWAP = RAM

SWAP > 8GB, SWAP = 8GB

nginx 带query string argument 的URL 跳转

nginx 自带的三个命令,  return, rewrite, try-files功能非常强大,基本可以完成各式各样的跳转, 比如下面的:

server {

    listen 80;

   server_name example.com;

   return 301 https://www.example.com$uri;

}

这样就完成了一个不带www的domain转向带SSL以及www前缀的domain的跳转

$uri: 按照nginx官方文档的话来说,就是current normalized URI in REQUEST

$request_uri: full original request URI (with arguments)

这里很明显就看到了$uri和$request_uri的区别,$uri 是 normalized的,换句话说,就是

  1. 去除了?以及后面的query参数
  2. encoded URL被 decoded

因此这里就出现了一个问题: exapmle.com/test.php?a=b 会跳转到https://www.example.com/test.php, query string丢失了,解决的办法很简单

return 301 https://www.example.com$uri$is_args$args
或者
return 301 https://www.example.com$request_uri

$is_args is an emprt string if there are no arguments, or a ? to signify the start of the query string.

$args then adds the arguments,