在linux下的很多软件都是通过源码包方式发布的,这样做对于最终用户而言,虽然相对于二进制软件包,配置和编译起来繁琐点,但是它的可移植性却好得多,针对不同的体系结构,软件开发者往往仅需发布同一份源码包,不同的最终用户经过编译就可以正确运行.
在Linux下分rpm安装、源码编译安装,这里主要介绍源码编译安装httpd服务,并在浏览器上访问成功:
下面让我们来一起安装吧:
1.yum配置及开发工具的安装:
1).配置好yum源:
[root@xiaomazi ~]# mount /dev/cdrom /media/-->挂载光盘(也有其他方法,我就不演示了.) mount: block device /dev/sr0is write-protected, mounting read-only [root@xiaomazi ~]# cd /etc/yum.repos.d/ [root@xiaomazi yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo [root@xiaomazi yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@xiaomazi yum.repos.d]# ls CentOS-Base.repo.bak CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo [root@xiaomazi yum.repos.d]# vim httpd_yum.repo-->yum源名字 注意:我上面yum源是本地光盘挂载,若是网络,这个包在安装开发工具时候的时候会很慢, 所以这里就把名字改了(CentOS-Base.repo.bak)
2).列出所有可用yum repo.
[root@xiaomazi yum.repos.d]# yum repolist all Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile httpd_yum | 4.0 kB 00:00 ... repo idrepo name status C6.0-base CentOS-6.0 - Base disabled C6.0-centosplus CentOS-6.0 - CentOSPlus disabled httpd_yum httpd_yum enabled: 6,367 repolist: 6,367 [root@xiaomazi yum.repos.d]#
3)安装常用开发工具以免在安装httpd时候报错:
"Desktop Platform Development"、"Development tools"、"Server Platform Development".
[root@xiaomazi yum.repos.d]# yum groupinstall "Desktop Platfrom Development" [root@xiaomazi yum.repos.d]# yum groupinstall "Desktop Platfrom Development" [root@xiaomazi yum.repos.d]# yum groupinstall "Server Platform Development" [root@xiaomazi yum.repos.d]# yum groupinstall "Development Tools"
2.我们来看下系统上有没有自安装的httpd,如有将其卸载:
1).查看:rpm -q httpd
[root@xiaomazi ~]# rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64 [root@xiaomazi ~]# rpm -e httpd --nodeps [root@xiaomazi ~]# ls /etc/httpd/ conf.d [root@xiaomazi ~]# rm -rf /etc/httpd/-->删掉此前的配置文件 [root@xiaomazi ~]# 注意:如果有依赖关系,则使用(看情况使用哦.)--nideps忽略依赖关系:强制卸载
2).准备好软件包,安装:http-2.2.25.tar.bz2.并查看帮助信息.
[root@xiaomazi tmp]# tar xf httpd-2.2.25.tar.bz2 -->解压缩 [root@xiaomazi tmp]# cd httpd-2.2.25 [root@xiaomazi httpd-2.2.25]# ls [root@xiaomazi httpd-2.2.25]# less README -->INSTALL帮助文档 [root@xiaomazi httpd-2.2.25]# ./configure --help | less -->./configure帮助文档 [root@xiaomazi httpd-2.2.25]#
3).开始执行configure脚本:(注意在编译时候注意是否有报错信息.)
[root@xiaomazi httpd-2.2.25]# ./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd > --enable-so 换行了哈. --prefix=/usr/local/httpd-->指定文件路径 --sysconfdir=/etc/httpd-->指定配置文件路径 --enable-so-->允许模块化使用
---> 执行./configure后,时间长一些,请耐心等待吆...
4).在执行完./configure脚本后,通常会遇到以下几种情况(如果是安装完开发工具后就不会出现这种问题了哦):
I. 报错信息关键字:PCRE库
./configure: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option, or installthe PCRE library into the system, or build the PCRE library statically from the sourcewith nginx by using --with-pcre=<path> option. 解决方法: 先查看下:# rpm -qa |grep pcre(依赖程序的开发环境,很多程序都有主包、分包的) # yum list pcre*(显示出所有的pcre包) 再执行:yum -y installpcre-devel(yum安装PCRE库的相关包)
II. 报错信息关键字:openssl
./configure: error: the HTTP cache module requires md5 functions from OpenSSL library. You can either disable the module by using --without-http-cache option, or installthe OpenSSL library into the system, or build the OpenSSL library statically from the sourcewith nginx by using --with-http_ssl_module --with-openssl=<path> options. 运行:# yum -y install openssl-devel(yum安装OpenSSL-devel)
5).开始编译、安装:
[root@xiaomazi httpd-2.2.25]# make [root@xiaomazi httpd-2.2.25]# make install # make && make install-->也可以一起用.
---> 执行make、make install后,时间也会长一些,请耐心等待吆...
6).如果有系统自带的httpd在运行,并将其杀死之:
[root@xiaomazi httpd-2.2.25]# killall httpd-->杀死之
7).启动方式(路径方式执行也可以):
[root@xiaomazi httpd-2.2.25]# /usr/local/apache/bin/apachectl start 注意:这里我没有执行启动httpd吆!! 看看下面吧:
8).把Apache的二进制程序放到系统的PATH变量中,不用输入路径,方便程序执行:
[root@xiaomazi httpd-2.2.25]# vim /etc/profile.d/apache.sh PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH exportPATH [root@xiaomazi httpd-2.2.25]# . /etc/profile.d/apache.sh-->执行脚本使其生效哦.
9).执行:echo $PATH 看看出现这程序的路径了没有.
[root@xiaomazi httpd-2.2.25]# echo $PATH /usr/local/apache/bin:/usr/local/apache/sbin:/usr/lib6/qt-3.3/bin:/usr/local/sbin: /usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin [root@xiaomazi httpd-2.2.25]#
10).查看端口80是否被占用,执行命令:netstat -tnl
[root@xiaomazi httpd-2.2.25]# netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 ::1:631 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN tcp 0 0 ::1:6010 :::* LISTEN [root@xiaomazi httpd-2.2.25]#
11).执行启动httpd:
[root@xiaomazi httpd-2.2.25]# apachectl start
12).再次查看,执行命令:netstat -tnl
[root@xiaomazi httpd-2.2.25]# netstat -tnl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN ... ... tcp 0 0 :::80 :::* LISTEN -->80端口以启动 tcp 0 0 ::1:631 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN tcp 0 0 ::1:6010 :::* LISTEN [root@xiaomazi httpd-2.2.25]#
13).最后打开浏览器在地址栏内输入:http://172.16.251.96
显示: It works!恭喜:你的Apache可以运行了!!!
14).看下安装路径:
[root@xiaomazi httpd-2.2.25]# cd /usr/local/apache/ [root@xiaomazi apache]# pwd /usr/local/apache-->安装路径 [root@xiaomazi apache]# ls bin build cgi-bin error htdocs icons include lib logs manmanual modules [root@xiaomazi apache]#
15).头文件输出给系统:
第一种:
[root@xiaomazi apache]# ln -sv /usr/local/apache/include /usr/include/httpd-->方便管理.
将/usr/local/apache/include/的目录导入到/usr/include/httpd目录下并重新命名为httpd,这种方法方便管理,如果将来不想管理了,就删除httpd目录就可以了.
第二种:
[root@xiaomazi apache]# ln -sv /usr/local/apache/include/* /usr/include-->这个不方便以后管理
将/usr/local/apache/include/*下的所文件都导入到/usr/include目录下,这种方法文件多不方便管理,将来不想管理后删除文件多 麻烦.
16).库文件输出 lib:
我们的系统也不会在/usr/local/apache/lib下找库文件的,应该在/etc/ld.so.conf.d/创建个httpd.conf文件,并将路径写在httpd.conf文件上;系统开机时会将所有库文件缓存到/etc/ld.so.cache目录下的,因此,新添加的库文件系统默认是找不到的,要么从新启动系统,要么我们让系统重新生成库文件路径缓存:
I.系统开机时会将所有库文件缓存到/etc/ld.so.cache目录下的:
[root@xiaomazi apache]# ls -->查看:lib bin build cgi-bin error htdocs icons include lib logs manmanual modules [root@xiaomazi apache]# ls -l /etc/ld.so.cache -->所有库文件的缓存位置 -rw-r--r-- 1 root root 52542 Feb 26 12:22 /etc/ld.so.cache [root@xiaomazi apache]# ldconfig -v -->显示详细结果 让系统重新生成库文件路径缓存
II.写入/etc/ld.so.conf.d/httpd.conf库文件之前:
[root@xiaomazi apache]# ldconfig -v |grep "^[^[:space:]]" /usr/lib64/mysql: /usr/lib64/qt-3.3/lib: /usr/lib64/xulrunner-2: /lib: /lib64: /usr/lib: --->只会到这几个路径下找库. /usr/lib64: /lib64/tls: (hwcap: 0x8000000000000000) /usr/lib64/tls: (hwcap: 0x8000000000000000) /usr/lib64/sse2: (hwcap: 0x0000000004000000) [root@xiaomazi apache]# cat /etc/ld.so.conf.d/httpd usr/local/apache/bin(可以写多个路径)
III.编辑库文件
/etc/ld.so.conf.d/httpd.conf
,将路径写入文件中:
[root@xiaomazi apache]# cat /etc/ld.so.conf.d/httpd.conf usr/local/apache/lib [root@xiaomazi apache]#
IV.写入/etc/ld.so.conf.d/httpd.conf库文件之后:
[root@xiaomazi apache]# ldconfig -v |grep "^[^[:space:]]" ldconfig: Can‘t stat usr/local/apache/lib: No such fileor directory /usr/lib64/mysql:-->查看在这里哦. /usr/lib64/qt-3.3/lib: /usr/lib64/xulrunner-2: /lib: /lib64: /usr/lib: /usr/lib64: /lib64/tls: (hwcap: 0x8000000000000000) /usr/lib64/tls: (hwcap: 0x8000000000000000) /usr/lib64/sse2: (hwcap: 0x0000000004000000) [root@xiaomazi apache]#
17).导出man文件:
因为系统默认找不到,所以我们还是需要自己手动添加一条,vim /etc/man.config,为了确保找到的帮助信息是我们所要的应该怎么办呢?
[root@xiaomazi apache]# ls bin build cgi-bin error htdocs icons include lib logs manmanual modules [root@xiaomazi apache]# ls man man1 man8 [root@xiaomazi apache]# ls man/man1 dbmmanage.1 htdbm.1 htdigest.1 htpasswd.1 httxt2dbm.1 [root@xiaomazi apache]# ls man/man8 ab.8 apachectl.8 apxs.8 htcacheclean.8 httpd.8 logresolve.8 rotatelogs.8 suexec.8 [root@xiaomazi apache]# man httpd [root@xiaomazi apache]# vim /etc/man.config
A smile is the most beautiful language!!!
----------------------------------------------------------------------------------------
欢迎纠错哦..
---->小马子
本文出自 “凡事总要想着行” 博客,请务必保留此出处http://xiaomazi.blog.51cto.com/5891742/1363861
CentOS 6.5 源码编译安装htppd并启动之.,布布扣,bubuko.com
原文:http://xiaomazi.blog.51cto.com/5891742/1363861