Category: newest
-
CentOS/RHEL 6/7 升级PHP版本 version 5.4 到 5.6
For CentOS/RHEL 7: # rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm # rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm For CentOS/RHEL 6: # rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm For CentOS/RHEL 5: # rpm -Uvh http://mirror.webtatic.com/yum/el5/latest.rpm After installing Webtatic yum repository, you have to remove the old version of php-common package. It will also delete it dependencies packages. # yum remove php-common yum install -y php56w…
-
有用的firewall-cmd命令备忘
remove public zone service: firewall-cmd –zone=public –remove-service=ssh –permanent firewall-cmd –reload add ip range to trusted zone and add ssh service to trusted zone firewall-cmd –permanent –zone=”trusted” –add-source=”123.51.11.2/32″ firewall-cmd –permanent –zone=”trusted” –add-service=”ssh” firewall-cmd –zone=public –add-port=7788/tcp –permanent firewall-cmd –reload firewall-cmd –list-all-zones add anthor ip range to trusted zone firewall-cmd –permanent –zone=”trusted” –add-source=”172.30.30.0/24″ firewall-cmd –reload firewall-cmd –list-all-zones 一、centos7版本对防火墙进行加强,不再使用原来的iptables,启用firewalld…
-
centos7下安装php的Imagick扩展
yum install php-pear php-devel yum install ImageMagick ImageMagick-devel yum install pcre-devel wget http://pecl.php.net/get/imagick-3.2.0RC1.tgz tar -xvf imagick-3.2.0RC1.tgz cd imagick-3.2.0RC1/ phpize ./configure make make test make install Remember to turn on the extension in the php configuration file. vim /etc/php.ini extension = imagick.so
-
得到服务器出口ip的n个方法
curl ifconfig.mecurl ip.bsd-unix.netcurl icanhazip.comcurl ipinfo.io/ipwget -qO- ipinfo.io/iplynx -source ipinfo.io/ipwget -O – -q icanhazip.comcurl -s http://whatismyip.akamai.com/curl -s https://4.ifcfg.me/nc 4.ifcfg.me 23 | grep IPv4 | cut -d’ ‘ -f4telnet 4.ifcfg.me 2>&1 | grep IPv4 | cut -d’ ‘ -f4echo close | ftp 4.ifcfg.me | awk ‘{print $4; exit}’ 下面是个测试各种方法的速度脚本,最后有排名:wget https://moneyslow.com/bin/externalip-benchmarkchmod a+x externalip-benchmark./externalip-benchmark 测试结果: 其他文章: 1、Windows 浏览器常用方式访问 1、http://www.ip138.com/ 2、http://tool.chinaz.com/ 3、在百度搜索框内输入 ip…
-
centos7 开机自启动程序设置
修改开机脚本添加文件的权限 chmod +x /etc/rc.d/rc.local vi 这个rc.local 可以添加要开机自启动的脚本: systemctl start xxx.service 通过以上操作,就可以像CentOS6一样添加开机脚本了
-
全站https技术要点及注意事项
HSTS(HTTP Strict Transport Security) 通过Web服务器上的设置,在收到HTTP访问请求时,返回的header里带有Strict-Transport-Security字段,告知浏览器必须使用HTTPs进行访问。 但是,HSTS并不能避免首次跳转时遇到的劫持。要彻底解决这个问题,可以申请加入Preload List(预加载列表)。 Preload List是由Google Chrome维护的“HTTPs站点列表”,Chrome, Firefox, Safari, Edge, IE 11均在使用。一旦浏览器发现要访问的站点在Preload List上,默认就会发起HTTPs链接。这样,就避免了HSTS的首次跳转被劫持的隐患。 SSL卸载 采用F5来做负载均衡,F5应付单纯的L4和L7的流量是没有问题的,但进行SSL卸载时性能往往会急剧降低,F5可以提供专门的加速卡来解决这个问题,但价格不便宜。所以,还需要专门环节来进行SSL卸载,常见的Nginx和HAProxy都可以执行这个任务。 客户端证书 与浏览器不同的是,C#信任的根证书在localmachinestore或者currentuserstore中,Java信任的根证书在JDK安装目录下的cacerts目录中,iOS和Android的证书管理又有不同。 浏览器的证书在使用中又可以持续更新,用户往往感知不到,如果“想当然”认为浏览器验证通过就万事大吉,很可能会出问题。比如国内有不少网站使用WoSign签发的证书,但老版本的JDK并不信任WoSign的根证书,用浏览器浏览没问题的网站,程序就会报错,除非手动导入证书。Android的信任列表是随固件更新而更新的,4.2以后才内置WoSign的信任。因为WoSign行为不端,前几天Firefox, Chrome, Safari等主流浏览器又取消了对它的信任,也就意味着WoSign证书有安全风险,所以已经内置WoSign根证书的程序也应当做对应的设置。 服务器端证书 用浏览器验证没有问题的HTTPs站点,用程序访问就有问题。这是为什么? 在服务器上证书配置错误,只有最终证书,而缺少中级证书的情况。通常,最终证书里包含了中级证书相关的信息,所以如果缺少中级证书,浏览器为了建立证书链,会做一次耗时的操作来获取中级证书,而且这一切都发生在HTTPs连接真正建立之前。更糟糕的是,不少浏览器为了“表现更好”,会想办法绕过这个问题。所以缺少中级证书的情况一直存在,一直不会被发现,而程序调用的速度总是上不去,甚至有一定几率报错。 证书大小: 如果把证书链配置完全,还要注意证书链的大小。有一些网站的完整证书异乎寻常地大,达到若干kb甚至几十kb,也就是说,在建立连接之前,就必须先传输这么多的数据。如果做单纯的PC网页浏览,或许不会有问题。但对于移动端和程序调用来说,这就是一场灾难。最好的办法,是用OpenSSL配合WireShark之类的工具,自己动手来测试。如果你熟悉TCP相关的知识,往往可以得到更好的优化方案。 OCSP和CRL也不可忽略。这两项技术用来保证撤回证书(让证书失效)的有效性。如果你仔细观察,会发现证书里都指定了对应的OCSP或者CRL的URL,用来检查证书是否失效。按道理说,在每次建立HTTPs连接时,都应当进行OCSP或CRL检查。返回结果通常在1k左右,如果请求非常频繁,这个因素也应当考虑。 SNI 大家都熟悉“虚拟主机”的概念,它可以让多个域名对应到同一个IP,让同一台服务器服务多个站点。在HTTP时代,可以在header中通过host来指定需要访问的域名,一切看起来都那么完美。 但是在HTTPs时代,却没有这样的好事,传统的HTTPs服务很难让多个域名对应到同一个IP。在进行到HTTP通讯之前,必须先建立验证证书建立连接。如果一个IP上绑定了多个域名,这个阶段服务器根本没法知道请求对应的是哪个域名,无疑会造成极大的不便。 为了解决这种问题,SNI(Server Name Identification)应运而生了。这种技术说起来复杂,大家可以把它简单理解为“建立SSL/TLS通讯时的host header”,这样就解决了一个IP只能配单张证书的问题。 然而SNI的诞生历史并不长,许多客户端的支持都存在奇怪的问题。比如JDK7支持SNI,但是JDK8的支持又有bug。而且这种支持往往需要调用原生的API才可以实现,Resteasy之类的类库并不支持。如果对SNI的支持有问题,即便配置正确也可能无法建立连接,因为服务端并不能识别此请求需要的证书。 CDN CDN已经是业界流行的技术了,对稍微大一点的网站来说,没有CDN几乎是不可想象的。HTTP时代的CDN方案相当成熟,HTTPs的情况则不是如此。 要使用HTTPs的CDN服务,就要决定是否将证书交给CDN提供商。基于中国目前的商业信誉水平,把证书交给CDN提供商的风险不可不考虑。恶意揣测,别有用心的人一旦拿到证书,可以很方便地通过DNS劫持发起中间人攻击,而完全不被感知到。 另外,HTTP时代大家都喜欢将资源分散到多个不同的域名,因为建立连接的成本很低,而同一个域名的并发连接数有限。在HTTPs环境下,每次建立连接的成本高了很多,频繁下载和验证证书对移动设备和移动网络影响很大(尤其是证书很大的情况)。如果域名非常分散,影响就更加显著。所以在HTTPs时代,把域名收缩集中反而是更好的办法。 内容及其它 因为HTTPs的内容中无法引用HTTP的资源,所以应当保证网页中资源文件的链接都是HTTPs的。遗留的许多系统很可能并不注意这些事情,资源都采用绝对地址的形式,这样改起来工作量很大。如果要修改,最好一步到位,直接改成“协议相对URL”。 绝对地址URL:http://www.a.com/b.css 协议相对URL://www.a.com/b.css 这样浏览器就可以根据当前的协议,自动生成资源的绝对地址,无论是HTTP还是HTTPs,都可以自由切换。 如果资源都是自有的,切换HTTPs就相对容易。如果存在外部,尤其是UGC的资源,切换到HTTPs就很麻烦。如果是超链接,通常采用专门的跳转服务,也就是下面这样: https://link.my.com/target=www.you.com 如果是图片这类资源,可以设定专门的程序将其抓取过来存放在自己的服务器上,再将地址替换掉即可。但是,这样做很可能要自己承担流量压力,同时还要承担恶意程序攻击的风险。 如果是视频、游戏等富文本、交互复杂的资源,如果源站没有提供HTTPs的服务,多半只能忍痛割爱,放弃内嵌展现的形式了。
-
openssl 证书查看
生成Self Signed证书 # 生成一个key,你的私钥,openssl会提示你输入一个密码,可以输入,也可以不输, # 输入的话,以后每次使用这个key的时候都要输入密码,安全起见,还是应该有一个密码保护 > openssl genrsa -des3 -out selfsign.key 4096 # 使用上面生成的key,生成一个certificate signing request (CSR) # 如果你的key有密码保护,openssl首先会询问你的密码,然后询问你一系列问题, # 其中Common Name(CN)是最重要的,它代表你的证书要代表的目标,如果你为网站申请的证书,就要添你的域名。 > openssl req -new -key selfsign.key -out selfsign.csr # 生成Self Signed证书 selfsign.crt就是我们生成的证书了 > openssl x509 -req -days 365 -in selfsign.csr -signkey selfsign.key -out selfsign.crt # 另外一个比较简单的方法就是用下面的命令,一次生成key和证书 > openssl req -x509 -nodes -days…
-
网站为什么要备案?
根据工信部《互联网信息服务管理办法》(国务院 292 号令),网站在未完成备案之前,不能指向大陆境内服务器开通访问。如果您的网站托管在中国大陆节点服务器,或者开通 CDN 服务,就必须申请 ICP(互联网内容提供商)备案。若网站服务器为非中国大陆节点,则不用申请备案。 ICP 包含两种类型: ICP 备案: 对于单纯的资讯性并且不涉及直销的网站,需要申请 ICP 备案。ICP 备案可通过网站托管服务器提供商或网络空间服务商(如电信、移动、联通等)进行申请。 经营性 ICP 许可证: 对于商品或服务的在线平台或第三方卖方,需获得商用许可证。要申请经营性 ICP 许可证,您必须先有一个有效的 ICP 备案号。经营性备案需用户自己到当地管理局相关部门进行办理,服务商可协助提供资质以及接入协议。具体办理要求需您登录当地经营性备案网站进行查看。 注意:根据 2016 年最新要求,网站在工信部备案成功后,需在网站开通之日起 30 日内提交 公安备案申请。 您可以在服务器提供商的备案系统提交 ICP 备案申请。
-
mac下快速新建一个空的文本文件
1、实用工具中找到‘脚本编辑器’,输入: tell application “Finder” to make new file at (the target of the front window)as alias 2、随便命名如NewText,保存为app,放置在application文件夹中,拖入桌面dock 这样在打开一个文件夹后,点击桌面我们新建的图标就可以新建文档了。
-
微信支付中意外情况发生的函数处理:幂等
什么是幂等(Idempotency)?简单来说,一个操作如果具有任意多次执行所产生的影响均与一次执行的影响相同,我们就称之为幂等。 这样说来,似乎很容易理解。但要知道,这样的定义,其实是一个语义范畴对行为结果的定义。如何用语法和规则去确保行为能达到这个结果,往往需要很谨慎的设计和实现。实际系统中,幂等是一个极为重要的概念。无论是在大型互联网应用还是企业级架构中,我们都见到 REST API 被越来越多的采用。而正确实现幂等,往往是 API 中最难的技术点之一。 先说为什么重要。举一个简单易懂的例子。 比如你要处理一次电商网站收款或者付款的交易。当你给微信支付发送这个付款请求后,一个顺利的场景,是没有任何错误发生,微信支付收到你的付款请求,处理所有转账,然后返回一个 HTTP 200 消息表示交易完成。 那如果发出请求后,有个请求超时,你再也没有收到关于这个请求是成功还是失败的的回执,又该如何呢? 这里就有很多种可能情况: 这个请求在到达微信支付端前就已经发生超时,微信支付从来没有收到这样的请求。 这个请求到达微信支付端,但是支付交易失败,这时发生超时,微信支付收到这样的请求,但没有处理成功。 这个请求到达微信支付端,并且支付交易成功,这时发生超时,微信支付收到这样的请求,处理成功,但是没有回执。 这个请求到达微信支付端,并且支付交易成功,并且发回回执,然而因为网络原因回执丢失,客户端超时,微信支付收到这样的请求,处理成功,发出回执,但是客户没有收到。 很直观的一个想法,也是现实中用户最常见的做法,是重新提交一次支付请求。但是这样就有一个潜在的问题:请求超时是上面的哪一种情况?会不会引发多次支付的可能性? 这就涉及到系统中的幂等是如何实现的了。 那么幂等又该如何实现呢?“多次执行所产生的影响均与一次执行的影响相同”,简而言之,我们需要一个 Dedup(去重)的机制。这往往有很多不同的实现方法,但是有两个很关键的因素: 一是Idempotency Key(幂等令牌)。也就是客户端和服务器端通过什么来识别这实际上是同一个请求,或是同一个请求的多次 retry(尝试)。这往往需要双方又一个既定的协议。往往是类似账单号或者交易 token(令牌)这样一个可以唯一标识同一个请求意愿的元素。通常由客户端生成。 二是Uniqueness Guarantee(确保唯一性)。服务器端用什么机制去确保同一个请求一定不会被处理两次,也就是微信支付怎么确保同一笔交易不会因为客户端发送两次请求就被处理多次。最通常的做法是利用数据库。比如把幂等令牌所在的数据库表的 Column(列)作为 unique indexed。这样,当你试图存储两个含有同样令牌的请求时,必定有一个会报错。注意,简单的读检查并不一定行,因为读与读之间会有 Race Condition(竞争条件),因此还是有可能出错。 如果一个系统可以正确的处理和实现上面的两个要素,那么基本就能达到幂等的需求。那么现实系统中常见的问题都出在哪里呢? 一是幂等令牌什么时候产生,怎么产生?这一点很重要。拿上面的例子来说。就算微信支付可以保证每一个请求对应的支付交易一定只会被处理一次。但是这个请求的多次重复,一定要共有某一个微信可以识别的标识。假如客户端对同一笔交易的多次请求,产生的幂等令牌并不相同,那不论你别的地方多么完美,都没有可能保证 “一个操作如果具有任意多次执行所产生的影响均与一次执行的影响相同”。 二是有没有令牌被误删的可能。这是上面的问题的一个特殊情况。幂等令牌是由客户端生成的。那么如果生成的令牌在被使用后(一次微信支付请求中使用了),不小心因为 DB rollback 等原因被删除了。那么客户端就不知道自己其实已经发过一次请求。就有可能生成一个新的账单,并产生全新的令牌,而服务端将对此一无所知。 三是各种竞争条件。上面说的用 DB 读来确保唯一性经常因为竞争而不工作。其实一个需要幂等的系统中,保证唯一性的各个环节和实现,都要考虑 Race Condition。 四是对请求 Retry 的处理。这大部分是服务器端要做的。一个常见的方法是区分正在处理的请求、和处理成功、处理失败的请求。这样当客户端重试的时候,根据情况或者直接返回,或者再次处理。就好像前面说的微信支付的例子。微信支付服务上,需要知道每一笔交易的处理情况,才能正确处理在此转账请求时,是不是需要进行任何动作。 五是一个系统中需要多层幂等。什么意思呢?A 发送请求给 B,B 处理的一部分是要发送请求给另一个系统 C,C 在处理的过程中还可能需要发请求给另一个系统 D………
-
mac下如何强制退出应用程序
1、使用键盘快捷键强制退出处于活跃状态的Mac程序 快捷键:Command+Option+Shift+Esc 这样按住一两秒钟,就可以强制退出当前程序了,算是最方便的一种方法。 2、打开强制退出程序窗口 使用快捷键:Command+Option+Esc 来打开“强制退出应用程序”的窗口,然后选中你需要退出的程序,再点右下方的“强制退出”即可。 3、从Dock中强制退出程序 按住Option然后右键点击程序在Dock中的图标,可以看到“强制退出”的选项,选择即可。 4、从左上角苹果菜单中强制退出程序 这个有些类似第二条,从左上角的菜单中选择“强制退出”,不过有些时候程序当机,点击菜单会出现没反应的情况。 5、使用“活动监视器”强制退出程序 在 应用程序-实用工具 中找到“活动监视器”,找到程序的名字然后选择左上方红色按钮强制退出程序,这个就有些类似Windows中的任务管理器了。如果上面的方法都不奏效,那么可以尝试这个方法。 6、使用终端命令强制退出程序 这个应该算是重启电脑之前的最后办法了,在终端中输入如下命令 killall [程序名称]
-
狗日的markmonitor是干什么的
也许你查询某个大型公司域名whios信息时,常常会发现很多这些大型公司的域名都在一家名为MarkMonitor的公司注册,那么markmonitor是家什么样的公司呢?
-
发票真伪查询方法
2017年7月1日国家“史上最严发票规定”正式实施,近段时间国家税务局又相继发布有关发票管理新规,公司《财务制度》中一直有明确规定:报销人对所报销费用的真实性、准确性、合法性负责,单据及附件应合规。以下提供发票真伪的查询方法: 一、增值税发票(包括专用发票、增值税普通发票、增值税电子普通发票、机动车销售统一发票)查询方法(国家税务总局负责) 登录国家税务总局全国增值税发票查验平台进行查询:https://inv-veri.chinatax.gov.cn/ 二、非增值税的普通发票查询方法 1、北京市国税发票真伪查询方法: 登录北京市国家税务局网站查询:http://www.bjsat.gov.cn/ptfp/fpindex.jsp 报销出租车票时,除查询北京国税网址结果外,还需要登录:“微信-钱包-城市服务-出租车”查询或者进入“支付宝-城市服务-出租车信息查询”输入出租车号牌或驾驶员证号,若两次查询结果一致,则发票为真,若两次查询结果不一致,发票为假。 2、上海国税发票真伪查询方法: 登录上海市国家税务局网站查询:https://www.tax.sh.gov.cn/xbwz/wzcx/WSBSptFpCx_loginsNewl.jsp 3、广东省国税发票真伪查询方法: 登录广东省国家税务局网站查询:http://gs.etax-gd.gov.cn/xxmh/html/index.html?forw=gzcx-fpcy 4、其他省(市)国税发票真伪查询方法: 登录各省市国家税务局网站―网上办税服务厅―我要查询―发票查询 三、其他发票查询网址方法: 除上述查询网址外,还可通过友商网进行查询:http://fapiao.youshang.com/
-
微信登录 wechat-login.html 403 Forbidden
discuz设置微信登陆,遇到403问题。 一般情况下,全局-seo设置里要先确定现有的seo策略生效,点击 你的域名/admin.php?action=checktools&operation=rewrite&frame=no 会有相应的rewrite规则,将其和你自己的配置进行比对,将插件的rewrite规则靠前即可。
-
请先升级 UCenter 到 1.6.0 以上版本。 如果使用为Discuz! X自带UCenter,请先下载 UCenter 1.6.0, 在 utilities 目录下找到对应的升级程序,复制或上
错误提示”请先升级 UCenter 到 1.6.0 以上版本。 如果使用为Discuz! X自带UCenter,请先下载 UCenter 1.6.0, 在 utilities 目录下找到对应的升级程序,复制或上。。。。。“ 解决办法: 先确认uc版本是否1.6,如果是还出现请先升级 UCenter 到 1.6.0 以上版本,按如下方法解决: 方法有两种: 第一、http://你的域名/install/update.php?step=prepare 直接输入 第二、在updata.php文件中 查找代码 if(version_compare($version, ’1.5.2′) <= 0) { 将代码修改为:if(version_compare($version, ’1.5.2′) >= 0) { 就可以跳过检查了!! 接下来哗哗哗一顿表升级乱闪,大概260个表后,显示如下: 数据库升级工具 升级开始 数据库结构添加与更新 数据更新 数据库结构删除 升级完成 恭喜,数据库结构升级完成! 升级完成。
-
Visual Studio Code 快捷键 Mac 版
Mac 键盘符号说明 ⌘ == Command ⇧ == Shift ⇪ == Caps Lock ⌥ == Option ⌃ == Control ↩ == Return/Enter ⌫ == Delete ⌦ == 向前删除键(Fn+Delete) ↑ == 上箭头 ↓ == 下箭头 ← == 左箭头 → == 右箭头 ⇞ == Page Up(Fn+↑) ⇟ == Page Down(Fn+↓) Home == Fn + ← End == Fn + → ⇥ == 右制表符(Tab键) ⇤ == 左制表符(Shift+Tab) ⎋ == Escape (Esc) ⏏ == 电源开关键 常用 Mac 快捷键 介绍 ⇧⌘P, F1 显示命令面板 ⌘P 快速打开 ⇧⌘N 新建 窗口/实例 ⌘W 关闭 窗口/实例 基本编辑 Mac 快捷键 介绍 ⌘X 剪切 ⌘C 复制 ⌥↓ /…
-
Sphinx全文检索引擎使用指南:安装支持的操作系统:在绝大多数现代的Unix类操作系统上,只需要一个C++编译器就可以编译并运行Sphinx,而不需要对源码进行任何改动。
Sphinx可以在以下系统上运行: Linux 2.4.x, 2.6.x (包括各种发行版) ? Windows 2000, XP ? FreeBSD 4.x, 5.x, 6.x ? NetBSD 1.6, 3.0 ? Solaris 9, 11 ? Mac OS X 支持的CPU种类包括 X86, X86-64, SPARC64。 依赖的工具:在UNIX平台上,你需要以下的工具用来编译和安装Sphinx: C++编译器。GNU gcc就能够干这个活。 make程序。GNU make就能够干这个活。 安装Sphinx: tar包解压,并进入sphinx子目录: $ tar xzvf sphinx-0.9.7.tar.gz $ cd sphinx configuration程序: $ ./configure configure程序有很多运行选项。完整的列表可以通过使用 –help开关得到。最重要的如下: –prefix, 定义将 Sphinx安装到何处; –with-mysql, 当自动检测失败时,指出在那里能找到MySQL头文件和库文件; 制作二进制程序: …
-
centos6 安装 sphinx
安装前请先确定安装了常用的组件,然后在官方网站下载最新的Sphinx, yum install -y python python-develhttp://sphinxsearch.com/downloads/release/ 安装sphinxtar zxvf sphinx-2.1.4-release.tar.gz cd sphinx-2.1.4-release ./configure –prefix=/usr/local/sphinx –-with-mysql make && make install libsphinxclient 安装(PHP模块需要) cd api/libsphinxclient ./configure –prefix=/usr/local/sphinx make && make install 安装PHP的Sphinx模块 下载地址:http://pecl.php.net/package/sphinx wget http://pecl.php.net/get/sphinx-1.3.0.tgz tar zxf sphinx-1.3.0.tgz cd sphinx-1.3.0 /usr/local/PHP/bin/phpize ./configure –with-php-config=/usr/local/php/bin/php-config –with-sphinx=/usr/local/sphinx/ make && make install 安装好后,在安装目录下etc目录下,有份测试数据和配置的样本 cd /usr/local/sphinx/etc cp sphinx.conf.dist sphinx.conf
-
discuz 静态化rewrite规则大全 apache windows iis nginx zeus
Apache Web Server(独立主机用户) <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page\%3D$4&page=$3&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3&%1 RewriteCond %{QUERY_STRING} ^(.*)$ RewriteRule ^(.*)/(fid|tid)-([0-9]+)\.html$ $1/archiver/index.php?action=$2&value=$3&%1…
-
mac sublime text3 常用快捷键总结(转自简书)
cmd+n 新建页面 cmd+数字键 切换到对应页面 cmd+p 搜索跳转到对应页 cmd+w 关闭页面 cmd+j 合并一行 cmd+d 选中当前单词,继续敲可以选中多个 cmd+l 选中当前行 cmd+z 撤销 cmd+c 复制 cmd+v 粘贴 cmd+s 保存 cmd+x 删除当前行 cmd+delete 删除光标定位到当前行起始的一块 cmd+]缩进当前行,[回缩当前行,对应tab/shift+tab功能 cmd+enter 向下开辟一行 cmd+shift+enter 向上开辟一行 cmd+f 查询内容 cmd+shift+f 全局查询,可替换 cmd+g 查询到的内容下一个 cmd+鼠标右键 多点编辑 cmd+~ 调出控制台 cmd+k then u 大写 cmd+k then l 小写 cmd+shift+p 调出命令面板 cmd+⬅️ 光标定位到当前行最前 +shift 选中…
-
建立网站涉及的前置审批行业及需要的证件和资质(论坛不需要审批了)
涉及前置审批的行业及批复单位: 分类 批复单位 前置审批名称 备注 新闻类 国务院新闻办公室或者省、自治区、直辖市人民政府新闻办公室 《互联网新闻信息服务许可证》 出版类 国家新闻出版广电总局 《互联网出版许可证》 药品和医疗器械类 各省食品药品监督管理局;工信部(开办农药、化工生产企业审批) 《药品经营许可证》、《医疗器械经营企业许可证》)、《互联网药品信息服务资格证书》、化学类药品由工信部颁发 文化类 省文化厅 《网络文化经营许可证》 广播电影电视节目类 广电总局 《信息网络传播视听节目许可证》 教育类 各省教育厅 除浙江、青海、西藏外,其余省份已取消。 医疗保健类 各省卫生厅 除河北、西藏外,其余省份已取消。 网络预约车 公司注册所在地的交通管理委员会 《网络预约出租汽车经营许可证》 电子公告类 省通信管理局 全国范围内取消。 新闻类 互联网新闻信息服务是指通过互联网登载新闻信息(时政类新闻信息包括有关政治、经济、军事、外交等社会公共事务的报道、评论,以及有关社会突发事件的报道、评论)、提供时政类电子公告服务和向公众发送时政类通讯信息。 第一类:新闻单位设立的登载超出本单位已刊登的播发的新闻信息,提供时政类电子公告服务 ,向公众发送时政类通讯信息的互联网新闻信息服务单位; 第二类:非新闻单位设立的转载新闻信息,提供时政类电子公告服务 、向公众发送时政类通讯信息的互联网新闻信息服务单位; 第三类:新闻单位设立的登载本单位已刊登播发的新闻信息的互联网新闻信息服务单位; 出版类 互联网出版,是指服务提供者将自己创作或他人创作的作品经过选择和编辑加工,登载在互联网上或者通过互联发送到用户端,供公众浏览、阅读、使用或者下载的在线传播行为。其作品主要包括:正式出版的图书 、报纸、期刊、音像制品、电子出版物等出版物内容或者在其他媒体上公开发表的作品,经过编辑加工的文学、艺术和自然科学、社会科学、工程技术等方面的作品。 凡是在互联网和移动网上上线运营电子阅读,电子出版物,音像制品,互联网图书,互联网报纸,互联网杂志,手机出版物,学术出版物,艺术出版物,教育出版物,游戏,地图等,都需要到相关单位申请互联网出版许可证。 药品和医疗器械类 根据《互联网药品信息服务管理办法》互联网药品信息服务,是指通过互联网向上网用户提供药品(含医疗器械)信息的服务活动。 文化类 根据《互联网文化管理暂行规定》互联网文化产品是指通过互联网生产、传播和流通的文化产品。如游戏、音乐、动漫等。 广播电影电视节目类 利用摄影机、录音机和其它视音频摄制设备拍摄、录制的,由可连续运动的图像或可连续收听的声音组成的视音频节目 ,如视频类,直播类网站。 教育类 教育类前置审批指与教育有关的教育网站和网校,如办理文凭、远程教育视频、考试培训等。 医疗保健类 互联网医疗保健信息服务是指通过开办医疗卫生机构网站、预防保健知识网站或者在综合网站设立预防保健类频道向上网用户提供医疗保健信息的服务活动。 2015…
-
discuz nginx 的静态化配置
rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last; rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last; rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last; rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last; rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last; rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last; rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last; rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last; rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last; if (!-e $request_filename) { return 404; }
-
F5负载均衡设备选型依据性能指标
假设你是一个用户,需要为自己公司的系统部署一套负载均衡设备,那么应该根据哪些因素来考虑要选择的负载均衡设备的性能指标是否能够满足自己的需要呢?许多用户往往根据自己的网络和应用情况的统计或者再加上未来发展的规划,简单地选择刚好与自己的计算结果相符性能的负载均衡设备型号,结果是许多用户发现所购买的设备并不能完全满足自己的需求,这说明在选型的过程中疏漏了某些因素。我们来详细分析一下。 负载均衡设备选型要考虑性能、功能项开启情况以及满足真实和未来需求三个方面。 1. 性能 性能指标包含4/7层吞吐量,4/7层新建连接数,并发连接数三大指标。同时包含SSL加速能力,HTTP压缩能力,内存Cache等功能模块指标。 1) 4/7层吞吐量(单位bps) 如果系统应用配置都是4层的(负载均衡设备只判断TCP包头进行转发),那么考虑4层吞吐量即可。如果涉及到应用层数据包头或者数据包内容的判断和分析,那么必须考虑7层的吞吐量能力。吞吐量的计算通过统计单位时间内网络中的流量(出向流量+入向流量)即可得出,一般来说要把峰值流量作为吞吐量选择的最低依据(如果可以容忍峰值丢包,那么可以以平均每秒的流量作为参考),例如经过统计峰值流量为10Gbps,那么必须考虑10Gbps吞吐量以上的设备。 2) 4/7层新建连接数(单位CPS) 新建连接数也分为4层新建连接数和7层新建连接数/请求数两大指标,判断该用哪个指标跟吞吐量一样,都是判断负载均衡设备对经过的流量是4层的处理还是7层的处理。新建连接数衡量的是负载均衡设备每秒能处理多少个4层或者7层的用户新建连接,例如一个用户每秒会发起10个新建连接,网络中有1万个并发用户,那么负载均衡设备的4层新建连接能力不能小于10万CPS,如果负载均衡设备是做7层处理的,那么必须要求7层新建连接数也不能小于10万CPS。 3) 并发连接数 并发连接数衡量的是负载均衡设备能够同时处理多少个用户会话,如果有设备号称新建连接数很高,但并发连接数较低,则该设备将很快达到瓶颈,新的用户连接将处于排队或者丢弃的状态,这显然是不合理的,所以一个性能强的负载均衡设备,必然是新建连接和并发连接数指标都会很高,而不会只有一个高。并发连接数可以通过统计服务器上的连接数来计算,例如经过统计,共有100台服务器,每台服务器并发连接数峰值为5000个,那么要求设备至少支持50万并发连接能力。 4) 功能模块性能指标 a) SSL加速 经验表明,服务器自己开启SSL加解密后的性能会降为开启前的十分之一,所以需要安全访问的系统往往会把SSL的加解密通过负载均衡设备的SSL加速功能来完成。 SSL加速性能指标有SSL新建连接数(CPS),新建交易数(TPS),SSL Bulk(对称加解密)吞吐量等,这些指标的估算跟7层新建连接数和吞吐量的估算一样,判断需要SSL加解密的流量和连接数有多少即可。 b) HTTP压缩 负载均衡设备的HTTP压缩功能会把服务器的应答包压缩后发送给客户端,然后客户端浏览器会自动解压缩,HTTP压缩降低了数据包大小,自然也就提高了用户的访问速度,是否开启这个功能要对负载均衡设备压缩的开销,压缩的效果以及网络传输速度做综合衡量,一般在配置中只会对部分确实需要的应用来开启,HTTP压缩的单位bps,例如需要压缩的流量为1Gbps,则选择至少1Gbps压缩性能的负载均衡设备。 c) 内存Cache 内容缓存可以降低服务器的负载并提高响应速度,抛开功能差异,缓存能力衡量的指标是用于缓存的内存大小。该功能各负载均衡厂家一般是免费赠送。 2. 功能项开启 负载均衡设备开启功能项的数量多少对于负载均衡设备的性能影响是不同的,开启的功能项越多,越复杂,设备的性能也会随之做更多的下降,所以在考虑负载均衡设备时,如果自己的系统会用到多个功能项,对于前面的性能指标要有一定的盈余考虑。 3. 满足真实和未来需求 以上所述的吞吐量,新建连接数,并发连接数以及各模块指标都是在相对单纯干净的环境测出的值,也就是说都是各负载均衡设备在最优环境下的最大值,但在真实环境,流量可能复杂很多,所以负载均衡设备在真实应用中一般不可能达到标称的性能(实际上对于所有做复杂处理的设备来说,都不可能达到标称值)。考虑到应用的复杂程度不同,功能模块开启的数目不同,在负载均衡性能指标的选型时,一定要留下充足的空间,原则如下: 1) 如果确认负载均衡设备对所有应用的处理都是最简单的4层处理,那么理论上选择的负载均衡设备的4层性能稍高于实际性能需求即可。 2) 如果确认负载均衡设备对所有应用的处理都是简单的7层处理,那么理论上选择的负载均衡设备的7层性能稍高于实际性能需求即可。 3) 如果负载均衡设备处理的应用既有4层的也有7层的,建议按照7层应用的性能来考虑负载均衡设备。 4) 如果确认自己的应用经过负载均衡处理时,需要复杂的4层或者7层处理,例如需要根据客户端的地址做策略性分发,需要根据tcp的内容做处理,需要根据HTTP头或者HTTP报文做处理,那么建议选择的负载均衡设备4/7层性能为真实性能需求的两倍。 5) 如果负载均衡设备有混合的复杂流量处理并且还开启了一些功能模块,那么建议选择的负载均衡设备4/7层性能为真实性能需求的3倍。 6) 考虑到设备需要轻载运行才能更加稳定,所以有可能的话在以上基础上再增加30%的性能。 7) 如果还要满足未来几年的发展需求,在以上基础上还要留出未来发展所需要增加的性能。 8) 不同负载均衡设备厂家由于不同的架构,使得某些设备在复杂环境下可能也表现的比较优秀,这个客户可以对比判断,但总体来说,以上建议适合于所有厂家的设备。
-
ICP/IP地址/域名信息备案管理系统 进行 系统升级
要升级了,拭目以待 尊敬的用户: 2017年12月15日-2017年12月18日,工业和信息化部“ICP/IP地址/域名信息备案管理系统”进行 系统升级。在此期间,阿里云代备案管理系统将同时关闭进行系统维护(具体关闭时间:2017年12月 15日17:30至2017年12月18日09:00)。届时您将不能登录备案系统提交或修改备案信息,同时将暂停 向各省通信管理局提交备案信息审核。2017年12月18日09:00系统恢复运行后,阿里云会尽快将您的 备案信息提交各省通信管理局审核。 紧急事宜,请咨询备案客服电话:95187转3
-
docker Alpine镜像的中国时区东八区设置
Dockerfile修改 增加安装tzdata包 在安装包时安装tzdata安装包,并且在构建成功后不能清理此安装包 #定义环境变量 ENV TIME_ZONE Asia/Shanghai #dockerfile增加命令 RUN \ … #安装tzdata安装包 && apk add –no-cache tzdata \ 增加时区配置 安装此安装包后,会在/usr/share/zoneinfo目录下生成各时区配置信息,Alpine目录并无timezone及locatime配置,此时我们需要将时区值覆写至Alpine的timezone及localtime配置中,命令如下: RUN \ … #安装tzdata安装包 && apk add –no-cache tzdata \ #设置时区 && echo “${TIME_ZONE}” > /etc/timezone \ && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \
-
nginx 1.13 see security.limit_extensions 错误解决办法
server{ listen 80; server_name moneyslow.com; access_log /data/logs/nginx/moneyslow_access.log main; error_log /data/logs/nginx/moneyslow_error.log; index index.php index.html; root /var/www/html; if ($request_uri ~ ” “) { …
-
docker 删除 状态 exited的容器
docker rm $(docker ps -q -f status=exited) docker rm $(docker ps –all -q -f status=exited)
-
从DigiCert对赛门铁克的证书业务进行收购看阿里云和腾讯云的后台人性化提示
12月初开始DigiCert开始对赛门铁克的证书业务进行收购的技术升级,国内的免费证书受影响很大。阿里云提示比较人性化,告诉确切的时间,而且将免费证书服务进行下架。腾讯云比较暧昧,后台申请后一直让等,告诉是用户的配置不对,申请不过。其他数字证书提供商全线完蛋。 阿里云:【通知】赛门铁克DV证书(包括免费证书)调整为交叉根证书,接口调整时间为2017年11月27日~2017年12月17日,在此期间Symantec DV证书可能无法签发,介时请选择其它类型,或者其它品牌证书。 腾讯后台: 腾讯云后台[/caption]
-
[WARNING]: Empty continuation lines will become errors in a future release.解决办法
docker for mac 下版本: $ docker –version Docker version 17.09.0-ce, build afdb6d4 编译镜像出现错误: [WARNING]: Empty continuation lines will become errors in a future release. 解决办法: 去掉RUN里的注释即可。
-
nginx标准日志格式
Nginx 日志相关配置有 2 个地方:access_log 和 log_format 。 默认的格式: access_log /data/logs/nginx-access.log; log_format old ‘$remote_addr [$time_local] $status $request_time $body_bytes_sent ‘ ‘”$request” “$http_referer” “$http_user_agent”‘; 相信大部分用过 Nginx 的人对默认 Nginx 日志格式配置都很熟悉,对日志的内容也很熟悉。但是默认配置和格式虽然可读,但是难以计算。 Nginx 日志刷盘相关策略可配置: 比如,设置 buffer,buffer 满 32k 才刷盘;假如 buffer 不满 5s 钟强制刷盘的配置如下: access_log /data/logs/nginx-access.log buffer=32k flush=5s; 这决定了是否实时看到日志以及日志对磁盘 IO 的影响。 Nginx 日志能够记录的变量还有很多没出现在默认配置中: 比如: 请求数据大小:$request_length 返回数据大小:$bytes_sent 请求耗时:$request_time 所用连接序号:$connection 当前连接发生请求数:$connection_requests Nginx 的默认格式不可计算,需要想办法转换成可计算格式,比如用控制字符 ^A…
-
Lua包管理工具Luarocks是干什么的?
1. Luarocks是什么? 2. Luarocks有什么用? lua这种解释性的语言,其代码的运行必须要有一个运行环境才行,这个运行环境就是能够解释代码的代码解释器——-虚拟机,就像java,ruby,go语言之类一样,都要由虚拟机来解释执行其代码,Lua这种解释性的语言自然也需要这种虚拟机了。上一篇介绍的,lua环境的搭建,其实就是在做一件事情—-编译出lua的虚拟机。 任何一门语言都有很多的依赖库,包括编译型的语言和解释性的语言都一样,需要库函数来支持其功能的扩展或者是功能的完备性实现。像ruby就有很多的gem包,这个gem包就是ruby这门解释性语言的库。 Lua程序的运行,也需要很多的库函数的支持,例如网路函数库、字符串处理函数库等等。在lua的虚拟机执行lua程序的时候,如果遇到require “XXXXX”,那么虚拟机就知道要去相应的地方去找这个包(库函数的集合),那么去哪里寻找呢?这个寻找路径如果是绝对路径,那么虚拟机自然可以找到,但是如果只是一个包名,那么虚拟机就要依赖于一个找寻路径规则来找寻该包了,类似于C语言中的INCLUDE_PATH这个机制。这个虚拟机默认的找寻路径可以在编译虚拟机的时候设置,也就是在搭建lua运行环境的时候来设置这个路径,在下载下来的lua虚拟机的源代码中,有一个.h文件,叫做luaconf.h,这个文件里面有很多配置虚拟机属性的配置项,这里面有一个宏定义叫做LUA_PATH_DEFAULT,它就是lua的虚拟机去找寻lua包的路径,还有一个路径就是LUA_CPATH_DEFAULT,它是告诉lua虚拟机去找寻C动态库的路径。 结论:lua的执行不仅需要虚拟机,还需要依赖一些库(lua叫做包),虚拟机会根据一套路径找寻规则来找这些包。 既然有包,那根据我们的不同需求,就会有很多的包,这些包辣么多,有些要升级,有些要删除,有些要降级之类的等等,有一些包还有依赖关系,非常麻烦。。。。这样的话,对这些包的管理这个新的需求就出现了—-管理lua的包。so,Luarocks就出现了,它就是专门管理lua的包的一种工具——-包管理器。它可以帮助我们下载、查找、删除我们需要的包,一句话,帮助我们方便地管理这些lua的依赖包。 什么是Luarocks: Luarocks是一个Lua包管理器,基于Lua语言开发,提供一个命令行的方式来管理Lua包依赖、安装第三方Lua包等,社区比较流行的包管理器之一,另还有一个LuaDist,Luarocks的包数量比LuaDist多。 源码安装部署Luarocks wget http://luarocks.org/releases/luarocks-2.2.2.tar.gz tar zxvf luarocks-2.2.2.tar.gz cd luarocks-2.2.2 ./configure –help configure help查看所支持的安装配置,这里我们主要关注以下两个 –prefix=DIR …
-
docker 管理界面 portainer 的启动 (管理swarm mode 集群)
portainer: https://portainer.readthedocs.io/en/latest/deployment.html 只在miji0qamdnvkrinj009qa77yy 上运行portainer: docker service create \ –name portainer \ –publish 9000:9000 \ –constraint ‘node.id == miji0qamdnvkrinj009qa77yy’ \ –mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \ –mount type=bind,src=/data/portainer/data,dst=/data \ docker.ifeng.com/portainer/portainer \ -H unix:///var/run/docker.sock 其他约束用法: –constraint ‘node.id == asdfasdfadf’ –constraint ‘node.role…
-
Mac 安装homebrew 并利用brew安装wget
Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,可以说Homebrew就是mac下的apt-get、yum神器 Homebrew安装 Homebrew的安装非常简单,打开终端复制、粘贴以下命令,回车,搞定(请放心使用,原汁原味的官方安装方法搬运) ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” Homebrew使用 搜索软件:brew search 软件名,如brew search wget 安装软件:brew install 软件名,如brew install wget 卸载软件:brew remove 软件名,如brew remove wget
-
windows2012强行安装.NET Framework 3.5
Enable .NET Framework 3.5 by using the Add Roles and Features Wizard (Windows Server 2012 only) You can use Server Manager to enable .NET Framework 3.5 for a local or remote installation of Windows Server® 2012. Requirements Windows Server 2012 Installation media Administrator user rights. The current user must be a member of the local…
-
max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
错误记录 max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] 解决办法 先解决第一条错误 max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] 原因分析: 操作系统的vm.max_map_count参数设置太小导致的 解决办法: 这里我们可以直接修改docker本身的参数,当然也可以直接修改宿主机本身的配置文件,需要注意的是在docker 容器中执行 sysctl -w vm.max_map_count=655360 会提示错误:…
-
如何在docker容器里手动重启php-fpm
php-fpm is a process manager which supports the USER2 signal, which is used to reload the config file. From inside the container: kill -USR2 1 Outside: docker exec -it <mycontainer> kill -USR2 1 Complete example: docker run -d –name test123 php:7.1-fpm-alpine docker exec -it test123 ps aux docker exec -it test123 kill -USR2 1 docker…
-
AB — APACHE自带的压力测试工具 (APACHE BENCHMARK )
简介 ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。 通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。 一个简单的例子 /*在这个例子的一开始,我执行了这样一个命令 ab -n 10 -c 10 http://www.google.com/。这个命令的意思是启动 ab ,向 www.google.com 发送10个请求(-n 10) ,并每次发送10个请求(-c 10)——也就是说一次都发过去了。跟着下面的是 ab 输出的测试报告,红色部分是我添加的注释。*/ C:\Program Files\Apache Software Foundation\Apache2.2\bin>ab -n 10 -c 10 http ://www.google.com/ This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Copyright 1997-2005…