discuz x3.2升级到x3.4并且开启全站SSL

discuz X从3.2升级到3.4很简单,直接按照官网的文档就可以了,主要问题升级上来的网站开启SSL会出现某些问题

首先,开启SSL的话,需要再后台把能改成https的地方全部改成https,这样对于新站就是全站SSL了

其次,对于升级上来的网站,会发现楼层点评中的头像链接仍然是http,这是因为点评头像的链接会直接缓存与pre_forum_postcache表中,我们目前只能在输出的时候对http://进行替换(在数据库中直接把http换成https, 会造成点评不显示,具体的原因还需要查看源代码才清楚)

打开模板 view_node_body.htm, 查找$comment [ avatar ], (把空格去掉)替换为:

{eval echo str_replace("http://","https://",$comment[ avatar ]);}

把avatar两侧的空格去掉

AWS EC2更改hostname

现在的很多教程都是参考官方的wiki写的,但是wiki里面写的很清楚支持Amazon Linux,各大教程改个标题就说Ubuntu 这么改,centos 这么改等等。。

对于正常的主机,确实是改下/etc/hostname就可以显示我们想要的主机名的,但是AWS EC2 比较奇葩,hostname 都是开机时自动从云端获取并写道/etc/hostname中,这就是为什么直接修改/etc/hostname无效的原因

对于centos 来说,要用hostnamectl命令来修改hostname

sudo hostnamectl set-hostname --static www.iamhippo.com

 

 

Cloudflare 推荐节点IP

Cloudflare 百度云合作节点IP:

162.159.208.4-162.159.208.103

162.159.209.4-162.159.209.103

162.159.210.4-162.159.210.103

162.159.211.4-162.159.211.103

各线路推荐列表:

电信:推荐走圣何塞,例:104.16.160.* 或者上面的百度云合作 ip。
移动:推荐走移动香港,例:172.64.32.* 141.101.115.* 或者 104.23.240.0-104.23.243.254。
联通:没发布什么好线路,可走圣何塞。例:104.16.160.* 或者 104.23.240.0-104.23.243.254。也可以试一下走亚特兰大 108.162.236.* 。

Centos 查看全部历史命令

平时简简单单的查看历史命令,可以用history, 但是一旦历史命令过多,只能显示最新的历史命令,如果我们想查看全部的历史命令,这个时候只靠history 这个command是不行的

对于root来说,所有通过console 输入的命令,其实都保存在/root/.bash_history中

nginx 和 cgi, fcgi 以及php-cgi, php-fpm

在apache 称雄的时代,经常会看到cgi,但是随着nginx 的出现以及时代的进步, cgi 的程序越来越少了.

最近有需求安装smokeping,因此cgi 又被拿了出来

CGI是common gateway interface的缩写,大家都译作通用网关接口,但很不幸,我们无法见名知意。

我们知道,web服务器所处理的内容都是静态的,要想处理动态内容,需要依赖于web应用程序,如php、jsp、python、perl等。但是web server如何将动态的请求传递给这些应用程序?它所依赖的就是cgi协议。没错,是协议,也就是web server和web应用程序交流时的规范。换句话说,通过cgi协议,再结合已搭建好的web应用程序,就可以让web server也能”处理”动态请求(或者说,当用户访问某个特定资源时,可以触发执行某个web应用程序来实现特定功能),你肯定知道处理两字为什么要加上双引号。CGI可以是任何的可执行程序,可以是Shell脚本,二进制应用,或者其他的脚本(Python脚本,Ruby脚本等)

简单的cgi工作方式如下:

有多种方式可以执行cgi程序,但对http的请求方法来说,只有get和post两种方法允许执行cgi脚本。实际上post方法的内部本质还是get方法,只不过在发送http请求时,get和post方法对url中的参数处理方式不一样而已。

任何一种语言都能编写CGI,只不过有些语言比较擅长,有些语言则非常繁琐,例如用bash shell开发,那么需要用echo等打印语句将执行结果放在巨多无比的html的标签中输出给客户端。常用于编写CGI的语言有perl、php、python等,java也一样能写,但java的servlet完全能实现CGI的功能,且更优化、更利于开发

总体上来说,CGI(common gateway interface) 就是所谓的短生存应用程序,Fast CGI 就是所谓的长生存应用程序. FastCGI 像是一个常驻 long-live 型的CGI, 它可以一直执行者,不会每次都要话费时间去fork一次

CGI 和 fastcgi 有自己输入和输出标准,比如HTTP头部, CGI环境变量,get和post等等

CGI, Fast-CGI 是protocols, CGI 慢点, Fast-CGI 要快很多

CGI程序能够用 Python, PERL, Shell, C or C++等语言来实现,尽管没有明确的规定,但是一般用C写的cgi,我们会用.cgi作为后缀,用perl 的用.pl作为后缀,其实我们都可以用.cgi作为后缀. Perl由于其跨操作系统、易于修改的特性成为了CGI的主流编写语言,以至于一般的“cgi程序”就是Perl程序

nginx + fastcgi: nginx只能处理静态文件,对于动态文件,一般用fastcgi 来作为“沟通”的协议. fastcgi 进程由fastcgi 进程管理器管理,而不是nginx,这样就需要一个fastcgi 管理器,这里可以使用spawn-fcgi 作为fastcgi 的进程管理器

nginx + cgi: nginx 不能直接执行外部可执行程序,因此nginx天生不支持cgi的, nginx 虽然不支持cgi,但是他“支持”fastCGI, 这样我们可以fastcgi 来wrap 一下cgi,这样变相的支持cgi,常见的fastcgi wrapper 有fcgiwrap

另外其实cgi 程序也可以被当成fastCGI,因此也可以用nginx + spawn-fcgi 来执行cgi

Spawn-FCGI是一个通用的FastCGI管理服务器,它是lighttpd中的一部份,很多人都用Lighttpd的Spawn-FCGI进行FastCGI模式下的管理工作,不过有不少缺点。而PHP-FPM的出现多少缓解了一些问题

fastcgi 是一个协议, php-fpm 实现了这个协议

通过webserver 来运行php, 一般有两种方式,一个是php-cgi, 另外一个php-fpm (php FastCGI Process Manager) (apache 的mod_php, 把php当作一个模块来执行,以及cli 和 isapi 不在考虑范围之内, php总共来说有5种执行模式)

php-fpm 比传统的CGI方式 (suPHP) 要快,

php-cgi是php自带的fastcgi进程管理器,php-cgi变更php.ini配置后需重启php-cgi才能让新的php-ini生效,不可以平滑重启。另外直接杀死php-cgi进程,php就不能运行了,但是php-fpm和 spawn-fcgi就没有此类问题

php-fpm 就是一个支持php 解析的 fastcgi进程管理器,只能适用于php,其余语言写的cgi,例如perl,python,C,都不能使用

mod_php 和 php-fpm 是运行php 的两种方式,mod_php 是running php as apache module

在segmentfault上看到了一个文章,写的很不错https://segmentfault.com/q/1010000000256516

你(PHP)去和爱斯基摩人(web服务器,如 Apache、Nginx)谈生意

你说中文(PHP代码),他说爱斯基摩语(C代码),互相听不懂,怎么办?那就都把各自说的话转换成英语(FastCGI 协议)吧。

怎么转换呢?你就要使用一个翻译机(PHP-FPM)
(当然对方也有一个翻译机,那个是他自带的)

我们这个翻译机是最新型的,老式的那个(PHP-CGI)被淘汰了。不过它(PHP-FPM)只有年轻人(Linux系统)会用,老头子们(Windows系统)不会摆弄它,只好继续用老式的那个。

Smokeping 常用操作

在centos上安装了smokeping 以后,我们可能会经常遇到各种问题

  1. 对target进行修改,修改完以后,我们需要重启smokeping service ,一般情况下是不需要重启httpd,因为smokeping 的主程序会查看config 的timestamp,如果有变化就会重新读取config 配置文件,但是如果你把target 通过include 的方式包含在config当中,那么即使你修改了target文件,但是config 文件的timestamp 仍然不变。经过测试,解决办法有两个: 要么稍微修改一下config 文件,添加或者删除一些无关紧要的文字,要不然就在重启完smokeping以后再重启一下httpd服务
  2. 还有一个经常见的问题就是slave 的图没有数据,这个一般是权限的问题。因为slave 端的数据,是slave 端通过http call,写入master 端的,而master 端完成此项任务的是httpd,因此httpd 要对 data 文件夹下面的target 的文件夹要有写入权限。实现这个目标,可以有多种实现的办法,一种办法是利用getfacl 和 setfacl 来设置apache 对这些目录单独的权限,另外一种办法是把这些文件的group 设置为apache,并且给apache 写入的权限 chmod g+w *
  3. 查看rrd文件里面的是否用数据,例如可以用rrdtool fetch Akamai1~10.10.16.111.rrd AVERAGE 命令查看master端slave提交的rrd文件

阿里轻量云香港

阿里轻量云香港测试IP为149.129.84.1,新加坡测试IP: 149.129.49.31

移动联通直连,但是电信去程为NTT,回程为CN2

被用来服务国内的移动和联通客户还是很不错的

阿里轻量云和普通ECS的区别就是没有内网IP(自带的内网IP无法和ECS的内网互联),另外也没有那2G的防御

同样的腾讯云香港的测试IP为119.28.11.12

还有华为云香港的测试IP为159.138.33.92

GCP的CDN 35.244.179.64