nginx安装mysql和json模块,在nginx中直接连接mysql,并获取mysql中的数据,并把获取的数据返回json数据到浏览器中,不用再通过php-fpm或lua去连接数据库,提高web的性能。下面是安装过程。
系统centos7,nginx版本1.14.0,已安装好nginx中新增加模块。
一、安装nginx
二、nginx安装mysql和json模块
1.mysql模块下载
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模块下载
#复制模块文件到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.编译nginxmake
6.替换原nginxcd 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 directoryldconfig
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