httpd之编译安装详解
从源码包安装软件最重要的就是仔细阅读“README”、“INSTALL”等说明文件,它会告诉你怎样才能成功安装。
通常从源码包安装软件的步骤是:
1、拿到源代码,并解压:
tar xf package-version.tar.{gz|bz2|xz}
注意:展开后的目录通常为package-version
2、切换至源码目录中:
cd package-version
3、执行configure脚本
configure脚本的通用功能:
我们需要定义的配置:
1、指定安装路径:
--prefix=/usr/local/package_name 、
--sysconfdir=/path/to/package_name
2、指定启用/禁用的特性:
--enable-feature 例如 --enable-fpm
--disable-feature 例如 --disable-socket
3、指定所依赖功能、程序或文件
--with-function:启用某功能
--without-function:禁用某功能
不同的程序,其configure脚本功能不同,要获取帮助: ./configure --help
补充:./configure 似乎在某些环境下./configure会造成终端退出,而使用. configure则会正常运行,如果有这个现象,就试试 . configure。通过configure程序猜测主机信息,最终建立Makefile,以完成make,所以如果./configure不成功,而去make的话,就会出现"make: *** No targets specified and no makefile found. Stop."
4、编译
make 当./configure成功结束后,就开始正式编译程序了.
5、安装
make install 编译成功后使用make install安装,make uninstall 某些软件支持卸载,可能使用该方法卸载,如果支持的话,通常会在“README”中写到(似乎比较少)。configure程序带有很多参数,可以通过 ./configure --help 查看详细内容,通常位于前面的是常规configure的参数说明,末尾是该程序的可用参数说明。 ./configure --prefix=/usr 指定安装目录,通常从源码包编译安装的软件默认会放在/usr/local
一:安装前准备工作
1、安装开发包组:
提示:如果系统为CentOS 5,常用的开发包组 为"Development Tools"和"Development Libraries"
如果系统为CentOS 6,常用的开发包组 为"Development Tools"和"Server Platform Development"
安装包组示例:yum install "Development Tools"
yum install "Server Platform Development"
2、下载http软件包
下载地址:
命令:lftp
> get httpd-2.2.26.tar.bz2
> bye
二:编译安装
1、解压包:
tar xf httpd-2.2.26.tar.bz2
2、进入目录:
cd httpd-2.2.26
进入目录后发现有INSTALL,用less查看
less INSTALL
3、执行configure脚本:
安装路径:--prefix=/usr/local/apache
配置文件路径:--sysconfdir=/usr/local/apache/apache.conf --enable-so
我们这里选择启用模块特性:--enable-so
下面执行configure:
4、make
5、make install
安装完成!
三:后续设置
安装完成后我们启动apache:
命令:apachectl start
发现启动不了!这是因为系统不会到/usr/local/apache/bin找我们的命令的,环境变量PATH里没有这个路径,需要我们手动添加到apache.sh脚本中,该脚本路径/etc/profile.d/。
命令:vim /etc/profile.d/apache.sh
PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH
export PATH
重读脚本信息:
四:启动,并测试
1、启动httpd:
命令:cd /usr/local/apache/bin/
apachectl start
启动成功,但是出现如下报错:
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
这个报错是DNS解析域名出错,可以忽略。
2、测试:
80端口,监听成功! 使用