#! /bin/bash yum install -y pcre-devel openssl-devel gcc curl curl https://openresty.org/download/openresty-1.25.3.2.tar.gz -o openresty.tar.gz OR=/data/apps/or mkdir -p $OR mkdir -p /data/apps/ngx mkdir -p /data/apps/ngx/proxytemp mkdir -p /data/apps/ngx/logs tar xvf openresty.tar.gz cd openresty-1.15.8.1 ./configure --prefix=$OR --pid-path=/data/apps/ngx/nginx.pid\ --error-log-path=/data/apps/ngx/logs/error.log\ --http-log-path=/data/apps/ngx/logs/access.log\ --http-proxy-temp-path=/data/apps/ngx/proxytemp\ --with-http_stub_status_module\ --with-stream\ --with-stream=dynamic make && make install echo 'export OR="/data/apps/or"' >> /etc/profile echo 'export PATH="$PATH:$OR/bin"' >> /etc/profile echo 'export OR="$OR"' >> /etc/profile echo 'export PATH="$PATH:$OR/bin"' >> /etc/profile source /etc/profile make: *** 没有指明目标并且找不到 makefile。 停止。 yum install gcc-c++ -y yum -y install gcc
时间: 2025-07-16 16:19:52 浏览: 19
<think>嗯,用户给了一个Bash脚本,安装OpenResty的时候遇到了问题,提示“make: *** 没有指明目标并且找不到 makefile。 停止。”。我需要先仔细看看这个脚本哪里出错了。
首先,用户用yum安装了pcre-devel、openssl-devel、gcc、curl这些依赖,应该没问题。然后下载了OpenResty的源码包,解压后进入目录,执行configure,然后make。但这里可能有问题,解压后的目录名是否正确?用户下载的是openresty-1.25.3.2.tar.gz,但解压后cd进入的是openresty-1.15.8.1,这明显版本不一致,应该是目录名写错了,导致cd失败,所以后续的configure和make都无法执行,自然找不到Makefile。
接下来,configure命令的参数看起来没问题,指定了prefix和其他路径。但目录路径是否正确?用户创建了/data/apps/or和/data/apps/ngx等目录,权限是否足够?可能需要sudo或者用root用户执行,不过用户已经用了-y参数,可能是在root下运行。
然后,在环境变量配置部分,用户重复添加了两次相同的export命令,这可能没必要,但不会导致错误。不过source /etc/profile应该在安装完成后执行,这里的位置可能没问题。
错误出现在make的时候,因为cd进入的目录不存在,所以configure没有执行,也就没有生成Makefile,导致make失败。之后用户尝试安装gcc-c++和gcc,但实际上gcc已经安装了,可能缺少其他依赖,比如g++或者开发库,但主要问题应该是目录名错误。
所以,解决方法是修正解压后的目录名,确保cd进入正确的目录。例如,下载的是1.25.3.2版本,解压后的目录名应该是openresty-1.25.3.2,而不是1.15.8.1。这应该是用户手误写错了版本号。
另外,可能需要检查是否有其他依赖未安装,比如gcc-c++,虽然用户后面尝试安装了,但如果在configure之前没有安装,可能导致配置失败。不过根据错误信息,主要问题还是目录错误。
总结,用户需要将cd命令后的目录改为正确的版本号,并确保所有依赖已安装,比如gcc-c++。此外,可能还需要检查configure的输出,确认是否有其他依赖缺失。</think>让我们逐步分析并解决这个OpenResty安装脚本的问题:
🔧 **步骤分析**:
1. **依赖安装**:
```bash
yum install -y pcre-devel openssl-devel gcc curl
```
正确安装了编译所需的基础依赖
2. **路径问题**:
- 创建了合理的目录结构 `/data/apps/or` 和 `/data/apps/ngx`
3. **致命错误**:
```bash
curl https://openresty.org/download/openresty-1.25.3.2.tar.gz -o openresty.tar.gz
tar xvf openresty.tar.gz
cd openresty-1.15.8.1 # 版本号不匹配!
```
- 下载的是1.25.3.2版本
- 尝试进入1.15.8.1目录(明显版本错误)
4. **编译环境**:
- 后续安装的`gcc-c++`属于C++编译器,建议在初始阶段安装:
```bash
yum install -y gcc-c++
```
✅ **修正方案**:
```bash
# 版本号修正
CURRENT_VER="1.25.3.2"
curl https://openresty.org/download/openresty-${CURRENT_VER}.tar.gz -o openresty.tar.gz
tar xvf openresty.tar.gz
cd openresty-${CURRENT_VER} # 确保目录名正确
# 添加编译依赖
yum install -y pcre-devel openssl-devel gcc gcc-c++ curl
# 增加配置参数(建议)
./configure \
--prefix=$OR \
--with-http_ssl_module \ # 启用SSL模块
--with-http_realip_module \ # 真实IP模块
--with-http_gzip_static_module \# Gzip压缩
... # 保持原有参数
```
🔍 **故障解释**:
当执行`cd openresty-1.15.8.1`时,由于实际解压目录是`openresty-1.25.3.2`,导致:
1. 进入错误目录后`./configure`未执行
2. 没有生成Makefile文件
3. 后续`make`命令因缺少编译规则失败
📝 **优化建议**:
1. 使用变量管理版本号
2. 添加错误检测:
```bash
cd openresty-${CURRENT_VER} || { echo "目录不存在!"; exit 1; }
```
3. 检查编译结果:
```bash
make && make install || { echo "编译失败!"; exit 1; }
```
💻 **环境变量优化**:
删除重复的配置,保留:
```bash
echo 'export OR="/data/apps/or"' >> /etc/profile
echo 'export PATH="$PATH:$OR/bin"' >> /etc/profile
source /etc/profile
```
修改后完整脚本应能成功安装OpenResty。建议在安装前验证服务器架构和磁盘空间,使用`ls`确认解压目录名称正确。
阅读全文
相关推荐












