Nginx 入门操作手册(从安装依赖库到模块编译)
来源:互联网 发布:有名的网络歌手 编辑:程序博客网 时间:2024/06/05 15:32
Nginx 入门操作(从安装依赖库到自定义模块动静态编译安装法)
1 安装 mysql 和 openssl
$ sudo apt-get install libmysqlclient-dev$ sudo yum install mysql-devel$ sudo apt-get install openssl libssl-dev
2 安装 redis
$ cd redis-3.2.1$ make$ sudo make install$ sudo mkdir -p /etc/redis$ sudo cp redis.conf /etc/redis$ sudo vim /etc/redis/redis.conf 修改: daemonize yes maxmemory 1gb maxmemory-policy volatile-lru requirepass 2wsxEDC$ sudo vim /etc/rc.local 加入:/usr/local/bin/redis-server /etc/redis/redis.conf 继续编译 redis 客户端库$ cd deps/hiredis$ make$ sudo make install
3 安装 lrdkafka
$ cd ../librdkafka-master-ex$ ./configure --disable-debug-symbols如果要修改编译选项,可以修改生成的:Makefile.config$ make$ sudo make install
4 安装 hiredis-vip
$ cd ../hiredis-vip$ make$ sudo make install
5 编译模块
进入 Nginx 源代码根目录(含有 configure 的那个),执行命令
静态编译方法
$ ./configure --with-http_realip_module --with-http_ssl_module --add-module=/home/owen/owen/project/src/ngx_my_test_study 源码所在路径(可以给相对路径) 可供参考的配置选项:--with-debug 可供参考的配置选项:--prefix=安装目标目录 可供参考的配置选项:--without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module 可供参考的配置选项:--with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module 可能的错误: requires the PCRE library 解决办法:$ sudo yum -y install pcre-devel 可能的错误: requires the zlib library 解决办法:$ sudo yum -y install zlib-devel默认生成是调试版,如希望生成非调试版本需要修改 objs/Makefile 文件:$ vim objs/Makefile 去掉 CFLAGS 后面的 -g 选项$ make; 可能的错误: 缺少 openssl 开发库 解决办法:$ sudo yum -y install openssl-devel$ sudo make install;
动态编译方法
$ ./configure --add-dynamic-module=/home/owen/owen/project/src/ngx_my_test_study (可以给相对路径) 其他编译选项和修改方式可参考:静态编译方法$ make -f objs/Makefile modules安装该模块到 nginx:将 objs/ 编译出的模块.so 拷贝到: Nginx 安装路径 /module/ 下即可$ sudo cp objs/ngx_http_mytest_module.so /usr/local/nginx/module/最后,在 Nginx 安装路径 /conf/nginx.conf 文件中全局配置下加入加载此模块命令:load_module modules/ngx_http_mytest_module.so;
注意: 项目的配置文件 conf 中一定要添加以下内容:
#nginx version >= 1.9.11if test -n "$ngx_module_link"; then if [ DYNAMIC = $ngx_module_link ] ; then#这种可以连着写多个,最后一次 .auto/module,并且应该不需要写ngx_module_type=HTTP ngx_module_type=HTTP ngx_module_name=$ngx_addon_name ngx_module_srcs=$NGX_ADDON_SRCS . auto/module elif [ ADDON = $ngx_module_link ] ; then HTTP_MODULES="$HTTP_MODULES $ngx_addon_name" CORE_LIBS="$CORE_LIBS $ngx_module_libs" fi#nginx version < 1.9.11else HTTP_MODULES="$HTTP_MODULES $ngx_addon_name" CORE_LIBS="$CORE_LIBS $ngx_module_libs"fi
否则会出现以下编译错误:
owen@owen:~/liujx/software/nginx-1.10.1$ make -f objs/Makefile modules objs/Makefile:1206: warning: overriding commands for target `objs/addon/ngx_my_test_module/ngx_http_mytest_module.o'objs/Makefile:1181: warning: ignoring old commands for target `objs/addon/ngx_my_test_module/ngx_http_mytest_module.o'make: Nothing to be done for `modules'.
6 启动可能碰到的问题
如果启动 Nginx 报找不到 某些动态库,可以将库所在路径增加到环境变量中:在 /etc/profile 或 /etc/bashrc 里添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
如果启动 Nginx 报找不到 lrdkafka,可以将 lrdkafka 相关库拷贝到 /usr/lib64 目录下。
当然,最好的做法是将 lrdkafka 所在路径(标准安装是 /usr/local/lib )增加到环境变量中:在 ~/.bashrc 里添加:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
7 本人测试模块编译过程遇到的问题记录
7.1 configure 命令
./configure --prefix=/usr/local/nginx --with-openssl=/home/owen/owen/software/openssl-1.0.2m --with-http_ssl_module --add-module=/home/owen/owen/project/src/ngx_my_test_study
7.2 make 编译自定义模块到 Nginx
自定义模块目录信息
owen@owen:~/owen/project/src/ngx_my_test_study$ pwd/home/owen/owen/project/src/ngx_my_test_studyowen@owen:~/owen/project/src/ngx_my_test_study$ lltotal 20drwxrwxr-x 2 owen owen 4096 11月 15 14:19 ./drwxrwxr-x 23 owen owen 4096 11月 14 17:08 ../-rw-rw-r-- 1 owen owen 480 11月 15 13:58 config-rwxrwxr-- 1 owen owen 5663 11月 15 14:19 nginx_http_mytest_module.c*
自定义模块的 config 内容
owen@owen:~/owen/project/src/ngx_my_test_study$ cat config #仅在configure执行时使用,一般设置为模块名称 ngx_addon_name=ngx_http_mytest_module #HTTP_MODULES保存所有的模块名称,在重设HTTP_MODULES时不能直接覆盖,而是先取得以前的HTTP_MODULES,在加上自己的模块 HTTP_MODULES="$HTTP_MODULES ngx_http_mytest_module" # ngx_addon_dir=/home/owen/owen/project/src/ngx_my_test_study#指定新增源代码文件 NGX_ADDON_SRCS="$ngx_addon_dir/ngx_http_mytest_module.c"
编译出错
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/owen/owen/software/openssl-1.0.2m/.openssl/include -I objs -I src/http -I src/http/modules \ -o objs/src/http/modules/ngx_http_upstream_zone_module.o \ src/http/modules/ngx_http_upstream_zone_module.cmake[1]: *** No rule to make target `/home/owen/owen/project/src/ngx_my_test_study/ngx_http_mytest_module.c', needed by `objs/addon/ngx_my_test_study/ngx_http_mytest_module.o'. Stop.make[1]: Leaving directory `/home/owen/owen/software/nginx-1.10.1'make: *** [build] Error 2
原因: NGX_ADDON_SRCS="$ngx_addon_dir/ngx_http_mytest_module.c"
与源码 nginx_http_mytest_module.c
命名不匹配
7.3 make install
更新运行环境中的可执行文件,默认为:/usr/local/nginx/sbin/nginx
owen@owen:~/owen/software/nginx-1.10.1$ sudo make installmake -f objs/Makefile installmake[1]: Entering directory `/home/owen/owen/software/nginx-1.10.1'test -d '/usr/local/nginx' || mkdir -p '/usr/local/nginx'test -d '/usr/local/nginx/sbin' \ || mkdir -p '/usr/local/nginx/sbin'test ! -f '/usr/local/nginx/sbin/nginx' \ || mv '/usr/local/nginx/sbin/nginx' \ '/usr/local/nginx/sbin/nginx.old'cp objs/nginx '/usr/local/nginx/sbin/nginx'test -d '/usr/local/nginx/conf' \ || mkdir -p '/usr/local/nginx/conf'cp conf/koi-win '/usr/local/nginx/conf'cp conf/koi-utf '/usr/local/nginx/conf'cp conf/win-utf '/usr/local/nginx/conf'test -f '/usr/local/nginx/conf/mime.types' \ || cp conf/mime.types '/usr/local/nginx/conf'cp conf/mime.types '/usr/local/nginx/conf/mime.types.default'test -f '/usr/local/nginx/conf/fastcgi_params' \ || cp conf/fastcgi_params '/usr/local/nginx/conf'cp conf/fastcgi_params \ '/usr/local/nginx/conf/fastcgi_params.default'test -f '/usr/local/nginx/conf/fastcgi.conf' \ || cp conf/fastcgi.conf '/usr/local/nginx/conf'cp conf/fastcgi.conf '/usr/local/nginx/conf/fastcgi.conf.default'test -f '/usr/local/nginx/conf/uwsgi_params' \ || cp conf/uwsgi_params '/usr/local/nginx/conf'cp conf/uwsgi_params \ '/usr/local/nginx/conf/uwsgi_params.default'test -f '/usr/local/nginx/conf/scgi_params' \ || cp conf/scgi_params '/usr/local/nginx/conf'cp conf/scgi_params \ '/usr/local/nginx/conf/scgi_params.default'test -f '/usr/local/nginx/conf/nginx.conf' \ || cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf'cp conf/nginx.conf '/usr/local/nginx/conf/nginx.conf.default'test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs'test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs'test -d '/usr/local/nginx/html' \ || cp -R html '/usr/local/nginx'test -d '/usr/local/nginx/logs' \ || mkdir -p '/usr/local/nginx/logs'
修改历史:
- 2017-12-01 16:51,添加动态编译方式的配置文件内容;
阅读全文
0 0
- Nginx 入门操作手册(从安装依赖库到模块编译)
- Nginx开发从入门到精通(二):handler模块
- Nginx开发从入门到精通(三):过滤模块
- Nginx开发从入门到精通(四):upstream模块
- Nginx模块开发---Nginx开发从入门到精通 读书笔记(二)---Nginx基础概念
- Nginx开发从入门到精通——编译与安装
- Nginx模块开发---Nginx开发从入门到精通 读书笔记(三)---Nginx基本数据结构之 ngx_pool_t
- Gulp入门:从安装到编译Sass
- Nginx编译安装模块(非重装)
- Nginx从入门到放弃(一)
- nginx依赖模块pcre、zlib、openssl 安装
- nginx依赖库安装
- nginx从入门到精通
- Nginx从入门到精通
- Nginx从入门到精通
- 编译安装nginx以及其依赖
- nginx从安装到配置
- nginx教程从入门到精通(ttlsa出品)
- 剑指offer-合并两个有序链表
- Scala 常量和变量
- spec下载:Image File Format
- NO.99 Jenkins1.65升级至Jenkins2.88操作记录
- 解决macOS /usr/include 无法写入或者不存在的问题
- Nginx 入门操作手册(从安装依赖库到模块编译)
- C# Winform 涉及的拖放操作总结
- CYUSB3014
- Android中的JNI(一)------JNI介绍和C基础介绍
- IOS中NSArray的4种遍历方式
- 10g RAC在ASM实例下查询gv$session,会报错ORA-12850;11g RAC中查询正常!!!
- 通用技术 异常测试实践与梳理 (下):服务端异常
- 如何将java.util.Date传给mybatis作为查询条件
- 优云丨2017全球运维大会上海站纪实