尝鲜 Ubuntu 17.04

冲着自带 Kernel 4.10 去的

可以不用 apt-mark 来锁住内核版本,避免更新的时候又自动降级了

不知道是今晚线路波动还是其他原因,升级后,明显感觉 SSH 卡了很多,检查过 BBR 已经开启,起了怪了

wget 一个百兆文件,开 vnstat -l 进行统计

proxy_pass 的结尾要不要 “/” ?

这周有个临时需求,需要在我们的业务上面集成一个合作方的站点,这种事情用 proxy_pass 就非常方便

一开始用的第一个方法,结果一直提示 404,还以为 Location 规则没命中,反复查证,却忘了第一个配置会把 path 给透传到 proxy_pass 端,实际上我一直在访问 http://127.0.0.1:3000/3rd/ ,而这个地址显然是不存在的

后来排查后端的日志才发现,在结尾补上 “/” 后,终于把 /3rd/ 这个路径给吃掉了

愉快的和Gist玩耍

github.com树大招风,国内时不时就不能访问,连里面的Gist也有问题。

WordPress有一个Gist的embed插件,但是这个插件是直接引入Gist的script,这个script是通过document.write()阻塞方式,在当前DOM位置插入Gist定制的内容。

所以,国内访问我博客,如果谋篇文章引用了Gist上面的内容,访问就会被拦掉了。

研究了下Nginx反向代理,用了一个子域名来承载各种代理资源,用一级目录来区分反向代理站点,世界一下子安静了。

整个优化改造过程没WordPress什么事,用Nginx的ngx_http_proxy_module模块做目标站点反向代理,用Nginx的ngx_http_sub_module模块来替换页面中gist.github.com关键字。

折腾一番,Nginx能力又提升了,哈哈。

现在打开还是有点慢,因为代理每次都要重新请求,由于Gist的资源是会更新的,不能直接暴力缓存,还得想想怎么去缓存这种动态数据。

手札《nginx – A Practical Guide to High Performance》

今晚无意发现Nginx官方出了一本Guide to Hight Performance的书,翻了一下,有一些蛮有意思的点。

Virtualhosts 虚拟主机

这段配置,支持用一个server块来配置所有虚拟主机的作用。

只要有域名绑定到该主机上,Nginx就会查找该域名对于的root目录。

跑多个虚拟主机的话很方便,一次定义即可,每次添加新的虚拟主机,只要开目录,配置DNS指向即可,省去了服务器端的解析配置工作。

ngx_http_fastcgi_module的那些事

是什么?

顾名思义,是Nginx用来处理FastCGI的模块。FastCGI是什么?这个以后再讲,可以说的是现在LNMP架构里面,PHP一般是以PHP-CGI的形式在运行,它就是一种FastCGI,我们在进程中看到的PHP-FPM是PHP-CGI的管理调度器。

为什么要详解一下?

因为LNMP不像LAMP,且早期Nginx不支持path_info,导致网上有大量旧版本的Nginx教程干扰视线。

为了更加清晰准确使用LNMP,估需要深入了解一下整个ngx_http_fastcgi_module。 继续阅读“ngx_http_fastcgi_module的那些事”

SPDY/3.1

好不容易等到SPDY进入了nginx的ubuntu官方包,Chrome和Firefox开始不支持SPDY/2协议,必须升级到SPDY/3以上版本。

我就奇怪明明之前SPDY用得好好的,怎么突然就失效了。

到头来还是得用第三方的开发版本源,现在更新到1.5.13,支持SPDY/3.1。

nginx自动补齐结尾斜杠

在Nginx下面,每次访问WordPress的后台,如果不带上结尾斜杠,就会在你访问后台wp-admin/下面的二级页面的时候,出现404错误。

例如访问了http://www.mxgw.info/wp-admin,进入了wp的后台,然后点击任意二级菜单,例如插件。本来是该访问http://www.mxgw.info/wp-admin/plugins.php的,但是由于当前路径是http://www.mxgw.info/wp-admin,少了结尾斜杠,而WP后台的链接用的都不是./这样的链接,而是直接的文件名,导致实际请求了一个不存在的文件http://www.mxgw.info/wp-adminplugins.php。

解决方案:

在nginx的conf配置里面,添加对/wp-admin请求的重定向。

参考来源:

http://codex.wordpress.org/Nginx

申请SSL开启SPDY服务

安装最新版Nginx来支持SPDY

安装新版Nginx的过程看老文章

12月10日的时候,整个站点就已经装上了Nginx 1.4,配置文件里面已经可以开启SPDY功能,不过那时候一直缺少一枚SSL证书。

StartSSL免费证书

早早发现了StartSSL这货,但是之前总是注册失败,再就是打不开。
昨晚突然想起,用Gmail再注册试试,居然成了。

StartSSL的站点,也不知道是不是为了宣传SSL,居然注册帐号不是使用密码登录,而是使用证书登录,原来就是一直没拿到这个证书。

  • 打开www.startssl.com
  • 选择Express lane
  • 按要求进行注册,期间会有两次email验证
  • 获取StartSSL用户登录证书(这个一定要保存,帐号唯一凭证)
  • 凭证书登录StartSSL网站
  • 验证域名(他会搜索whois信息,并给其中的邮箱发邮件验证)
  • 生成SSL证书加密私钥,自己另存为ssl.key(这里会让你输入一次密码)
  • 生成SSL证书,自己另存为ssl.crt
  • 在StartSSL网站的Tool Box里面,通过Decrypt Private Key解密我们的证书密钥,也就是刚才的ssl.key解密得到ssl2.key

现在我们有了ssl2.key和ssl.crt,接着就可以放到服务器,按照网上的教程部署了

被putty坑

这部把密钥和证书放到网站的过程,我是通过putty直接复制黏贴的,结果putty黏贴少了几个字符,导致证书和密钥不匹配。这么一个奇葩问题,折腾我一晚上,到处Google都没结果,查看log也是一头雾水。

未完待续。

找到宝了,用launchpad来安装Ubuntu比较新的软件

上周装了一个Errorboard.js,结果ubuntu官方源的nodejs版本太久了,里面有个依赖包怎么都装不了。Google之,发现原来有个https://launchpad.net/ 这样的站点,里面有很多最新的软件源。

Launchpad(发射台)是Canonical有限公司所架设的网站,是一个提供维护、支持或联络Ubuntu开发者的平台。其中Launchpad提供了在线编译软件的功能,你可以自由的参与Ubuntu或相关自由软件的开发或编译工作。而你也可以利用该网站的汇报机制来汇报相关软件的Bug,或者进一步提供建议。

这么好的东东,当然要用上。

执行第一句的时候,提示没有add-apt-repository这个命令,可以安装python-software-properties来解决。

使用nginx的PPA,开启SPDY

同样,ubuntu自带的nginx源,版本太低了,现在nginx1.3x\1.4x都新增加了很多特性,尤其是SPDY这个功能。

有了SPDY之后,说不定能颠覆雪碧图。

Nginx推荐使用这个源,https://launchpad.net/~nginx/+archive/stable,该源的文件组织形式,和ubuntu官方源是基本保持一致的,我等不想编译的人可以直接使用。

Ubuntu12.04快速部署 Nginx + MySQL + PHP + Memcached + XCache + phpMyAdmin

纯属MarkDown,我个人不大喜欢这类文章,按部就班,没啥思考性。

安装Nginx

注意,我下面的操作都是在一台干净的系统上进行的

#装好后,配置文件都在/etc/nginx/目录下面,网站目录在/usr/share/nginx/www/下面

安装PHP

修改其中支持PHP的部分,更新为以下内容:

在网站目录下面新建一个php脚本,检测PHP环境是否搭建成功:

代码内容如下:

重新加载一次Nginx的配置文件,并修改网站目录权限

打开浏览器,输入IP/phpinfo.php,看看显示是否正常。

安装MySQL和phpMyAdmin

期间,会让你设置MySQL的用户名和密码,你照常设置即可。

期间,也会让你设置phpMyAdmin的帐号密码,检查phpMyAdmin是否正常工作的方法是登录用一下,浏览器输入ip/phpMyAdmin/index.php运行即可。

安装Memcached和XCache

浏览器输入ip/phpinfo.php检查Memcached和XCache是否安装成功。

安装SendMail

没注意之前我的WP一直发不出邮件,原来我没有安装邮件模块。

就这么简单,一句代码,安装完成后重启一下php-fpm就好

现在PHP的mail()函数就能正常使用了,我们可以给WP装上WordPress Database Backup自动备份数据并发送到我们的TB级别的邮箱中~~

结语:

自此,一台性能还算不错的PHP Server就部署好了。

为啥选Ubuntu 12.04?因为是LTS呗,其实没为啥,随便哪款Linux都可以,apt-get用得顺手。

为啥选Nginx?处理并发请求完胜Apache,不过我很喜欢Apache自带的benchmark,功能强大,在同局域网中发起测试不错。

为啥选PHP?我不会Java、不会Python…

为啥选MySQL?难道你不要数据库?

为啥选XCache?为啥选Memcached?因为Ubuntu自带有这两个的包,懒得编译。

前者的价值体现如下:

后者的价值体现如下:

PS:

之前在帷千的一个项目,用上了Redis,其实也可以改用Memcached(毕竟我只是做的INC这样的原子操作,不过放弃Redis的话,持久化存储的问题,就需要另外解决了),Ubuntu自带php5-memcached包,安装比phpredis要方便很多,虽然那个也不是很麻烦…

文中截图来自《Pro PHP Application Performance》一书,这书把PHP的生命周期讲得挺过瘾的,薄薄一本,值得一读。

名词解析 – 反向代理

image

刚才看到hostloc上有人拿vps跑前端,HG的空间跑后端,但总是503错误,大概问题是前端到后端的连接数超过了HG的单个IP最大连接数限制(这点HG真不给力,貌似他后来改用GD的免费空间,问题就没了)

反向代理(Reverse Proxy)是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

通常的代理服务器,只用于代理内部网络对Internet的连接请求。

而当一个代理服务器能够代理外部网络上的主机访问内部网络时,这种代理服务的方式称为反向代理服务。

PS1:Nginx是一款高性能的HTTP和反向代理服务器

PS2:现在手上有2台VPS+1个H9的Reseller空间+2个GD的免费空间,有空我也来试试搞这个,做个负载均衡啥的玩玩,<( ̄▽ ̄)> 哇哈哈…

PS3:Hostrail VPS 1 Power Unit Server 套餐,使用优惠码NEWYEAR,$1.05,测试地址:vps2.mxgw.info