Tengine安装./configure: error: C compiler cc is not found

本文解决了CentOS6.5下安装Tengine时遇到的配置命令./configure提示C编译器未找到的问题,并提供了具体的解决步骤。
CentOS 6.5 下 安装 Tengine 执行配置命令

./configure 

时提示以下错误:

checking for OS
 + Linux 2.6.32-431.el6.x86_64 x86_64

checking for C compiler ... not found

解决:

执行以下命令:

yum -y install gcc gcc-c++ autoconf automake make

相关文章:

CentOS 6.5 下 Tengine 安装记录

CentOS6.5下Nginx1.7.4安装记录


<think>我们正在解决用户在Ubuntu系统上安装Nginx时遇到的错误:`./configure:error:invalidoption'--with-http_sticky_module'`。根据引用内容,我们知道这个错误是因为`--with-http_sticky_module`是一个无效的选项,因为sticky模块是第三方模块,不能使用`--with-`的方式添加,而应该使用`--add-module`。参考引用[1]和引用[2]中的解决方法:-引用[1]中遇到类似错误(`--with-http_upstream_check_module`无效),解决方法是改为使用`--add-module`。-引用[2]中展示了正确的配置命令,其中使用了`--add-module=../nginx_upstream_check_module-master/`来添加第三方模块。因此,解决步骤应该是:1.确保已经下载了sticky模块的源代码。2.在配置时使用`--add-module`指定模块的路径,而不是使用`--with-http_sticky_module`。具体步骤:###解决方案步骤:1.**下载第三方模块(sticky模块)**在Nginx源码目录的同一级别,克隆sticky模块的仓库(或者下载源码包并解压):```bashgitclonehttps://github.com/Refinitiv/nginx-sticky-module.git```或者,如果已经下载了源码包,请确保路径正确。2.**配置时使用`--add-module`添加模块**进入Nginx源码目录,运行`./configure`命令,并添加`--add-module`指向sticky模块的路径。同时,保留其他原有的配置参数(可以通过`nginx-V`查看已有的参数):```bash./configure\--add-module=/path/to/nginx-sticky-module\[其他原有参数]```例如,如果sticky模块位于当前目录的同级目录`nginx-sticky-module`中,则路径为`../nginx-sticky-module`。3.**编译和安装**配置完成后,进行编译和安装:```bashmakesudomakeinstall```4.**验证模块是否添加成功**安装完成后,可以通过以下命令检查模块是否已经编译进Nginx:```bashnginx-V2>&1|grepsticky```如果输出中包含`--add-module=/path/to/nginx-sticky-module`,则表示模块添加成功。###注意事项:-**原有参数**:在重新配置时,一定要加上之前已有的参数,否则新安装的Nginx可能会覆盖之前的配置,或者缺少之前已经安装的模块。可以通过运行`nginx-V`(大写V)来查看当前安装的Nginx的配置参数。-**模块路径**:确保`--add-module`指向的路径是sticky模块的源码路径,该路径下应该有`config`文件。-**版本兼容性**:注意sticky模块与Nginx版本的兼容性,如果遇到编译错误,可能需要检查版本或查找补丁。###示例配置命令:假设用户之前安装Nginx时的配置参数如下(通过`nginx-V`获取):```--prefix=/etc/nginx--sbin-path=/usr/sbin/nginx--modules-path=/usr/lib/nginx/modules--conf-path=/etc/nginx/nginx.conf--error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log--pid-path=/var/run/nginx.pid--lock-path=/var/run/nginx.lock--http-client-body-temp-path=/var/cache/nginx/client_temp--http-proxy-temp-path=/var/cache/nginx/proxy_temp--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp--http-scgi-temp-path=/var/cache/nginx/scgi_temp--user=nginx--group=nginx--with-http_ssl_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_random_index_module--with-http_secure_link_module--with-http_stub_status_module--with-http_auth_request_module--with-threads--with-stream--with-stream_ssl_module--with-http_slice_module--with-mail--with-mail_ssl_module--with-file-aio--with-http_v2_module--with-cc-opt='-g-O2-fdebug-prefix-map=/data/builder/debuild/nginx-1.18.0/debian/debuild-base/nginx-1.18.0=.-fstack-protector-strong-Wformat-Werror=format-security-Wp,-D_FORTIFY_SOURCE=2-fPIC'--with-ld-opt='-Wl,-z,relro-Wl,-z,now-Wl,--as-needed-pie'```那么,在添加sticky模块时,应该在原有参数的基础上加上`--add-module=/path/to/nginx-sticky-module`,命令如下:```bash./configure\--add-module=/path/to/nginx-sticky-module\--prefix=/etc/nginx\--sbin-path=/usr/sbin/nginx\...#其他原有参数```###在配置文件中使用sticky模块安装完成后,可以在Nginx配置文件的`upstream`块中使用`sticky`指令来实现会话保持。例如:```nginxupstreambackend{sticky;serverbackend1.example.com;serverbackend2.example.com;}```###可能遇到的问题及解决:1.**编译错误**:如果编译过程中出现错误,可能是因为sticky模块与当前Nginx版本不兼容。可以尝试更换sticky模块的版本(例如使用其他分支)或者查找补丁。2.**参数错误**:确保在配置命令中没有保留原来的`--with-http_sticky_module`参数,而是用`--add-module`替代。通过以上步骤,应该能够成功在Ubuntu系统上安装带有sticky模块的Nginx。§§相关问题§§1.如何为已安装的Nginx动态添加第三方模块?2.Nginx的`sticky`模块和`hash`指令在负载均衡中有何区别?3.如何验证Nginx模块是否成功加载并生效?4.Nginx负载均衡中如何实现后端服务器的健康检查?</think>### 解决 Ubuntu 安装 Nginx 报错 `--with-http_sticky_module` 的完整方案 该错误表明您尝试直接编译 **第三方模块** `sticky`,但使用了官方模块的配置语法。以下是详细解决步骤: --- #### 🔧 解决方案步骤(Ubuntu 环境) 1. **安装编译依赖** ```bash sudo apt update sudo apt install build-essential libpcre3-dev zlib1g-dev git ``` 2. **下载 sticky 模块源码** ```bash git clone https://github.com/Refinitiv/nginx-sticky-module.git ``` 3. **获取原有配置参数** ```bash nginx -V 2>&1 | grep configure > nginx_config.txt # 保留输出结果中的配置参数(如 --prefix=/usr/local/nginx) ``` 4. **重新配置编译参数** ```bash cd /path/to/nginx-source/ # 进入 Nginx 源码目录 ./configure \ $(cat nginx_config.txt) \ # 复用原有参数 --add-module=/path/to/nginx-sticky-module # 关键修改点[^2] ``` > 📌 **注意**:必须用 `--add-module` 替代无效的 `--with-http_sticky_module` 5. **编译并安装** ```bash make sudo make install ``` 6. **验证模块加载** ```bash nginx -V 2>&1 | grep sticky # 正确输出应包含: --add-module=/path/to/nginx-sticky-module ``` --- #### ⚙️ 配置 sticky 模块(示例) 在 `nginx.conf` 中添加负载均衡配置: ```nginx upstream backend { sticky; # 启用会话保持[^3] server 192.168.1.10:80; server 192.168.1.11:80; } server { listen 80; location / { proxy_pass http://backend; # 指向 upstream 组[^4] } } ``` 重启 Nginx 生效:`sudo systemctl restart nginx` --- #### 💡 关键说明 1. **模块类型差异** - `--with-http_xxx_module` 仅适用于**官方内置模块**(如 `gzip_module`) - 第三方模块(如 `sticky`)必须用 `--add-module` 指定源码路径[^1][^2] 2. **常见错误排查** - ❌ 路径错误:确保 `--add-module` 指向正确的模块目录 - ❌ 遗漏原有参数:通过 `nginx -V` 获取并复用当前配置 - ❌ 版本冲突:Nginx 1.20+ 需使用 sticky 1.2.5+ 版本 3. **备选方案** 如果编译失败,可改用 **Tengine**(Nginx 增强版,内置 sticky 模块): ```bash git clone https://github.com/alibaba/tengine cd tengine ./configure --with-http_sticky_module # Tengine 原生支持 ``` --- #### ✅ 验证会话保持 使用 curl 测试 cookie 绑定: ```bash curl -I http://your-server # 检查返回的 Set-Cookie 头是否包含 route 字段 ``` ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值