nginx安装mysql和json模块,在nginx中直接连接mysql,并获取mysql中的数据,并把获取的数据返回json数据到浏览器中,不用再通过php-fpm或lua去连接数据库,提高web的性能。下面是安装过程。
系统centos7,nginx版本1.14.0,已安装好nginx中新增加模块。
一、安装nginx
http://zixuephp.net/article-204.html (安装nginx)
http://zixuephp.net/article-397.html (升级nginx)
二、nginx安装mysql和json模块
1.mysql模块下载
下载地址:https://github.com/openresty/drizzle-nginx-module
git clone https://github.com/openresty/drizzle-nginx-module.git ls drizzle-nginx-module #复制到nginx模块目录下 cp -R drizzle-nginx-module/ /usr/local/nginx/module #下载好mysql模块后还需要安装模块的drizzle类库,不安装会报错 ./configure: error: the ngx_drizzle addon requires the libdrizzle library. http://openresty.org/download/drizzle7-2011.07.21.tar.gztar xzvf drizzle7-2011.07.21.tar.gz cd drizzle7-2011.07.21/ ./configure --without-server make libdrizzle-1.0 make install-libdrizzle-1.0
2.json模块下载
下载地址:https://github.com/openresty/rds-json-nginx-module
#复制模块文件到nginx module目录下 cp -R rds-json-nginx-module/ /usr/local/nginx/module/
3.nginx预编译
查看当前nginx预编译参数。
./nginx -V
[root@zixuephp sbin]# ./nginx -V nginx version: nginx/1.14.0 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) built with OpenSSL 1.0.2k-fips 26 Jan 2017 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-threads --user=www --group=www --add-module=/usr/local/nginx/module/ngx_devel_kit-0.3 --add-module=/usr/local/nginx/module/lua-nginx-module-0.10 --add-module=/usr/local/nginx/module/echo-nginx-module-0.61
进入下载好后解压的nginx包中,添加模块路径,进行预编译。如果没有重新下载nignx源码包并解压。
--add-module=/usr/local/nginx/module/drizzle-nginx-module
--add-module=/usr/local/nginx/module/rds-json-nginx-module
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-stream --with-stream_ssl_module --with-stream_realip_module --with-stream_ssl_preread_module --with-threads --user=www --group=www --add-module=/usr/local/nginx/module/ngx_devel_kit-0.3 --add-module=/usr/local/nginx/module/lua-nginx-module-0.10 --add-module=/usr/local/nginx/module/echo-nginx-module-0.61 --add-module=/usr/local/nginx/module/drizzle-nginx-module --add-module=/usr/local/nginx/module/rds-json-nginx-module
4.预编译成功:
5.编译nginx
make
6.替换原nginx
cd objs cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp nginx /usr/local/nginx/sbin/nginx #重启nginx service nginx restart
7.刷新lib库
不刷新会报错:error while loading shared libraries: libdrizzle.so.1: cannot open shared object file: No such file or directory
ldconfig
8.安装mysql和json模块成功
三、mysql和json模块简单使用
vim nginx.conf http { ... #nginx异步连接mysql upstream backend { drizzle_server 127.0.0.1:3306 dbname=test password=123456 user=root protocol=mysql; } server { location /mysql { #执行sql语句 drizzle_query "select version()"; drizzle_pass backend; drizzle_connect_timeout 500ms; # default 60s drizzle_send_query_timeout 2s; # default 60s drizzle_recv_cols_timeout 1s; # default 60s drizzle_recv_rows_timeout 1s; # default 60s #返回查询的结果,json格式数据 rds_json on; } } }
访问 http://zixuephp.net/mysql 链接返回json格式的数据,适合一些业务逻辑简单访问量大的接口,如果业务逻辑复杂可以在这里执行mysql存储过程函数。mysql模块函数的使用参考:https://github.com/openresty/drizzle-nginx-module#drizzle_server