一次解决LNMP主机反复宕机问题的记录

新购的一台阿里云主机,几乎每天都会发生MySQL自动停止服务。主机其他部分看来运行都正常,怀疑是哪里设置的不对,但我装完这台LNMP改的默认设置不多,之前也并没有碰到过类似的问题。既然是MySQL停止服务,那么就从MySQL这里找问题,搜索了一个多小时,发现MySQL宕机有很多可能性,一时无法确定。但解决此类问题的关键都是查看错误日志开始。

命令行进入本地MySQL,之后输入密码

mysql -hlocalhost -uroot -p

之后进入提示符mysql>

查看错误日志的位置

mysql> show variables like '%log_error%';

此时获取到了文件位置。查看日志后,发现大部分重复片段是这样的:

2017-07-26 04:34:03 7617 [Note] Plugin 'FEDERATED' is disabled.
2017-07-26 04:34:03 7617 [Note] InnoDB: Using atomics to ref count buffer pool pages
2017-07-26 04:34:03 7617 [Note] InnoDB: The InnoDB memory heap is disabled
2017-07-26 04:34:03 7617 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-07-26 04:34:03 7617 [Note] InnoDB: Memory barrier is not used
2017-07-26 04:34:03 7617 [Note] InnoDB: Compressed tables use zlib 1.2.3
2017-07-26 04:34:03 7617 [Note] InnoDB: Using CPU crc32 instructions
2017-07-26 04:34:03 7617 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2017-07-26 04:34:03 7617 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2017-07-26 04:34:03 7617 [ERROR] Plugin 'InnoDB' init function returned error.
2017-07-26 04:34:03 7617 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-07-26 04:34:03 7617 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-07-26 04:34:03 7617 [ERROR] Aborting

查看详细 »

WooCommerce的虚拟物品订单付款后自动处理订单状态

这应该是一个比较常见的功能需求了,虚拟物品由于不需要进行送货,用户付款后即可算作订单完成,以便网站统计订单后进行更多操作,用户也可能籍此获得一些其他的优惠或者权益。这一切都需要前一个订单在没有人工干预的状态下自动完成。

首先,官方文档中给出了直接完成订单的代码:

1
2
3
4
5
6
7
8
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order');
function custom_woocommerce_auto_complete_order( $order_id ) {
     if ( ! $order_id ) {
         return;
     }
     $order = wc_get_order( $order_id );
     $order->update_status( 'completed' );
}

查看详细 »

七牛CDN防盗链开启后,微信小程序无法加载其资源问题解决

最近在学习开发微信小程序的时候碰到了形形色色的问题,待我有空多整理一些笔记,这次先记录一个简单的。我习惯用七牛CDN作为自己开发的网站静态资源存储分发,并且为每个资源库设置防盗链白名单。在开发小程序之初,我就已经把这两个域名加入到了白名单中:
*.qq.com
*.wechat.com
因此就想当然的以为这样设置,微信小程序读取CND资源就不会有问题。当然,我在开发过程中为了避免碰到这样那样的问题,是先关闭了防盗链的。小程序完成后提交审核,同时我顺手打开了防盗链,刷一下小程序,结果发现所有云上的图片都打不开,开发工具报403错误:
微信小程序无法加载七牛CDN资源问题
查看详细 »

创业公司预算不高,要做网站,找什么样的人最好?

经常听到有人会讨论这类问题 – 作为一家创业公司,没有专人做网站,应该找什么样的人外包网站建设?

一家公司决定要建网站时,他们一般会有这3种选择:

  1. 找建站平台生成网站,自己维护或者购买平台的维护服务
  2. 找广告公司/建站公司服务
  3. 找自由职业的个人或小团队建站

创业公司预算不高,要做网站,找什么样的人最好?
下面我来分析以上各选项的利弊 查看详细 »

用Symantec免费DV SSL证书给网站上绿标,实现全站HTTPS

花了半天时间给本博客实现了全站HTTPS,在各浏览器地址栏里的效果图:
实现全站HTTPS

用的是Symantec的免费DV SSL证书,完成后还是挺有成就感的。HTTPS对个人网站的意义在于可以防止各种DNS劫持,我就碰到过,可以看看这篇文章。如果你的网站开启了电商模式,或者存在敏感的用户数据交互,倒是建议花钱购买一下高级别的证书,增强一下网站的安全性,也可以稍微增加一些用户的安全感。

稍稍记录一下实现过程 查看详细 »

微信OAuth2.0网页受权获取用户基本信息同时获取关注公众号的状态

最近一个项目涉及到一些微信方面的开发,填了一个小坑。采用OAuth2.0网页受权获取的用户基本信息是不需要事先关注公众号的,但有时候我们又需要知道用户是否关注公众号的状态,如果没有关注,则鼓励提示用户关注。

我们知道要获取用户的关注状态,应该用普通接口
https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID
要获得其中的ACCESS_TOKEN,事先用普通接口获得
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
而OPENID则是通过关注该公众号,通过菜单或自动回复等方式获得的。但是如果用户没有关注该公众号,就没有途径赋予他OPENID

而用OAuth2.0网页受权可以在不关注公众号的前提下就获得OPENID,但同时获得的ACCESS_TOKEN却是不能在普通接口使用的。因此解决问题的钥匙就是用普通接口获取一次ACCESS_TOKEN,再用OAuth2.0网页受权获取OPENID,最后再用普通接口获取用户的关注状态以及基本信息(绕个大圈子)。 查看详细 »

Linux主机下WordPress网站无法使用中文站内搜索问题解决

三年前我还在捣鼓用Win主机装WordPress建站的时候,碰到过站内无法使用中文搜索的问题,还记录了一篇笔记,在 这里。自从换了Linux主机后,就再也没有为这个问题发愁过,然而在更新过N次WordPress版本后,最近发现这个问题在Linux主机上居然又重现了。症状就是用英文站内搜索正常,用中文就只会跳到404页,搜索不到任何东西。404返回的搜索关键词是正确的,并未出现乱码,因此可以肯定和之前用Win主机的情况是不一样的。 查看详细 »

WordPress Rest API 学习笔记(一)

接到一个需求,要把公司的一个酒店行业的WordPress网站里的几百家酒店数据导出为CSV文件,以便其他开发人员把它转成需要的格式开发APP。觉得这是一个比较笨的需求,WP是一套十分便捷的CMS,用WP后台管理这些酒店数据很容易,但对方是要拿静态的CSV文件,转格式后,就要导入另一套不如WP好用的后台。同一套数据两边分别管理,实在是浪费人力。我们为什么不能直接通过WordPress后台同时管理网站和APP数据呢?

由这个切入点,让我想起了WP REST API,从最近发布的WP的4.7版开始,已经官方支持REST API,不需要安装任何插件了。这也是现在的技术趋势,使得WordPress不再局限于PHP语言,能够导出JSON数据被任何其他开发语言和平台所使用。

REST API的基本概念就是直接把网站数据通过类似
http://yourdomain.com/wp-json/wp/v2/posts/
http://yourdomain.com/wp-json/wp/v2/pages/
这样的URL转成JSON
这个URL可以再定义得细一些,比如 查看详细 »

定制WooCommerce的用户地址页以符合国内用户使用习惯

接上一篇 定制WooCommerce的账户详情(用户资料)页,增加自定义字段,修改默认字段 后,本文记录一下如何修改WooCommerce用户中心的edit-address以及购买商品结帐页面的字段。所有修改还是为了符合国内用户的书写习惯,把姓名合并成一个字段,去掉email字段,把地址栏从2行变成1行。
修改之前是这样的:
定制WooCommerce的用户地址页以符合国内用户使用习惯 修改前
首先是去掉lastname、city和address_2这些没必要的字段 查看详细 »

定制WooCommerce的账户详情(用户资料)页,增加自定义字段,修改默认字段

WooCommerce是一款非常流行的WordPress电商插件。然而也听到很多人反映,它并太符合中国用户的使用习惯。国内用户的电商网站使用习惯大多是被淘宝培养出来的,因此如果要基于WordPress + WooCommerce搭建一个面向国人的小型电商网站,为提高用户体验,还是要对WooCommerce做不少改造的。在做过N个相关项目后,我觉得有必要分几篇文章,把WooCommerce值得改造的点和改造过程总结一下。我的原则还是能不用插件就不用插件,几十行代码能搞定的事情,肯定不会考虑用插件。本文先说说如何自定义账户中心的用户资料页。

首先,默认的WC用户资料页大致是这样的:

查看详细 »

第 2 页,共 11 页12345...10...最旧 »