CentOS6.5 LAMP之一编译httpd

apache服务器程序

命令httpd:

-t 测试配置文件

-l 静态模块

-D DUMP_MODULES 动态模块

-h获得帮助

-M:相当于-D DUMP_MODULES

-D DUMP_VHOSTS:列出虚拟主机

htpasswd:

为基于文件basic认证创建和更新用户认证文件

apachectl 自带脚本

apachectl start 开启httpd服务

httpd服务控制工具;

ab:apache benchmark Apache性能基准测试工具

apxs:httpd得以扩展使用第三方模块的工具 (钩子接口)钩住第三方模块

htcacheclean:

磁盘缓存清理工具

htdigest:

为digest摘要认证创建和更新用户认证文件

httxtt2dbm:

为rewrite map(重写映射表)创建dbm格式的文件

rotatelogs:

不关闭httpd而切换其使用日志的工具(如果站点访问量较大,月访问量文件可能到达亿级别了),当日志文件增长速度过快,access_log,我们的rotatelogs可以把原来的access_log重命名为access_log.1,进而生成一个新的access_log让我们的web服务写日志。平滑的实现日志切割

suexec:运行进程的用户身份,在配置文件中。

当httpd进程需要以另外用户身份去访问资源文件时,可以suexec做临时身份切换。

ab工具的初步使用:(同类的工具:http_load,webbench seige)

ab不能真实模拟场景

真正的工作环境大概分三种:

1、生产线上环境:提供真正服务

2、测试 环境

3、开发环境

ab [options] URL

-c # 模拟发起多少个并发请求

-n # 模拟的总请求数

-n 的值一定要大于等于 –c 的值

如:

[[email protected] ~]# ab -c 50 -n 500 http://www.aaabig.com/index.html
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking www.aaabig.com (be patient)
Completed 100 requests

一个鼓吹1000MB带宽的假设传输速率是125mb/s 1000/8=125mb/s

CentOS6编译安装httpd2.4

httpd2.4有哪些新特性呢?

1)MPM支持在运行时装载:装载方式:--enable-mpms-shared=all 等于把所有模块都编译进来编译成共享模块

--with-mpm={prefork|worker|event}

2)支持event模块 mpm

3)支持异步读写

4)支持每个模块和每个目录分别使用不同的日志级别

5)支持每请求的配置:<IF> <Elseif>

6)支持增强版的表达式分析器

7)支持毫秒级的keep alive的timeout

8)支持FQDN的虚拟主机,不在需要NameVirtualhost指令

9)支持用户使用自定义变量!

10)新增了一些模块:mod_proxy_fcgi ,mode_ratelimit

mod_request(对用户请求做更大作用)mod_remoteip(对远端的ip地址做更强大的控制能力)

11)修改了一些配置机制:不再支持使用order,allow,deny,基于ip的访问控制,改为require

CentOS6默认是不太支持安装http2.4,很多特性无非启动,如果非要安装,需要手动安装好几个版本。

httpd程序依赖于apr和apr-until(httpd2.4依赖于apr1.4以上的版本)

apr:apache portable runtime(相当(于httpd运行在虚拟机)不管在什么操作系统平台上,它会无视底层的差异

1.安装之前,先把http服务停掉

2.查看是否安装过包组 Development Tools Server platform

3使用rpm –qa | grep apr*查看版本

httpd2.4需要的组建差不多下载下来了,放到/tmp目录下,叫做

打红勾那三个

先解压缩apr-1.5.0.tar.bz2,进而cd进该目录

./configure --help

默认安装在/usr/local目录下,./configure --prefix=/usr/local/apr-1.5为了不覆盖CentOS原有的apr1.5,所以才使用此选项。

如果安装不存在问题,就直接make&&make install就ok了

笔者在安装时候出现过的问题跟大家分享一下,

make[1]: execvp: /root/20140813/apr-1.5.1/build/mkdir.sh: Permission denied,出现权限denied,肯定是mkdir.sh本身没有写权限,于是chmod a+x 给它一个全部人都可以执行的写权限。

笔者这里曾经还有错误,显示:libtool: link: you must specify an output file libtool: link: Try `libtool --help --mode=link‘ for m…

笔者通过找问题,感觉曾经是由xftp—>windows—>CentOS 6.5上,这里configure刚拷过来的时候也没有x权限,估计肯定是转到windows时候出现了问题。

这时候安装完成,显示:

/usr/bin/install -c -m 644 apr.exp /usr/local/apr-1.5/lib/apr.exp
/usr/bin/install -c -m 644 apr.pc /usr/local/apr-1.5/lib/pkgconfig/apr-1.pc
for f in libtool shlibtool; do \
        if test -f ${f}; then /usr/bin/install -c -m 755 ${f} /usr/local/apr-1.5
    done
/usr/bin/install -c -m 755 /tmp/new/apr-1.5.1/build/mkdir.sh /usr/local/apr-1.5/buil
for f in make_exports.awk make_var_export.awk; do \
        /usr/bin/install -c -m 644 /tmp/new/apr-1.5.1/build/${f} /usr/local/apr-
    done
/usr/bin/install -c -m 644 build/apr_rules.out /usr/local/apr-1.5/build-1/apr_rules.
/usr/bin/install -c -m 755 apr-config.out /usr/local/apr-1.5/bin/apr-1-config
[[email protected] apr-1.5.1]#

于是再次用相同的方法安装另一个包叫apr-util,

[[email protected] new]# ll
total 6400
drwxr-xr-x 28 1000 1000    4096 Aug 13 15:36 apr-1.5.1
-rw-r--r--  1 root root  817569 Aug 12 23:40 apr-1.5.1.tar.bz2
-rw-r--r--  1 root root  695303 Aug 12 23:38 apr-util-1.5.3.tar.bz2
-rw-r--r--  1 root root 5031834 Aug 12 23:41 httpd-2.4.10.tar.bz2
[[email protected] new]# tar xf apr-util-1.5.3.tar.bz2
[[email protected] new]# cd apr-util-1.5.3

[[email protected] apr-util-1.5.3]# ./configure –help 注意这里有一项很关键,—with-apr

--with-apr=PATH         prefix for installed APR or the full path to
                             apr-config

你需要告诉apr-util去哪里找apr,于是我们需要指定刚才安装的apr的路径

[[email protected] apr-util-1.5.3]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr-1.5/

然后

configure: creating ./config.status
config.status: creating Makefile
config.status: creating export_vars.sh
config.status: creating build/pkg/pkginfo
config.status: creating apr-util.pc
config.status: creating apu-1-config
config.status: creating include/private/apu_select_dbm.h
config.status: creating include/apr_ldap.h
config.status: creating include/apu.h
config.status: creating include/apu_want.h
config.status: creating test/Makefile
config.status: creating include/private/apu_config.h
config.status: executing default commands
[[email protected] apr-util-1.5.3]#

安装完成

先解压缩httpd,老规矩,cd到该目录下来,然后./configure --help来查看帮助

这里我们列举一下安装前的长长的选项,都有哪些需要添加的:

[[email protected] httpd-2.4.10]# ./configure --prefix=/usr/local/apache24(安装在哪个目录下) --sysconfdir=/etc/httpd(配置文件的文件夹放到哪里)

--enable-so(关键,支不支持动态装卸载模块都由它来决定)

--enable-ssl 启动ssl模块!(但是在装载这项之前,需要看看是否安装过openssl-devel模块)

--enable-cgi(支不支持cgi)

--enable-rewrite(支不支持URL重写,很有用)

--with-zlib(数据报文专用的压缩库)(这里需要yum install一个叫pcre-devel的包)

--with-apr=/usr/local/apr-1.5

--with-apr-util=/usr/local/apr-util

--enable-mpms-shared=all

--with-mpm=event (选择用event模式)

--enable-modules={all|most}(选择那些模块进行编译)

编译好了以后,make && make install,经过漫长的安装,安装成功了,然后就可以启动了,首先你要ss –tnlp 确保80端口没有被占用,因为我们还有服务启动脚本,需要编辑/etc/profile.d/httpd24.sh

export PATH=/usr/local/apache/bin:$PATH

然后执行source一下该文件

[[email protected] httpd-2.4.10]# source /etc/profile.d/httpd24.sh
[[email protected] httpd-2.4.10]# echo $PATH
/usr/local/apache/bin:/usr/lib64/qt-3.3/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

看看路径里面有了!

apachectl start

可以了!

it works!

安装完以后还要有收尾工作,查看cgi-bin服务器脚本二进制程序,默认显示的it works!页面在编译安装后的/usr/local/apache24/htdocs目录下,而不在/var/www/html下,而服务器端脚本在cgi-bin目录下,error不是错误日志,而是一大堆error错误页面。还有include下的头文件们,可以基于二次开发。

如果需要把httpd24做好的头文件放到系统中去,方便做二次开发,可以使用ln -sv /usr/local/apache24/include/ /usr/include/

最后可以导出man文档帮助,vim /etc/man.config 然后加入:

MANPATH /usr/local/apache24/man

在httpd2.4下基于ip做访问控制

允许所有主机访问:Require all granted

拒绝所有主机访问: Require all deny

控制某特定主机访问:

Require ip IPADDR

Require not ip IPADDR

IPADDR:

单个ip

network/Netmask

Network/Length :172.16.0.0/16

Net:172.16

Require host HOSTNA HOSTNAME

Require not host HOSTNAME

范例:假设我不想让192.168.1.121访问我这台主机,则要在/etc/httpd/httpd.conf定义Require,并且还需要另外用<>括起来。如:

<RequireAll>
   Require not ip 192.168.1.121
   Require all granted
</RequireAll>

则用192.168.1.121连接则显示:

[[email protected] tmp]# elinks 192.168.1.126

无权限!

下面来谈一下httpd2.4怎么设置虚拟主机:

先到主配置文件上找到DocumentRoot一项,注释掉,

215 #
216 #DocumentRoot "/web/htdoc"
217 <Directory "/web/htdoc">

还是在主配置文件上找到/vhost一项,找到并把前面的注释去掉

类似

# Virtual hosts
Include /etc/httpd/extra/httpd-vhosts.conf

然后找到/etc/httpd/extra/httpd-vhosts.conf文件,从里面修改

千万要记得用权限<Directory> </Directory>里面可以定义目录访问设定。

  主机1

主机2

CentOS6.5 LAMP之一编译httpd

时间: 2024-12-08 23:13:35

CentOS6.5 LAMP之一编译httpd的相关文章

Linux lamp环境编译安装

1.安装准备: 1)httpd-2.0.52.tar.gz 2)mysql-4.1.12.tar.gz 3)libxml2-2.6.27.tar 4)freetype-2.1.10.tar 5)gd-2.0.33.tar 6)jpegsrc.v6b.tar 7)libpng-1.2.16.tar 8)zlib-1.2.3.tar 9)freetds-0.64.tar.gz 10)php-4.3.9.tar.gz 11)phpMyAdmin292.tar.gz 12)ZendOptimizer-3

在CentOS6.7操作系统上编译安装httpd2.4

功能描述: 在CentOS6.7操作系统上,编译安装apache服务,实现定制功能等 一.安装前提 1)安装编译httpd需要的软件包 [[email protected] ~]#  yum -y install wget gcc-c++ ncurses ncurses-devel cmake make perl bison openssl openssl-devel gcc* libxml2 libxml2-devel   curl-devel libjpeg* libpng* freetyp

centos6.4 源码安装httpd

什么是源码  编译器 可运行档 在 Linux 系统上面,一个文件能不能被运行看的是有没有可运行的那个权限 (具有 x permission),不过,Linux 系统上真正认识的可运行档其实是二进位文 ( binary program), /usr/bin/passwd, /bin/touch 这些个文件即为二进位程序码 在 Linux 上面最标准的程序语言为 C ,所以我使用 C 的语法进行原始程序码的书写,写完之后,以 Linux 上标准的 C 语言编译器 gcc 这支程序来编译,就可以制作

centos6.8服务器配置之编译安装PHP、配置nginx

php version 5.6.31.nginx version: nginx/1.10.2 1.下载: wget http://cn2.php.net/distributions/php-5.6.31.tar.gz 2.安装组件 yum install -y gcc gcc-c++ make zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libx

CentOS6.5 Nginx优化编译配置

说到Nginx,它真的算是我在运维工作中的好朋友,它优异的性能和极高的工作效率实在是让人大爱,来自internet的报告称其epoll模型能够支持高达50000个并发连接数. Epoll[维基百科]: epoll是Linux下 多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符 集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历

CentOS6.5 web-http协议之httpd篇之一

web服务在网络通信中很重要,而我们这里要展示的就是web服务中的重中之重-http协议 在CentOS6.5下,http协议的实现工具叫httpd,我们可以使用命令来查看当前httpd的版本,以及是否在本机上装了httpd服务了. 例如: [[email protected] conf]# rpm -q httpd httpd-2.2.15-29.el6.centos.x86_64 这是httpd的2.2.15版本.这个版本的httpd有很多特性,下面用示例陈述:假设我们的环境:一台vmwar

CentOS6.5 Linux上面编译Hadoop2.4源码

今天来说说编译hadoop源码的事情吧~ 1.首先下载源码 地址:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.4.0/ 2.加压tar包到指定文件夹:/home/hadoop/soft/hadoop tar zxvf hadoop-2.4.0-src.tar.gz 3.Linux编译环境准备 java环境准备 参照:http://blog.csdn.net/enson16855/article/details/8708574 ma

Ubuntu 12.04下PHP环境的搭建(LAMP)--非编译

1.首先打开命令行,切换到root身份,获得最新的软件包su root sudo apt-get install update 2.安装MySQL数据库sudo apt-get install mysql-server mysql-client下图为提示输入数据库密码,然后回车,之后还有提示,再重复输入一次,再回车 最后安装完后进数据库测试一下是否安装成功,看到欢迎信息就ok了mysql -uroot -p 3.安装Apache服务器sudo apt-get install apache2 安装

编译httpd细节

html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary { display: block } audio,canvas,progress,video { display: inline-block; vertical-align: baseline } audio:not([co