我最近在 Centos 6 服务器上安装了 httpd。据我所知,suEXEC 是使用以下值编译的;
-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_EXEC="/var/log/httpd/suexec.log"
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"
我想知道是否有一种方法可以更改这些值而无需从头开始编译 Apache?
答案1
不可能增加工具所遵循的选项,因此如果您需要添加其他选项,您只能自己重新编译它。在基于 RedHat 的发行版上使用像 httpd (Apache) 这样的包,这还不错。
你基本上需要做三件事来做到这一点:
- 为 httpd 安装依赖项
- httpd 的源 RPM 版本
- rpmbuild 区域
依赖关系
您可以使用该工具yum-builddep
来帮助完成这项工作。该工具将下载构建和安装给定 RPM 所需的所有软件包。因此,您需要为自己获取一个 httpd RPM 版本。但请确保获取其源版本,通常名为 src.rpm 文件。例如:
mypackage-1.0.0-1.src.rpm
源转速
对于 CentOS 6.2,您可以下载此源 RPM:-http://vault.centos.org/6.2/os/Source/SPackages/httpd-2.2.15-15.el6.centos.src.rpm
构建环境
我通常使用一个工具来为我进行设置,rpmdev-setuptree
.
$ yum install rpmdevtools
$ rpmdev-setuptree
现在将目录更改为新构建的 rpmbuild 区域,并安装源 RPM,以便我们可以开始修改它的构建方式:
$ cd ~/rpm
$ rpm -ivh httpd-2.2.15-15.el6.centos.src.rpm
我们需要如何编辑该httpd.spec
文件。该文件详细说明了如何构建最终的二进制 RPM:
$ nano SPEC/httpd.spec
您需要在此文件中找到调用配置的部分。我通常搜索字符串--prefix
。下一步是您可以添加修改,这将改变suexec
get 的构建方式。
配置节摘录自httpd.spec
../configure \
--prefix=%{_sysconfdir}/httpd \
--exec-prefix=%{_prefix} \
--bindir=%{_bindir} \
--sbindir=%{_sbindir} \
--mandir=%{_mandir} \
--libdir=%{_libdir} \
--sysconfdir=%{_sysconfdir}/httpd/conf \
--includedir=%{_includedir}/httpd \
--libexecdir=%{_libdir}/httpd/modules \
--datadir=%{contentdir} \
--with-installbuilddir=%{_libdir}/httpd/build \
--with-mpm=$mpm \
--with-apr=%{_prefix} --with-apr-util=%{_prefix} \
--enable-suexec --with-suexec \
--with-suexec-caller=%{suexec_caller} \
--with-suexec-docroot=%{contentdir} \
--with-suexec-logfile=%{_localstatedir}/log/httpd/suexec.log \
--with-suexec-bin=%{_sbindir}/suexec \
--with-suexec-uidmin=500 --with-suexec-gidmin=100 \
--enable-pie \
--with-pcre \
$*
保存文件,现在您就可以构建您的 httpd 版本了。
构建源RPM
以下命令将构建您的 RPM:
$ rpmbuild -ba SPEC/httpd.spec
如果一切顺利,您应该在 RPM 目录中留下新版本的 RPM:RPM/httpd-2.2.15-15.el6.centos.x86_64.rpm
。
现在您可以像安装任何其他普通 RPM 一样安装它。