Vesta 主机控制面板

http://vestacp.com/

Vesta,是一个非常简单明了的服务器主机控制面板界。

它速度快,易于使用
安装很简单,界面友好
无需过多配置即可使用
轻形、 快速,资源占用少。

# 当前支持的操作系统:
# RHEL 5, RHEL 6
# CentOS 5, CentOS 6
# Debian 7
# Ubuntu 12.04, Ubuntu 12.10, Ubuntu 13.04, Ubuntu 13.10, Ubuntu 14.04

多语言界面:英语,法语,德语,荷兰语,挪威语,芬兰语,瑞典语,西班牙语,葡萄牙语,意大利语,希腊语,中国,台湾普通话,印度尼西亚,罗马尼亚,波黑,捷克,匈牙利,乌克兰,俄语,土耳其语,阿拉伯语

安装 Vesta 控制面板

1. Root用户登录 SSH
ssh root@your.server-name

2. 下载安装脚本
curl -O http://vestacp.com/pub/vst-install.sh

3. 运行脚本
sh vst-install.sh

卸载 Vesta 控制面板

1. 停止 vesta 服务
service vesta stop

2. 移除 vesta 软件包和软件资源库
RHEL/CentOS:
yum remove vesta*
rm -f /etc/yum.repos.d/vesta.repo

Debian/Ubuntu:
apt-get remove vesta*
rm -f /etc/apt/sources.list.d/vesta.list

3. 删除数据文件夹
rm -rf /usr/local/vesta

你也可以考虑删除管理员用户帐户和其 cron 作业。

Reddit之训 – 关于的网站建设和架构好译文

Reddit之训: 月浏览量从100万到10亿的陷阱

  • 一篇很好的网站建设和架构的翻译文章。

Jeremy Edberg,reddit正式聘用的第一位员工,在RAMP大会上做了一个极其精彩的演讲《Scaling Reddit from 1 Million to 1 Billion–Pitfalls and Lessons》,传授了许多如何创建一个成功社交网站的经验。

jeremy借用了褒贬参杂的方式来总结经验教训,他分享了在推广Reddit过程中所犯的比比错误,但也让我们看到他们做出的正确抉择。不过有点令人吃惊的是,jeremy现在是Netflix的可靠性架构师。所以从他的演讲中也可感受Netflix的一些观点。

令我印象深刻的几个教训是:

SSD看做是便宜的内存(RAM),而不是昂贵的硬盘。

reddit因为数据库的缘故从机械型硬盘升级到固态硬盘(SSD)后,其服务器数量从12台降为1台,且还有极大的空间富余。SSD虽比机械式硬盘贵了四倍,但是你会得到16倍的性能提升,真是物有所值。

给用户一点点权力,看看他们怎么做,然后把其中的好点子变为网站的功能。

reddit从用户那里所学极为丰富,且其网站的流畅运作很大程度上倚赖其用户,这是我获得的最大收获。用户会告诉你很多你不知道的事情,reddit gold就是个很好的例子,刚开始它只是社区里大家开的玩笑,reddit将其兑现为产品,并深得用户喜爱。

项目开始时就建设一个可扩展性架构是不必要的。

开始时你并不会知道网站将来的功能集,所以你也不会知道你有哪些扩展方面的问题。等到你的网站开始壮大时,你自然就可以了解网站会在哪些方面有扩展问题。

把未登录用户当作二等公民。

通过总是给未登录用户返回缓存内容的做法,reddit将包袱扔给了Akamai而自身的流量畅通,这种做法使其网站性能大大提升。

Jeremy的分享远不止于此。从reddit扩展初期的错误中我们能学到的经验教训良多,这里是我对Jeremy演讲的一些释读:

统计数据

访问流量大约每15个月翻一番。

上个月,来自177个不同国家的 67,328,706名独立访客浏览了reddit网站上 4,692,494,641个页面。这个演讲是在reddit的第10亿页面浏览节点完成时进行的,其目前架构与之前架构的差异无法确认。

28名雇员。

每名雇员应对大约240万独立访客。(链接)

数以千计的志愿者版主。

在2012年时,他们用240台服务器来支撑每月20亿的页面浏览量和Postgres里的2TB数据。所有高访问率数据都从EBS转移到本地临时磁盘(以保证网站运行流畅)。

公司源起

Reddit始于2005年。创始人首先带着“通过短信点餐”的点子去寻求Y Combinator的资金支持但被拒绝,他们回头和Paul Graham(Y Combinator的创始人,美国著名程序员、风险投资家、博客和技术作家)讨论并产生了开发互联网网页建设的点子,即reddit。那时他们并不知道掘客(Digg)的存在。

从数据中心开始,随后逐渐将功能转移至亚马逊弹性计算云(EC2)。

2006年,开始通过EC2使用S3提供存储和服务标志。

2007年,开始使用S3支持缩略图服务。

2008年,以vpn通道连接数据中心的方式在EC2上进行批处理。

2009年,整站使用EC2服务。网站停运整整一天,将数据全部迁移到EC2。这是《数据引力》的重大案例,随后还会谈到。

EC2

迁移到EC2的原因

不断堆叠机柜并不有趣。不想租用更多的机柜,买更多的服务器。

建立数据中心,早期数据的增长是无法预测的。

对于一个4人小组而言,成本相对降低了。亚马逊的EC2比他们在San Francisco的数据中心价格便宜了29%。

EC2不是万能的。如果你受够了高网络延迟和邻居发出的噪音,考虑下迁移到EC2上。一个好处是网站可以自由的壮大。

熟悉EC2上的资源限制

所有的资源对每个帐号都有限制。

亚马逊也不清楚其中的一些限制是什么。

跟踪限制,在你需要的时候扩大限制范围。

捕获异常以发现何时临界条件被触发。

架构

Reddit的架构是很直观的。**用户连接到一个可以与应用纽带直接通话的网络纽带。这个应用纽带又与memcache, Cassandra, 还有 Postgres通话,Postgres使用的是一个主从关系网络。这是一个使用Cassandra 和 Postgres的批处理系统。

相比较而言,Netfli使用的是一个服务型的架构,各部分通过REST API相互之间通话。

优点:方便自适应规模,因为只有服务器需要调整规模;更容易规划容量;错误更容易找出,因为他们在REST框架里是独立的;变化效果十分精确;本地缓存更加高效。

缺点:需要多个Dev或者Dev团队在多个服务器上工作,所以人工成本增加;需要一个公共开发平台避免重复工作;对于一个小团队来说,管理成本很大。

Postgres是一个非常优秀的数据库**他可以创造出十分优秀,快速键值储存的数据库。

邮件系统是一个大问题** 信息传送很难弄好,开始的时候可以用他们自带的邮件系统,但是现在可能要用专门邮件系统提供商的服务了。

队列是救世主** 在组件至今传递任务的时候,放入一个队列里。你将会得到一个短小精悍的缓冲器。(Reddit用的是[RabbitMQ](http://www.rabbitmq.com/))

混用HAProxy和Nginx** 有些阻塞是相互的。对于负载均衡尝试Nginx无效之后可以试试HAProxy(在负载均衡崩溃的时候)。他对于L7负载均衡很有用,Nginx仍然可以用来终止SSL和服务静态内容。

代码

框架。 使用Pylons (Django太慢了),它就是一个基于Python的框架。从一开始,它就很容易上手。由于不匹配你的用例,最终它们总会出问题。Pylon最终做出了很多改变,(原来)它升级到新版本是很困难的(现在已经修复这个问题)。(现在)可以使用Pyramid (Pylons的新名字)。

基于线程的事件? 基于线程可以提前依大小排列,但是排列可能是错误的。基于事件可以处理更多的连接而不必在遇到瓶颈时继续陷在瓶颈中。你希望花更多的时间去规划线程池的尺寸或处理突然遭遇到的瓶颈吗?

开源有益。 Reddit是在开源代码上构建的。 不需要付费的软件不错,尤其是在开始的时候。

数据

数据将是你的公司最重要的资产Facebook, Google和Flickr这样的公司的根本就是数据。

沉重的数据。当你把数据放在一个地方,你就需要在这个地方放置你的应用。所有的应用都是围绕数据进行的。数据形成了一个引力中心,其他东西都要向它靠近,因为数据最难移动,而且数据量越大越难移动。目前,把数据移出EC2非常的贵。这就是 EC2 存储数据免费,迁移数据收费的原因。他们想要你把所有的数据都存放在云服务器上。

关系型 VS 非关系型。reddit 的大部分数据都是键值对,存储在Postgres数据库中。所有涉及到金钱的数据存储在关系型的数据库中,因为可以使用事务和简便地分析。

Postgres 是防弹的。它像岩石一样坚硬,它自己从未出过问题。即使有问题,也是其他它周边系统的问题,比如使用Python编写的复制系统。很难找到熟悉Postgres的专家(因为它不需要专家解决奇怪的问题)。

键值存储选择了Postgres而不是Cassandra是因为Cassandra当时并不存在,而且Postgres速度非常快,还已经原生支持键值。

分库分表。写操作被拆分到四个主数据库中:连接、帐户、子自动、评论、投票、其它。

每一个主数据库都有从数据库。投票数据库只有一个主库和一个从库。评论数据库有一个主库和十二个从库。

如果可以,尽量避免直接从主库读取数据,从从库读取数据以使主库专用于写入数据。

客户端代码负责从库间负载均衡。如果一个从库响应较慢,访问另一个从库。

实现了一个数据访问层,名称为thing。

这种方法已经使用了很长时间。混合使用数据库分库分表,主从读写分离,跟踪数据读取性能保持负载均衡。

Cassandra

快速写入,快速负查询,简单高可扩展性,无单点故障问题

在 Netflix(美国一家视频网站),数据分散地存储在三个不同的区域。每一个区域都有全部区域的数据。即使一个区域的数据丢失了,网站仍然可以正常运行。

把投票数据转换后存入Cassandra 是 reddit 一次巨大的进步。Cassandra 的 bloom 过滤器显著地提高了负查询的效率。比如它可以很快查询出你没有投票过的意见,因此负查询的结果显示很快。

社会

在2008年,reddit开源了

用户可以阅读代码,从而知道没有人破坏投票结果

用户可以增加他们早就想增加的功能,reddit会提供运行平台。开起来,用户并不是不想写代码。

招聘。别人会了解代码,所以更容易招聘。推销自己的想法来更好地合作

蠕虫事故。 有人指出了如何在一个网页中注入多余的javascript代码来写一个蠕虫的方法。这个方法并没有打算被泄露出去,但是最终还是泄露了。在那一天,创始人之一正在结婚,整个团队都在从婚礼返回的飞机上。但是,一个用户已经快速响应,提交了一个阻止蠕虫传播的补丁。开源可以使得在危机时刻社区可以提供帮助。

reddit怎么赚钱?

侧边条广告,自助广告,推销,reddit币,市场。

注意,reddit还没有实现盈利。这带来一个问题,像reddit这样的云端站点能否实现盈利?

另外,reddit现在不再属于Condé Nast,它是独立的 。

错误

没有考虑迁移到EC2之后增加的延迟。 在数据中心,机器之间的访问时间都是亚毫秒级,所以加载一页可以调用1000次memcache。但是在EC2,情况发生了变化, Memcache的访问时间增加了十倍,导致原来的方法行不通了。解决方案是批量调用memcache,这样一次请求可以得到大量的结果。

过于相信承诺。 Amazon并不总是按照承诺交付,所以有时要圆滑一些处理。设计的时候就要考虑错误,而不是试图修复错误。(这里没有参考文献,也许EBS是个例子?)

在生产环境中使用最新的产品。当Cassandra还处于开发周期的早期的时候,我们就开始使用它了。它现在很棒,但是当时有很多问题。

早就应该把更多的工作量迁移到client端。 服务器端做了很多页面渲染的工作,但是这些工作应该被推到客户端。Facebook是这方面的大师。你会得到一个矩形,和很多空的div,然后通过API调用来填满这些div。这就是他们早就希望reddit可以做的事情。这可以让我们的规模更快地增长。而且这也对调试有好处,因为我们很容易知道哪个API出了问题。

没有足够的监控,而且用了一个可视化效果不太好的监控系统。 最开始我们使用Ganglia,它可以展示非常漂亮的图表,但是它比较难用,而且变化太快,尤其是在一个实例进进出出的虚拟机环境中。

没有让数据过期。 在reddit你能看到从最初开始的评论。后来他们开始增加一些限制,使得你不能对旧的评论投票,也不能回复旧的帖子。这会造成数据量越来越大,越来越难把热数据放在数据库里面。

没有使用一致性哈希算法。Not using consistent hashing. 当往cache中hash数据的时候,可能会出现这样的问题,当你增加更多的cache的时候,你的数据还会被hash到原来的cache中,不管你有多少chache。这样增加cache的时候,你无法保证负载均衡。一致性hash是解决问题的办法。我们迁移到Cassandra来解决这个问题。

教训总结

最关键的是在用户遇到问题之前就找到系统的瓶颈。

使用代理服务器不再是拓展的良方。过去可以根据用户访问的URL来分流。Reddit曾经也有过一个系统用于监控每个URL上系统服务的时间。用户请求会根据访问的URL的不同,进入到不同的响应通道。但是整个系统的响应速度总是此起彼伏。根据平均响应时间来分流以达到系统的巨大提升,已经完成成为过去时了。

让一切自动化。 如果你能对你的基础架构像对待你的代码周全,可以扩展的。那么所有事情都应该是其他的所有工作也应该是可以自动化配置的。

项目开始时就建设一个可扩展性架构是不必要的. 在项目开始的时候你不知道它会有什么特性,那么你只是想知道拓展会有什么问题。但是等到你的站点扩大后,你就能看到拓展的具体问题在什么地方。

不要一开始就使用面向服务的架构。记住,面向服务对一个中大型网站来说是很好的。但如果是起步期的站点就有点太超前了。

不要追求潮流。 只有一小部分的流行技术是可行的,比如,node.js这样的。

对所有的功能设限。 对所有会不断重复发生的事件设限制,必要的时候放宽或降低限制标准。如果添加限制,会排斥出一部分用户,但是保护了系统。举个子版块上传文件的例子。有用户指出他们上传的文件数多到可以损坏系统。也不要允许上传巨型文本。 其他人会教你怎么让你接受5GB的文本文件。

多手准备. 当在设计阶段的时候就假定以后系统要不断扩展的时候,那么开始的时候就不要只准备一台应用服务器,一台数据库和一个缓存了。那么以后做横向拓展的时候会容易的多。

用C语言重新Python代码。 随着reddit的不断拓展,大多数重复的功能都用C语言重写了原来的Python代码,且获得了很大的速度提升。特别是过滤器、markdown标签的渲染及memcache的调用。用C重写Python代码的优势是简单高效。

保证数据库设计尽可能的无模式。 这样会使得在添加新特性的时候变得简单。你所做的只是添加一些新的属性而不用修改表结构。

过期数据。 停用那些老旧的线程,创建好一个完整的页面并添加到缓存中。这就是处理那些可能导致你数据库奔溃的老旧数据的方式。同样的,不要允许对很久以前的评论点赞或者加平路,用户几乎不会注意到的。

SSD看做是便宜的内存,而不是昂贵的硬盘。 当reddit把数据库的存储设备从机械型硬盘升级到固态硬盘(SSD)后,服务器数量从12台降为1台,且响应还更快。SSD虽比机械式硬盘贵了四倍,但是你会得到16倍的性能提升,真是物有所值。Netflix板块中的一些最大Cassandra节点都是采用的SSD存储,性能得到了巨大的提升。

每个工具都有不同的适用场景。 Memcache中的数据是不做持久化的,但是非常快,那么投票数据存在它里面可以是页面的渲染以最快速度完成。Cassandra是持久化的,而且快,布隆过滤器的使用也是它可以找出没有命中的查询,所以使得它很适合存储没有在memcache中存储的投票数据的副本。Postgres是非常可靠的关系型数据库,可以用来存放Cassandra中投票数据的备份(Cassandra中的所有数据在必要的情况下可以从Postgre中获取),在做批量操作的时候,有时也需要依赖关系数据库的功能。

把未登录用户当作二等公民。 过去80%的请求来自未登入的用户,现在是接近50%。通过总是给未登录用户返回缓存内容的做法,reddit将包袱扔给了Akamai而自身的流量畅通,这种做法使其网站性能大大提升。附带的好处是,如果reddit当机了,你没登入的话你也许就察觉不到。

使用队列。 投票、评论、缩略图、预查询、垃圾评论处理及纠错等等都放在队列中处理。通过监控队列的长度就能让你发现问题。附带好处是,使用队列后有些问题对用户会变得透明,像投票请求,即使系统没有即时响应,用户也不会察觉。

将数据放在多个可访问的域中。

避免在一个实例中保存状态。

频繁对EBS硬盘做数据快照。

不要在实例中保存秘钥。

按安全策略组分拆功能。

提供API。开发人员可以在你的平台上开发应用。像reddit手机应用,就是由公司外的开发人员通过调用API开发的。

在你自己的社区做一个积极分子。

让用户为你工作。 网上用户的输入总是充满欺骗性、无用的、伪造的,但是对于reddit,处理这些垃圾信息的大部分工作都由志愿者完成了。这就是reddit能保持小团队却能把工作完成的出奇的好的原因。

给用户一点点权力,看看他们怎么做,然后把其中的好点子变为网站的功能。比如,当子版块可以定制CSS的时候,他们看到用户在干吗,以及为其他所有用户提供的一些功能。这也使用户在reddit做一些事感到兴奋,因为他们喜欢控制的感觉。还有很多这样的例子。

倾听用户的声音。用户会告诉你许多你可能想知道但是又不知道的事情。比如,reddit币最开始就是社区里面的一句玩笑话。现在他们做成了产品,而且用户很喜欢。

Kloxo-MR 中安装 thirdparty phpMyAdmin

/thirdparty/phpMyAdmin/

File not found.

yum install kloxomr-thirdparty-phpmyadmin

安装 Kloxo-MR 7.0.0.b 后发现在面板中点击20150425021410

Url地址 – /thirdparty/phpMyAdmin/

File not found.

打开后找不到文件:

20150425020556

之后在服务组件中也看不到有phpMyAdmin 的信息。

sftp上服务器上的 Kloxo下也确实没有.  也许thirdparty就是要自己装把, 那么就装吧.

如下:

yum list kloxomr-thirdparty*

| 列出以 kloxomr-thirdparty 打头 记得后面有个星号.

kloxomr-thirdparty-phpmyadmin
kloxomr-thirdparty-jcterm
kloxomr-thirdparty-sshterm-applet

,找到全部的kloxomr第三方插件, 然后安装 phpMyAdmin

yum install kloxomr-thirdparty-phpmyadmin

20150425024041

如此,已经OK!

Google搜索技巧

搜索引擎在今天其实就是使用网络的基本功,也是在线一切工作的得力助手。
而很多人依然不知道如何使用搜索引擎查找想要的东西,经常会有人打电话问你帮他找些什么。
所以把这个谷歌文档发给他就可以了。

了解一些帮助您轻松通过 Google 找到信息的提示和技巧。

提示 1:使用简单的搜索字词

无论要搜索什么,都请先用简单的字词进行搜索,例如最近的机场在哪里?您随时可以根据需要添加一些描述性字词。

如果您要查找特定地点的某个场所或商品,可添加该地点名称。例如,南京面包店

提示 2:通过语音搜索

不想打字?点击 Google 应用或 Chrome 搜索框中的麦克风图标 ,通过语音执行搜索

提示 3:认真选择措辞

在确定输入搜索框中的字词时,尽量选择要查找的网站上可能会出现的字词。例如,不要使用我的头很痛,而要使用头痛,因为医学网站上往往会使用后者。

提示 4:不用担心输入方面的琐事

  • 拼写。 无论您的拼写是否正确,Google 的拼写检查工具都会自动使用给定字词的最常用拼写形式。
  • 大写。 搜索 QQqq 所得到的结果是一样的。

提示 5:查找快速解答

对于您进行的许多搜索,Google 都会替您完成相关工作,并会在您输入搜索字词后在搜索结果页上显示相关解答。有些功能(例如查询与球队有关的信息)并非在所有地区都提供。

  • 天气:搜索天气可查看您所在地点的天气信息,如果在“天气”后加上城市名(例如天气北京),则可查看相应城市的天气信息。
  • 字典:在任意字词前加上 define 即可查询其定义。
  • 计算:输入数学公式(例如 3*9123)或求解复杂的图形公式。
  • 单位换算:输入任何换算内容,例如 3 美元兑换欧元
  • 体育:搜索球队的名称,即可查看相关赛程和比赛得分等信息。
  • 快讯:搜索名人、地点、电影或歌曲的名称可看到相关重要信息。

搜索中的标点、符号和运算符

您可以使用特殊的字符和字词来获取更具体的搜索结果。Google 会忽略大部分的标点符号(以下示例除外)。例如,搜索字词狗! 会被 Google 视为

Google 搜索可以识别的标点和符号

即使以下符号均受支持,在您的搜索中加入这些符号也并不一定会改善搜索结果。如果我们认为该标点不会为您提供更好的结果,则会显示出不含标点的搜索字词所对应的建议结果。

请注意:在使用符号进行搜索时,请勿在符号和搜索字词之间添加空格。我们可以识别-狗中的符号,但无法识别- 狗中的符号。

符号 用途
+ 搜索 Google+ 网页或血型 示例:+Chrome 和 AB+
@ 查找社交标记 示例:@agoogler
$ 查找价格
示例:尼康 $400
# 查找热门主题标签以搜索热门话题 示例:#throwbackthursday
- 移除字词在某个字词或网站之前添加一个短横可排除所有包含该字词或网站的搜索结果。在搜索有多种含义的字词(例如“汽车品牌捷豹”和“动物捷豹”)时,这种方法尤为实用。

示例:捷豹速度 -汽车熊猫 -site:wikipedia.org

连字如果多个字词以短横相连,Google 便会知道这些字词是紧密关联的。

示例:twelve-year-old dog

_ 用于连接两个字词,例如 quick_sort。 您会在搜索结果中发现,这对字词要么组成一个字词 (quicksort),要么由下划线相连 (quick_sort)。
" 如果您将字词或词组置于引号中,则搜索结果中将仅显示以下网页:包含引号中的字词且字词顺序也与引号中相同。 请注意:请仅在需要搜索某个精确字词或词组时使用这种搜索方式,不然,可能会错误地排除掉很多有用的搜索结果。 示例:"想象一下所有人"
* 在搜索中添加一个星号,以表示任何未知或不确定的字词。与引号结合使用,可以查找具体词组的不同变体,或记住词组中间的字词。 示例:"省*就是赚*"
.. 使用不含空格的两个半角句号 (..) 隔开多个数字,即可查看日期、价格和尺寸等方面的数值在指定范围内的搜索结果。 示例:相机 $50..$100

使用搜索运算符缩小搜索结果范围

搜索运算符是可添加到搜索字词中以帮助缩小搜索结果范围的字词。不必担心,您不一定要记住每个运算符,因为您也可以使用“高级搜索”页面来进行这种搜索。

请注意:使用运算符进行搜索时,请勿在运算符和搜索字词之间添加空格。搜索 site:nytimes.com 可以获取相关搜索结果,而搜索 site: nytimes.com 则是行不通的。

运算符 用途
site: 仅从特定网站或网域获得搜索结果。例如,您可以查找 NBC 网站或任何 .gov 网站上所有提到“奥运”的内容。 示例:olympics site:nbc.com 和 olympics site:.gov
link: 查找链接到某个特定网页的页面。例如,您可以查找链接到 google.com.hk 的所有页面。 示例:link:google.com.hk
related: 查找与您已浏览过的网址类似的网站。当您搜索与 time.com 相关的网站时,会找到您可能感兴趣的其他新闻出版物网站。 示例:related:time.com
OR 如果您想搜索可能只包含多个搜索字词中某一个的页面,可以在这些字词之间加上 OR(大写)。如果不加 OR,您的搜索结果中通常只会显示与这些字词都匹配的页面。 示例:世界杯举办地2014年OR 2018年
info: 获取某网址的相关信息,包括网页的缓存版本、相似网页和链接至该网站的网页。 示例:info:google.com
cache: 查看 Google 上次抓取网站时网页的外观。 示例:cache:washington.edu

继续阅读“Google搜索技巧”

VPS下对mysql内存性能的优化

VPS的内存对性能至关重要,所以很有必要优化一下。

看了几篇针对vps小内存优化的文章,于是自己也动手参照优化下自己的mysql。

修改过调整好的 my.cnf ,service mysqld restart 启动时报错。

查看log,发现 skip-innodb / skip-bdb / skip-locking,这几个参数有问题。

 

继续学习,查资料,得知 使用的参数都是老版本的参数,mysql5.1对应的为:

skip-innodb  –>  loose-skip-innodb

skip-locking  –> skip-external-locking

skip-bdb (已经废除了skip-bdb这个参数!)

 

配置文件: /etc/my.cnf

# low memory stuff – Mr.Tang
# Tue May 26 22:23:15 CST 2015

[mysqld]

loose-skip-innodb
skip-external-locking
skip-host-cache
skip-name-resolve

character_set_server = utf8
default-storage-engine = myisam

key_buffer_size = 256M
key_buffer = 256K
max_allowed_packet = 1M
myisam_sort_buffer_size = 8M
net_buffer_length = 128K
query_cache_size= 16M
read_buffer_size = 1M
read_rnd_buffer_size = 4M
sort_buffer_size = 1M
table_cache = 4M
table_open_cache = 16M
thread_cache_size = 8M
thread_stack = 131072

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

优化WordPress,解决加载慢,等待google引用地址超时问题

近几个月发现空间经常很慢,特别是WordPress响应非常迟钝,但一直懒得动它。 前几天实在受不了,正巧看到一个特价的vps,就用paypal支付了$,买了一个. 搞好了系统,配置好环境,就在准备迁移WordPress数据的时候,偶然看到一个文章,说近来几个月很多人的WordPress都是变的很慢。 查了查相关文章,跟google被墙有关,原因是wp的字体加载的都是 在google托管的,还有些js,css脚本等等,比如:

<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400,600&subset=latin,latin-ext' rel='stylesheet'>

<script src="http://html5shim.googlecode.com/svn/trunk/html5.js">

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=3.4.2'></script>

这样 googleapis.com,googlecode.com 无法联通,自然相关引用的字体,脚本也都无法加载,只有等待主机超时, 所以WordPress都变的很慢。 知道问题所在就处理它。

 [ 只解决最影响加载速度的字体就可以了 ]

1。不使用google字体

编辑主题的 functions.php文件,在末尾添加以下代码:
//禁用Open Sans
class Disable_Google_Fonts {
public function __construct() {
add_filter( ‘gettext_with_context’, array( $this, ‘disable_open_sans’             ), 888, 4 );
}
public function disable_open_sans( $translations, $text, $context, $domain ) {
if ( ‘Open Sans font: on or off’ == $context && ‘on’ == $text ) {
$translations = ‘off’;
}
return $translations;
}
}
$disable_google_fonts = new Disable_Google_Fonts;

这里提供了由360网站卫士CDN驱动的常用前端公共库以及和谐使用Google公共库&字体库的调用方法

下面的方法2,3是使用 – 360网站卫士常用前端公共库CDN服务 替换 google的对应引用地址。

2。手动修改替换引用地址

打开wordpress文件: wp-includes/script-loader.php

搜: fonts.googleapis.com

替换:fonts.googleapis.com替换为 fonts.useso.com ,保存文件,发现问题解决了。

原理就是用360来加速google字体。

速度很好,360的加速很快。

3。使用插件

如何通过第三方Wordpress字体转换插件继续使用Google字体库? (感谢来自淘宝的soulteary童鞋开发了这个插件) 插件说明地址:http://www.soulteary.com/2014/06/08/replace-google-fonts.html 插件下载地址:http://www.soulteary.com/wp-content/uploads/2014/06/Replace-Google-Fonts.zip

—- P.S. 这样暂时就不用站点迁移了. 差点误会了服务商.

解决 webBrowser DocumentCompleted 的多次调用

winform中使用webBrowser抽取页面中的一些数据。断点“webBrowser1_DocumentCompleted”发现,跑进来了好多次。

DocumentCompleted执行多次,跟踪发现ReadyState状态不一样,分别是Intercative和Complete。

而MSDN对这两种状态值的解释是:

  • Complete该控件已完成新文档及其所有内容的加载;
  • Interactive该控件已经加载足够的文档以允许有限的用户交互,比如单击已显示的超链接。

增加判断“ReadyState”之后继续,DocumentCompleted仍然执行了两次,但ReadyState状态一样都是Complete。再查原因。

MSDN对其解释是在多个的帧的情况下DocumentComplete获取触发多次。并非每个框架将触发此事件,但触发DownloadBegin事件的每个框架将触发相应的DocumentComplete事件。

 

最后webBrowser1_DocumentCompleted中的代码是:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            string BrowserUrl = webBrowser1.Url.ToString();

            if (String.IsNullOrEmpty(BrowserUrl)) //检查未赋值或空值
                return;
            if (BrowserUrl.Equals("about:blank")) //是否为空白页
                return;
            if (webBrowser1.ReadyState != WebBrowserReadyState.Complete)  //状态为完成
                return;
            if (e.Url.ToString() != BrowserUrl)  //检查事件url和webBrowser的url
                return;
            if (webBrowser1.DocumentText == "")
                return;

            ... ...
        }

 

还有一点,就是窗体打开就加载webBrowser1,如放在 Form_Load 会使程序界面加载很慢,建议放在 Form_Shown中(每当窗体第一次显示时发生)。

 

解决DirectAdmin(DA) 中 WordPress 更新失败的问题

在DirectAdmin下更新WordPress版本,主题或插件时, 经常出现: “下载失败。 文件流的目标目录不存在或不可写。”的错误提示.

或者是模板,插件”无法删除xxx。”等问题。

这跟文件权限的设置有关,处理方法如下:.

先进入DirectAdmin后台,选择域名站点,在进入”File Manager”.

然后进入“wp-content”文件夹下,勾选”plugins“,”themes“,”upgrade“,”uploads“等有问题的文件夹。

在下面的”set Permission“后设置权限”777“或者”755“, 勾选后面的”Recursive“遍历选项,再点击”set Permission“按钮。

然后可以尝试下更新或删除是否正常。

如果还不行, 可能是文件权限的所有者改变了,可以点击”Reset Owner“,

重置文件所有者再试一次。

一般问题都可以解决了。

—————————————————

再者就是主机服务商的一键脚本安装wordpress时引发的 在DirectAdmin或者cPanel虚拟主机通常带的快速安装wp脚本,如果不进行特殊设置会在wp-config.php文件里面加入 “WP_TEMP_DIR” 属性,此属性虽然有助于确定wordpress下载升级包或者插件时所用的路径但是也有缺点。 也就是说如果你在更换空间时忘记修改了此属性的绝对路径就会出现以上的错误

解决办法是:空间更换完毕后自行修改wp-config里的此项属性所对应的缓存目录的绝对路径,目标文件夹权限设为777。 或者删除类似这样的代码define('WP_TEMP_DIR',      '/home/xxx.com/wp-content/uploads');

另一种:

通过wordpress后台,无法删除插件。甚至通过FTP也无法删除。也就是说删除之后,仍然显示在后台插件列表内。

解决方法: 通过Secure Shell (SSH)删除

这主要是因为插件有隐藏/嵌套的文件,没有出现在FTP.

使用 SSH 访问博客

  1. 通过SSH登录站点。
  2. 使用 SSH 命令浏览 “../wp-content/plugins/”。
  3. 使用 ls -al 查看文件的完全列表。
  4. 通过 rm (文件名)删除部分文件.