编译nginx记录

[color=red][size=x-large]tengine[/size][/color]
[color=red][b][size=large]LUA[/size][/b][/color]
yum安装:
yum install lua lua-devel

安装Lua或者LuaJIT都是可以的,但是出于效率的考虑,推荐安装LuaJIT。下面的源码例子就是安装LuaJIT

源码安装:
lua下载地址: http://luajit.org/

我这里下载的是:LuaJIT-2.0.1.tar.gz 下载在 /usr/local/src 目录下。

安装命令:

cd /usr/local/src
tar zxvf LuaJIT-2.0.1.tar.gz
cd LuaJIT-2.0.1
make

make install

因为安装在缺省路径,所以LuaJIT对应的lib,include均在/usr/local目录里。

[size=large][color=red][b]tengine[/b][/color][/size]
下载地址: https://github.com/alibaba/tengine
./configure
make
sudo make install
参考:

http://huoding.com/2012/08/31/156


在./configre时,需要用到pcre, openssl, zlib的源码,这里需要实现下载安装好。
./configure --with-pcre=/home/kevin/workspace/pcre-8.37 --with-openssl=/home/kevin/workspace/openssl-1.0.1p --with-zlib=/home/kevin/workspace/zlib-1.2.8 --with-http_lua_module --with-luajit-lib=/usr/local/lib/ --with-luajit-inc=/usr/local/include/luajit-2.0/ --with-lua-inc=/usr/local/include/luajit-2.0/ --with-lua-lib=/usr/local/lib/


[size=x-large][color=red]Nginx[/color][/size]

[size=medium][url]http://blog.youkuaiyun.com/vboy1010/article/details/7868645[/url][/size]

wget http://luajit.org/download/LuaJIT-2.0.0-beta9.tar.gz  
tar zxvf LuaJIT-2.0.0-beta9.tar.gz
cd LuaJIT-2.0.0-beta9
make
sudo make install PREFIX=/usr/local/luajit



问题:
找不到: luajit的库
/usr/local/nginx/sbin/nginx: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

解决如下:
sudo vim /etc/profile

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

source /etc/profile


lua cjson
http://www.kyne.com.au/~mark/software/lua-cjson.php

http://rfyiamcool.blog.51cto.com/1030776/1252501


花下眠工作室: [url]http://huaxiamian.cc[/url]
<think>我们之前讨论了如何查看Nginx安装的插件(模块),现在用户的问题是“重新编译nginx的方法”。根据引用内容,用户提供了关于编译安装Nginx的片段,包括停止Nginx服务、安装编译环境和进程说明。用户的需求明确:重新编译Nginx(可能是为了添加新模块或更新配置)。 ### 重新编译Nginx的步骤 重新编译Nginx通常是在已有Nginx的基础上,修改编译配置(如添加或删除模块)并重新构建二进制文件。注意:重新编译不会自动覆盖现有安装,需要手动替换二进制文件或执行`make install`(谨慎操作,会覆盖旧版本)。 #### 1. **备份当前配置和二进制文件** - 备份Nginx配置文件:`cp -r /usr/local/nginx/conf /path/to/backup/nginx_conf_backup` - 备份当前Nginx二进制文件:`cp /usr/local/nginx/sbin/nginx /path/to/backup/nginx_old` - 记录当前编译参数(关键!):运行 `nginx -V` 并复制输出中的 `configure arguments: ...` 部分[^1]。 #### 2. **下载对应版本的Nginx源码** - 访问 [Nginx官网](http://nginx.org/en/download.html) 下载与当前版本一致的源码包(如不一致可能导致配置不兼容)。 - 解压:`tar -zxvf nginx-x.x.x.tar.gz` #### 3. **进入源码目录并配置编译参数** ```bash cd nginx-x.x.x # 使用之前记录编译参数(重要!),并添加/删除需要的模块 ./configure <原有参数> --add-module=/path/to/new_module [其他新参数] ``` 示例:若原参数为 `--prefix=/usr/local/nginx --with-http_ssl_module`,要新增`headers-more`模块: ```bash ./configure --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/usr/local/src/headers-more-nginx-module ``` #### 4. **编译(不安装)** ```bash make # 只编译,不安装到系统路径 ``` - 编译后,新二进制文件在 `objs/nginx`。 #### 5. **替换二进制文件(推荐方式)** ```bash # 停止旧Nginx服务(优雅停止) /usr/local/nginx/sbin/nginx -s quit # 备份旧二进制文件 mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old # 复制新编译的二进制文件 cp objs/nginx /usr/local/nginx/sbin/nginx # 测试新版本 /usr/local/nginx/sbin/nginx -t # 启动 /usr/local/nginx/sbin/nginx ``` #### 6. **验证** - 检查版本和模块:`/usr/local/nginx/sbin/nginx -V` - 访问服务确认功能正常。 ### 注意事项 1. **依赖更新**:若新增模块需要额外依赖(如OpenSSL),确保提前安装(参考引用[2]的编译环境)。 2. **动态模块**:若需动态加载(`.so`文件),使用 `--add-dynamic-module` 代替 `--add-module`,并在配置文件中用 `load_module` 加载[^2]。 3. **完全重新安装**:若选择 `make install`(不推荐,会覆盖配置),先备份: ```bash make install # 将覆盖旧文件(包括配置) ``` ### 错误处理 - **编译失败**:检查错误日志,通常因缺失依赖或路径错误。 - **启动失败**:运行 `nginx -t` 检查配置;查看错误日志 `/usr/local/nginx/logs/error.log`。 ### 总结 重新编译Nginx的核心是保留原有编译参数并增量修改。通过替换二进制文件实现平滑升级,避免影响配置[^3]。 §§相关问题§§ 1. 如何为Nginx添加第三方动态模块? 2. 重新编译Nginx启动失败如何排查? 3. 如何在不停止服务的情况下升级Nginx? </think>### 重新编译Nginx的方法 以下是完整的重新编译Nginx流程,基于源码编译方式操作(推荐): --- #### 1. **准备工作:停止Nginx服务** ```bash # 优雅停止(等待请求完成) /usr/local/nginx/sbin/nginx -s quit # 强制停止(立即终止) /usr/local/nginx/sbin/nginx -s stop ``` > 确保服务已停止:`ps -ef | grep nginx` [^1] --- #### 2. **备份配置与源码** ```bash # 备份配置文件 cp -r /usr/local/nginx/conf /backup/nginx_conf # 备份旧二进制文件 cp /usr/local/nginx/sbin/nginx /backup/nginx_old ``` --- #### 3. **安装编译依赖** ```bash # 安装基础编译工具链 yum install -y gcc gcc-c++ make automake # 安装核心依赖库 yum install -y pcre pcre-devel openssl openssl-devel zlib zlib-devel ``` > 这是Nginx编译的最小依赖集[^2] --- #### 4. **获取并配置源码** ```bash # 进入源码目录(假设已解压) cd nginx-1.25.3 # 查看原编译参数(关键!) nginx -V 2>&1 | grep configure # 示例:保留原参数并添加新模块 ./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --add-module=/path/to/new_module \ # 新增模块 --with-http_v2_module # 新增HTTP/2支持 ``` > 必须包含原有编译参数,否则会丢失已安装功能[^3] --- #### 5. **编译与安装** ```bash # 编译新二进制文件 make # 替换旧执行文件(不覆盖配置) cp objs/nginx /usr/local/nginx/sbin/nginx ``` > `make install`会覆盖配置,**不推荐**直接使用 --- #### 6. **验证与启动** ```bash # 测试新版本 /usr/local/nginx/sbin/nginx -t # 启动服务 /usr/local/nginx/sbin/nginx # 确认模块加载 /usr/local/nginx/sbin/nginx -V ``` --- ### 关键注意事项 1. **参数继承** 必须通过`nginx -V`获取原编译参数并包含在新`./configure`命令中,否则会丢失已有功能。 2. **零停机升级(可选)** 可通过热替换实现不中断服务: ```bash make && mv objs/nginx /usr/local/nginx/sbin/nginx_new kill -USR2 $(cat /usr/local/nginx/logs/nginx.pid) # 无缝切换 ``` 3. **动态模块支持** 若需动态加载模块(`.so`文件),添加编译参数: ```bash ./configure ... --add-dynamic-module=/path/to/module ``` 4. **错误排查** 编译失败时检查`objs/autoconf.err`日志,常见问题: - 缺失依赖库 - 模块路径错误 - 参数冲突 > 📌 完整流程约需10-30分钟,具体取决于服务器性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值