fangpsh's blog

运维笔记片段

帮同事迁移一个N年前的wordpress站( http://52ml.net ),迁移后数据库使用mariadb,mariadb的socket默认监听在 0.0.0.0:3306上,但是wp无法连接(本地和远程测试连接没问题),需要在/etc/my.cnf中添加:bind-address=localhost。另外 老版本的wp迁移,建议放弃整体迁移,导数据,备份配置文件和图片,然后重安装主题和插件。


Testlink迁移,修改数据库配置项目,除了更新自定义配置项中的custom_config.inc.php中的$tlCfg->log_path 与$g_repositoryPath等自定义配置,另外需要修改php.ini中 session.auto_start = 0,否则无法登录。


为apache 添加spdy支持,如果是2.2,使用官方模块,如果是2.4+,放弃折腾,github上个人fork的支持2.4的模块有不少bug。


nginx做前端反向代理需设置client_max_body_size ,以便传大文件。另外Nginx的配置,"nginx仅仅检查请求的“Host”头以决定该请求应由哪个虚拟主机来处理。如果Host头没有匹配任意一个虚拟主机,或者请求中根本没有包含Host头,那nginx会将请求分发到定义在此端口上的默认虚拟主机。"


Centos 7如果使用仓库中的nginx包,需要注意sytemd的对应service文件中指定的pid路径与nginx.conf中指定的路径是否相同,如果不同需要修改为相同,曾经在sysytemd的邮件列表中看过这个问题,没想到半年后自己也遇到了。


Nginx配置:

Server{
    listen 80;
    server_name a.foo.com
                b.foo.com
                c.foo.com
    return 301 https://$server_name/$request_uri;
   #return 301 https://$host/$request_uri;
}

无论访问a.foo.com还是b.foo.com,c.foo.com,都将转到 https://a.foo.com/ ,server_name只取第一个,另外如果用正则的话例如:server_name ~^(a|b|c).foo.com,那转向居然是 https://~^(a|b|c).foo.com 。。。。。 server_name是一个变量,它存储的是配置中设置的第一条server_name的配置项,应该改用$host。

$host
    in this order of precedence: host name from the request line, or host name from the “Host” request header field, or the server name matching a request 
$server_name
    name of the server which accepted a request 

迁移LDAP,phpldapamin显示 This base cannot be created with PLA,于是手动创建base,可是ldapadd 时候提示ldap_bind: Invalid credentials (49),仔细检查并google了半天,最后根据同事发来的脚本,发现是没有指定主机和端口造成的。。orz。

base.ldif

dn: dc=lol,dc=com
objectclass: dcObject
objectclass: organization
dc: lol
o: lol
ldapadd -h ldap.lol.com -p 389 -D "cn=admin,dc=lol,dc=com" -W -x -a  -c -f base.ldif

ganglia 单播模式下,一些图片显示不全,这是由于ganglia安装好后默认是组播,为了降低网络负担,默认的send_metadata_interval为0(3.1.x版本之后),然而单播模式下,如果send_memta_interval设置为0(默认为0)gmod只会在启动的时候向接收的gmod发送元数据(包含的度量信息,不是监控的数据包)。 所以需要将send_memta_interval设置为非0,例如30。

Ganglia的度量指标从他的元数据间隔发送得到的。元数据包含诸如度量分组,类型等等。假如你重启了接收的gmond主机,那么元数据就会丢失,gmond就不知道如何处理度量数据,因此会把他们抛弃。这会导致生成空白的图表。在组播模式下,gmonds可以和其他任意一台主机通信,在元数据丢失情况请求重新获取。但这在单播模式下是不可能的,因此你需要命令gmond定期的发送元数据。