Ubuntu下从Nginx平滑编译安装Tengine

此安装适用于已经apt安装了Nginx的Ubuntu用户。

Ubuntu Server 14.04
现Nginx:1.4.6(Ubuntu)
Tengine:2.2.0(nginx/1.8.1)

准备工作

1. 安装所需要的库。

$ sudo apt-get install libssl-dev libpcre3-dev libxml2 libxslt1-dev libxml2-dev libgd-dev libgeoip-dev

2. 从git下载Tengine源码。

$ git pull https://github.com/alibaba/teninge

3. 编译Tengine。

$ cd tengine
$ git checkout tengine-2.2.0
$ ./configure --prefix=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module
$ make

4. 备份原nginx,并用新编译的tengine替换原nginx程序。

$ sudo mv /usr/sbin/nginx /usr/sbin/nginx.old
$ sudo cp objs/nginx /usr/sbin/
$ sudo chmod +x /usr/sbin/nginx

5. 检查Tengine版本及配置是否正确。

$ nginx -v
Tengine version: Tengine/2.2.0 (nginx/1.8.1)
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

6. 重启服务完成安装

$ sudo service nginx restart

安装完成后,就可以享受Tengine的各项特性了。

北京市丰台区五环路58公里处

亲爱的外地车主同胞们,你们到这里,肯定是被此处的摄像头拍了“进京证”或者“早晚高峰”,而却云里雾里的不知道该摄像头的具体位置。

这里就是:北京市丰台区五环路58公里处南向北

其实这个摄像头在北京市公安局公安交通管理局在2016年07月11日发布的公开信息中就有,帝都现在平均每个月新增成百上千个交通摄像头,外地车在京使用越来越难了。

关于公布新增固定式交通技术监控设备设置地点的公告
gudingshebei20160711.jpg

58km-1.jpg
摄像头就在这些道路指示牌的后面。

58km-2.jpg
就是这些摄像头。

58km-3.jpg
再继续往前走,就可以看到五环路58km的里程碑了。

start https and http2

startsslhttp2.jpg

https and http2

多年的折腾,终于为博客配置了HTTPS,同时也配置上了HTTP 2.0。

在配置完HTTPS后对访问速度确实小失望了一下,因为速度确确实实比之前要慢了很多,光是页面的load时间都达到1-3秒之多。

HTTPS弄好后,怎么能少得了HTTP 2呢,弄好HTTPS后再配置HTTP 2就很简单了,只需要在listen 443加上ssl http2即可(注意nginx在1.9.5之后才支持http 2)。

HTTP 2的小惊喜,在配置好之后,刷新网站,不由得惊叹了一下,哇!这还是刚才的网站吗,响应速度一下子快了好多,强烈建议上了HTTPS还没有上HTTP 2的同学们,赶紧上HTTP 2吧,提升不是一点点。

博客就是我对新技术的实验场,此次升级彻底放弃了还在使用XP和IE8以下的同学们,所以XP和IE8以下的同学们是无缘看到此文章了,赶快升级你们的操作系统和浏览器吧!

Ubuntu Server 安装最新版Nginx

Ubuntu Server 默认安装的版本有点老。有时候我们需要体验一下最新版的一些特性,又懒得去从源代码编译。可以从PPA源中来安装最新的nginx。

安装前记得备份一下现有的配置文件(不要问我为什么,养成备份是个好习惯)。

sudo apt-get remove nginx openssl
sudo apt-get install software-properties-common
sudo add-apt-repository ppa:ondrej/nginx
sudo apt-get update
sudo apt-get install nginx openssl

nginx -v
nginx version: nginx/1.10.1
openssl version -v
OpenSSL 1.0.2h  3 May 2016

可以看到,已经升级到截止编写该文章时的最新stable版1.10.1了。

MySQL升级小记

项目升级,同时将MySQL 5.5升级到5.6,但最后在设置完root密码后,一直卡在那里不动,这明显不对劲。赶紧去查进程,发现MySQL进程总是一启一挂,肯定是什么地方导致的MySQL启动不了。

赶紧去查日志,在日志发现了问题的根源,日志如下:

2016-03-15 15:17:32 16401 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Pleas
e use the full name instead.
2016-03-15 15:17:32 16401 [Note] Plugin 'FEDERATED' is disabled.
2016-03-15 15:17:32 16401 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-03-15 15:17:32 16401 [Note] InnoDB: The InnoDB memory heap is disabled
2016-03-15 15:17:32 16401 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-03-15 15:17:32 16401 [Note] InnoDB: Memory barrier is not used
2016-03-15 15:17:32 16401 [Note] InnoDB: Compressed tables use zlib 1.2.8
2016-03-15 15:17:32 16401 [Note] InnoDB: Using Linux native AIO
2016-03-15 15:17:32 16401 [Note] InnoDB: Using CPU crc32 instructions
2016-03-15 15:17:32 16401 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2016-03-15 15:17:32 16401 [Note] InnoDB: Completed initialization of buffer pool
2016-03-15 15:17:32 16401 [Note] InnoDB: Highest supported file format is Barracuda.
2016-03-15 15:17:32 16401 [Note] InnoDB: 128 rollback segment(s) are active.
2016-03-15 15:17:32 16401 [Note] InnoDB: Waiting for purge to start
2016-03-15 15:17:32 16401 [Note] InnoDB: 5.6.28 started; log sequence number 853823102394
2016-03-15 15:17:32 16401 [ERROR] /usr/sbin/mysqld: unknown variable 'table_cache=64'
2016-03-15 15:17:32 16401 [ERROR] Aborting

原来Mysql5.6中移除了table_cache,编辑my.ini文件,注释或删除掉table_cache=64,保存后mysql马上启动起来了。升级完成!

后记,升级前一定要做足功课!