Linux下编译安装httpd

本章学习内容

        ———介绍httpd

        ———-rpm和yum不同

        ———-编译安装优势

        ———-编译httpd

1、Apache和http的关系

    http是一款超文本传输协议,早期的Apache团队利用此协议研发了一款web服务软件。后来Apache团队逐渐强大,最终成为一个开源软件基金会(ASF),http也不再是其唯一维护的一款软件,再将这款服务软件称为Apache显然不合适,所以我们可以称其为httpd。不过有时候因为历史的原因,我们还是会将Apache作为一款Web服务软件来称呼,而其We服务规范也成为业界的标准。

下面的过程为了更加严谨,我们使用httpd来描述这款软件。

2、介绍rpm包和源码安装的区别

    rpm包是将源码编译好的软件包,只要安装既可以提供服务,而源码包是最底层的代码,如果要使用,还要经过编译,显然不如rpm包方便,但是俩者各有优势,生产生活中,源码编译安装居多,如果要是练习使用的话,rpm包安装居多。

3、编译安装的优势

    <1>自定义软件功能
    <2>优化编译参数,提高性能
    <3>解决不必要的软件间依赖
    <4>方便清理与卸载

4、编译安装httpd-2.2.29

    <1>准备开发工具、开发环境和开发库

[root@centos7/media/cdrom/Packages]#yum groupinstall "Development Tools"

    <2>准备源码并解压缩至某目录

[root@centos7~]#tar -xf httpd-2.2.29.tar.bz2 
[root@centos7~]#cd httpd-2.2.29/
[root@centos7~/httpd-2.2.29]#du -sh
42M    # 只有42M

    安装之前,可以查看README、INSTALL文档或者通过./configure –help来了解安装过程

    <3>执行.configure脚本,指定特性,检查外部环境,并根据其特性生成特定的makefile文件

[root@centos7~/httpd-2.2.29]#./configure --prefix=/usr/local/httpd --sysconfdir=/etc/httpd
checking for killpg... yes
checking bstring.h usability... no
checking bstring.h presence... no
checking for bstring.h... no
checking for unistd.h... (cached) yes
checking for syslog... yes
checking sys/times.h usability... yes
checking sys/times.h presence... yes
checking for sys/times.h... yes
creating test/Makefile
...
[root@centos7~/httpd-2.2.29]#du -sh
44M    # 增大到44M

    <4>make工具编译,将.c源码根据makefile文件编译成应用程序

[root@centos7~/httpd-2.2.29]#make
bmod_status.la modules/generators/libmod_autoindex.la modules/generators/libmod_asis.la modules/generators/libmod_cgi.la modules/mappers/libmod_negotiation.la modules/mappers/libmod_dir.la modules/mappers/libmod_actions.la modules/mappers/libmod_userdir.la modules/mappers/libmod_alias.la modules/mappers/libmod_so.la server/mpm/prefork/libprefork.la os/unix/libos.la -lm /root/httpd-2.2.29/srclib/pcre/libpcre.la /root/httpd-2.2.29/srclib/apr-util/libaprutil-1.la /root/httpd-2.2.29/srclib/apr-util/xml/expat/libexpat.la /root/httpd-2.2.29/srclib/apr/libapr-1.la -lrt -lcrypt -lpthread -ldl 
make[1]: Leaving directory `/root/httpd-2.2.29'
...
[root@centos7~/httpd-2.2.29]#du -sh
74M    # 增大到74M	

    <5>make install,创建目录并复制文件

[root@centos7~/httpd-2.2.29]#make install
...
mkdir /usr/local/httpd/man
mkdir /usr/local/httpd/man/man1
mkdir /usr/local/httpd/man/man8
mkdir /usr/local/httpd/manual
make[1]: Leaving directory `/root/httpd-2.2.29'

    <6>启动服务

[root@centos7 bin]# pwd
/usr/local/httpd/bin
[root@centos7 bin]#./apachectl start
# 查看端口
[root@centos7~]#netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      2021/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1577/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1575/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1974/master         
tcp6       0      0 :::80                   :::*                    LISTEN      74875/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      1577/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1575/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1974/master

    <7>测试

# telnet测试服务是否可正常使用
[root@centos6 ~]# telnet 10.1.0.17
Trying 10.1.0.17...
telnet: connect to address 10.1.0.17: No route to host
# 清除防火墙规则
[root@centos7~]#iptables -F
# 连接
[root@centos6 ~]# links 10.1.0.17

wKiom1e9O-KSCkwwAABatwDguuI688.jpg

    配置基本完成,为了以后操作方便,完成下面操作

    <8>二进制文件导入PATH环境变量中

       基于文件的方式实现

[root@centos7~]#vim httpd.sh
#!/bin/bash
PATH=$PATH:/usr/local/httpd/bin
# 重读配置文件
[root@centos7~]#. /etc/profile.d/httpd.sh 
# 查看PATH环境变量
[root@centos7~]#echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/httpd2/bin:/root/bin:/usr/local/httpd/bin

    <9>导入库文件

       基于链接的方式实现

[root@centos7~]#vim /etc/ld.so.conf.d/httpd.conf
/usr/local/httpd/lib
# 重读库文件列表
ldcofig -v

    <10>导入头文件

[root@centos7~]#ln -sv /usr/local/httpd/include/ /usr/include/httpd
‘/usr/include/httpd’ -> ‘/usr/local/httpd/include/’

    <11>导入帮助手册

[root@centos7~]#vim /etc/man_db.conf
MANDATORY_MANPATH                       /usr/local/httpd/man
...
# 重读配置文件
[root@centos7~]#. /etc/man_db.conf

    

原创文章,作者:mfwing,如若转载,请注明出处:http://www.178linux.com/40046

(0)
mfwingmfwing
上一篇 2016-08-25
下一篇 2016-08-25

相关推荐

  • lamp部署及编译安装

    lamp 资源类型: 静态资源:原始形式与响应给客户端的结果一致; 动态资源:原始形式通常为程序文件(为某种编程语言开发),需要运行后将生成的结果展示给客户端;如果请求的资源不存在那么结果就会重定向至指定的文件中 客户端技术:javascript 服务端技术:php, jsp, … CGI:Common Gateway Interfa…

    Linux干货 2016-10-19
  • Linux-start

    学习计划:参见N24学习时间与线路图. 目标:完成作业,考试过关。 宣言:人但有追求,世界亦会让路。

    Linux干货 2016-10-24
  • OpenStack Icehouse私有云实战部署

    前言 相信你一定对“云主机”一词并不陌生吧,通过在Web页面选择所需主机配置,即可快速定制一台属于自己的虚拟主机,并实现登陆操作,大大节省了物理资源。但这一过程是如何实现的呢?本文带来OpenStack Icehouse私有云实战部署。 OpenStack 简介 OpenStack是由网络主机服务商Rackspace和美国宇航局联合推出的一个开源项目,Ope…

    Linux干货 2015-07-29
  • 网络互联参考模型(详解)

    网络互联参考模型 1. 什么是协议 为了使数据可以在网络上从源传递到目的地,网络上所有设备需要“讲”相同的“语言” 描述网络通信中“语言”规范的一组规则就是协议 例如:两个人交谈,必须使用相同的语言,如果你说汉语,他说阿拉伯语…… 数据通信协议的定义 决定数据的格式和传输的一组规则或者一组惯例 2. 协议分层 网络通信的过程很复杂: 数据以电子信号的形式穿越…

    Linux干货 2015-05-07
  • Linux文件管理初步(第二周)

    第二周作业 1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 目录管理管理类命令 mkdir make directories mkdir [OPTION]… DIRECTORY… 注意:路径基名作为命令的作用对象时,基名之前的路径必须要存在;     -p:自动按…

    Linux干货 2016-09-05
  • 自制linux和内核编译

    自制linux和内核编译 1、分区并创建文件系统 fdisk /dev/sdb分两个必要的分区/dev/sdb1对应/boot /dev/sdb2对应根/mkfs.ext4 /dev/sdb1mkfs.ext4 /dev/sdb2 2、挂载boot mkdir/mnt/bootmount /dev/sdb1 /mnt/boot 3、安装grub grub-i…

    Linux干货 2016-09-23