import platform
platform.python_version()
恩恩,好使,可以增加版本判断提高代码兼容性,感谢悟能
import platform
platform.python_version()
恩恩,好使,可以增加版本判断提高代码兼容性,感谢悟能
listen 443 ; server_name 4os.org *.4os.org; ssl on; ssl_certificate gz.crt; ssl_certificate_key gz.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; ....
其中:
gz.crt是证书颁发机构给的证书(免费ssl-证书/)
gz.key是解密后的私钥
上文中提到的私钥是加密的,可以在startssl的工具箱里边解密,也可以自己做:
openssl rsa -in gz.pri -out gz.key,输入私钥生成时设置的密码,出来的就是不加密的私钥了,nginx启动也不会要你输入密码了
补充:
1. “SSL_CTX_use_PrivateKey_file fail”之类的错误,通常都是私钥和证书不匹配造成的,请确认你生成证书与私钥匹配
2.firefox证书需要根证书信息:
wget http://www.startssl.com/certs/sub.class1.server.ca.pem
cat sub.class1.server.ca.pem >> gz.crt
不再推荐 startssl,推荐 let’s encrypt, 请参考文章免费HTTPS证书
一般来说,开启https服务总会涉及到证书问题,通常自签发的证书在浏览器会有”鲜红告警”,而CA的证书又颇贵
https://www.startssl.com/ 是一个免费的证书提供商,并支持ie,firefox,chrome等主流浏览器
选择sign-up,并输入要求填写的所有信息,由于是人工审核,请谨慎填写(必须是私人地址)
2. 注册成功后会收到封邮件(建议留gmail),点击链接会安装一份证书,以后就可以凭证书自动登录该网站了(上图Auth…)
3. 登录后到控制面板,有3个框:分别是工具箱/证书向导/验证向导
先点验证向导(validations wizard),分别验证邮箱和域名(确认该域名属于你,系统一般会发信给域名的postmaster或者你注册域名时留的邮箱)
4. 证书向导,点Certificats wizard,选择web Server SSL证书,下一步
6. 然后系统会提示你保存加密私钥(你稍后可以在工具箱里边解密之,不要现在做,请确认保存该密钥),下一步选择域名和子域名申请证书
7. 提交申请,稍等个大概10分钟,会收到邮件提示证书开通,在后台下载就可以了(Toolbox-Retrieve Certificate)
到这里,SSL 证书已经搞定,nginx配置可以参考http://www.4os.org/index.php/2012/05/09/nginx-ssl-https-%E8%AE%BE%E7%BD%AE/
最近临时有个需求需要用python 爬点中文数据,结果悲催的发现乱码了
查了下资料,这里做下总结:
1. 首先python的代码需要是UTF-8的
# -*- coding: utf-8 -*-
2.确认mysql的数据库和表编码是UTF8的
show create database …
show create table…
如果不是,alter table或者database设置下编码(请注意alter database编码造成的影响)
3.pytho mysql连接时确认使用UTF8
4.暂时来说,应该是正常的了,如果还不行,请尝试如下操作:
修改/etc/my.cnf
[client]default-character-set = utf8
[mysqld]default-character-set = utf8
在python代码中增加:
reload(sys)
sys.setdefaultencoding(‘utf-8’)
停止和重启apache与nginx有些许不同,彼此经验不能照搬
两者相同,都是发指令给父进程,父进程立刻尝试杀死所有的子进程并退出
nginx的文档说得很简单:reopen the logfile,实际上的操作是master重新打开日志文件,并改变日志文件权限,是worker进程有读写权限,然后发USR1给worker进程重新打开日志文件,这完全不涉及任何worker进程的重新启动
apache则不同,它的父进程会”建议”所有子进程完成当前请求后退出,父进程将重新读取配置文件和日志文件,每个子进程退出后父进程将生成新的子进程
nginx收到这个信号会做3个事情:
1.重新读取配置文件
2.使用新的配置启动新的worker进程
3.旧的worker完成当前请求后退出
apache的做法不同,父进程接收到该信号后会跟TERM信号杀掉所有子进程,重新读取配置文件,重新打开日志文件,并声称新的子进程来服务.与TERM信号不同的是,父进程不退出,服务不会中止
最近在调整网络设置,因此重温了下DHCP SNOOP 和ARP INSPECT 的原理和设置
简单来说,dhcp snooping通过能过滤非法的dhcp信息,并维护着一个mac-ip的数据库
(config)#ip dhcp snooping (启用)
(config)#ip dhcp snooping vlan 4,8,16( 你要监视的vlan)
(config)#ip dhcp snooping database flash:dhcp.db (维护的那个DB,这里是放在闪存里边)
(config-if)#ip dhcp snooping trust (对上联端口或者DHCP服务器端口启用trust)
默认状态下,所有的非trust端口都无法响应DHCP请求,因此:非法的DHCP Server就给block掉了
二 ARP INSPECT
启用了dhcp snooping之后就建立了mac-ip的对应表,因此能在此基础上开启arp inspection,屏蔽非法的mac-ip通信请求
(config)#ip arp inspection vlan 4,8,16
(config)#ip arp inspection validate src-mac ip
(config-if)#ip arp inspection trust (对上联端口或者静态IP端口启用trust)
启用以上设置后,所有非trust端口的数据包都需要跟数据库中的mac-ip(flash:dhcp.db)校验,这里只校验了源mac和ip,对目标mac-ip不做校验(为什么?因为目标如果在其他交换机,这里的dhcp.db是没有记录的)
需要特别指出:dhcp snooping的数据库有个learning的过程,这个对应着dhcp请求的ack应答报文
如果在客户端已经获取IP后再启用arp inspection,会导致该客户端因没有mac-ip的对应而给屏蔽!
通常遇到ddos或者其他攻击,简单想到的办法是iptable,比如
iptable -A INPUT -s IP -j DROP
实际上,超大规模的攻击使用iptable过滤会非常耗CPU,一般建议使用黑洞路由
从这个网址: http://www.cyberciti.biz/tips/how-do-i-drop-or-block-attackers-ip-with-null-routes.html 可以看到
假设需要屏蔽掉202.33.8.49,有三种不同做法:
1. # route add 202.33.8.49 gw 127.0.0.1 lo
2.#ip route add blackhole 202.33.8.49
3.#route add -host 202.33.8.49 reject
当然,文中没有解释这三种做法的区别与优劣,这里简单说说个人看法
第一种,是把这个ip的路由导向lo 127.0.0.1,其实是相当犯傻的行为,系统会自动的尝试往lo发送数据(tcpdump可见)
第二种,是加入黑洞路由,意思就是直接就丢弃了,当然也不会有对应的应用层程序收到数据包尝试回包了
第三种,先看看man里边怎么说: “reject install a blocking route, which will force a route lookup to fail. This is for example used to mask out networks before using the default route. This is NOT for firewalling.” reject是阻止了”到”这个IP的网络,通常用于在使用默认路由前标识网络,不适用于防火墙,为什么呢?因为应用层程序能收到数据包,只不过尝试回包时会知道网络不可达而已
由此可见,从性能来说使用blackhole是最好的办法
最近发现esxi 退出控制台的热键不起作用,Ctrl+ALT按下去鼠标还是出不来
查了下资料,据说是要Ctrl+ALT+Space,hold 住CTRL+ALT放开SPACE,然后按ESC,嗯,这个办法可行
其实还有个更简单的办法,按住CTRL+ALT,再点下鼠标,嗯,好了…嘿嘿
yum install pciutils
then,try lspci
infobright 是基于mysql二次开发的数据仓库,目前社区版免费
不过只能使用“LOAD DATA INFILE”的方式导入数据,不支持INSERT、UPDATE、DELETE, 不支持高并发:只能支持10多个并发查询