apache-2.4.9安装与实战

简介:

一. httpd-apache.2.4.9安装过程


编译需要依赖 pcre-devel-7.8-6.el6.bz2  apr-1.5.0.bz2  apr-util-1.5.3.bz2  

按需进行依次编译安装

pcre-devel

1
2
3
4
tar  xf pcre-devel-7.8-6.el6.bz2
cd  pcre-devel-7.8-6
. /configure  --prefix= /usr/local/pcre
make  &&  make  install

apr

1
2
3
4
tar  xf apr-1.5.0.bz2
cd  apr-1.5.0
. /configure  --prefix= /usr/local/apr
make  &&  make  install

apr-util

1
2
3
4
tar  xf apr-util-1.5.3.bz2
cd  apr-util-1.5.3
. /configure  --prefix= /usr/local/apr-util  --with-apr= /usr/local/apr
make  &&  make  install

httpd

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装之前请确保系统之前预装的httpd已被卸载
tar  xf httpd-2.4.9.bz2
cd  httpd-2.4.9
# 参数依次是: httpd安装路径  httpd配置文件存放路径  启用模块化方式  启用ssl安全连接
# 启用cgi脚本功能  启用url重写  启用服务器压缩  启用正则表达式支持    apr安装路径
# apr util安装路径   启用常用模块以确保apache正常工作    将多进程模型非静态化
# 启用事件异步模型
. /configure  --prefix= /usr/local/apache  --sysconfdir= /etc/httpd  --
enable -so -- enable -ssl -- enable -cgi -- enable -rewrite --with-zlib --
with-pcre= /usr/local/pcre  --with-apr= /usr/local/apr  --with-apr-
util= /usr/local/apr-util/  -- enable -modules=most -- enable -mpms-
shared=all --with-mpm=event
make  &&  make  install


附: SerV风格的启动脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
#
# httpd        Startup script for the Apache HTTP Server
#
# chkconfig: - 85 15
# description: The Apache HTTP Server is an efficient and extensible  \
#          server implementing the current HTTP standards.
# processname: httpd
# config: /etc/httpd/conf/httpd.conf
# config: /etc/sysconfig/httpd
# pidfile: /var/run/httpd/httpd.pid
#
/etc/rc .d /init .d /functions
if  [ -f  /etc/sysconfig/httpd  ];  then
         /etc/sysconfig/httpd
fi
HTTPD_LANG=${HTTPD_LANG- "C" }
INITLOG_ARGS= ""
apachectl= /usr/local/apache/bin/apachectl    # 修改apachectl路径
httpd= /usr/local/apache/bin/httpd       # 修改httpd bin路径
prog=httpd
pidfile=${PIDFILE- /var/run/httpd .pid}
lockfile=${LOCKFILE- /var/lock/subsys/httpd }
RETVAL=0
STOP_TIMEOUT=${STOP_TIMEOUT-10}
start() {
         echo  -n $ "Starting $prog: "
         LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
         RETVAL=$?
         echo
         [ $RETVAL = 0 ] &&  touch  ${lockfile}
         return  $RETVAL
}
stop() {
     echo  -n $ "Stopping $prog: "
     killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
     RETVAL=$?
     echo
     [ $RETVAL = 0 ] &&  rm  -f ${lockfile} ${pidfile}
}
reload() {
     echo  -n $ "Reloading $prog: "
     if  ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >& /dev/null then
         RETVAL=6
         echo  $ "not reloading due to configuration syntax error"
         failure $ "not reloading $httpd due to configuration syntax error"
     else
         # Force LSB behaviour from killproc
         LSB=1 killproc -p ${pidfile} $httpd -HUP
         RETVAL=$?
         if  [ $RETVAL - eq  7 ];  then
             failure $ "httpd shutdown"
         fi
     fi
     echo
}
# See how we were called.
case  "$1"  in
   start)
     start
     ;;
   stop)
     stop
     ;;
   status)
         status -p ${pidfile} $httpd
     RETVAL=$?
     ;;
   restart)
     stop
     start
     ;;
   condrestart|try-restart)
     if  status -p ${pidfile} $httpd >& /dev/null then
         stop
         start
     fi
     ;;
   force-reload|reload)
         reload
     ;;
   graceful|help|configtest|fullstatus)
     $apachectl $@
     RETVAL=$?
     ;;
   *)
     echo  $ "Usage: $prog {start|stop|restart|condrestart|try-restart|force-reload|reload|status|fullstatus|graceful|help|configtest}"
     RETVAL=2
esac
exit  $RETVAL


二 .实战: 配置CGI、虚拟主机、https、mod_deflate、mod_status


A) 配置CGI、(在部分业务中常见,例如邮箱)

具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 在 /etc/named/named.conf 文件中找到 alias_module 模块
# 替换cgi-bin的输出路径
<IfModule alias_module>
# 在此路径下可编写shell脚本实现cgi方式输出html内容
ScriptAlias  /cgi-bin/  "/usr/local/apache/cgi-bin/"
< /IfModule >
# cgi-bin示例
#!/bin/bash
#
userinfo=` cat  /etc/passwd  grep  ^root`
cat  << EOF
Content-Type: text /html
<pre>
The  hostname  is: ` hostname `.
The  time  is: ` date `.
The User Information: ${userinfo}.
< /pre >
EOF

运行效果如下:

wKioL1MqqkmyskBJAAD6XkbXSLI103.jpg


B) 虚拟主机: (提高主机生产力)

   一机多站点成为可能,需要取消中心主机在2.4.x + 的版本上配置虚拟主机已经不需要支持NameVirtualHost

具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 在 httpd.conf 中开启vhost子配置文件
Include  /etc/httpd/extra/httpd-vhosts .conf
vim  /etc/httpd/extra/httpd-vhosts .conf
# 在此要注意关闭之前的主机配置也就是 httpd.conf
# 中的<Directory>节点
<VirtualHost *:80>
     DocumentRoot  "/var/www/html/a.com"
     ServerName www.a.com
     ServerAlias www.aa.com
     <Directory />
         AllowOverride none
         Require all granted
     < /Directory >
     ErrorLog  "logs/dummy-host.example.com-error_log"
     CustomLog  "logs/dummy-host.example.com-access_log"  common
< /VirtualHost >
<VirtualHost *:80>
     DocumentRoot  "/var/www/html/b.org"
     ServerName www.b.org
     ErrorLog  "logs/dummy-host2.example.com-error_log"
     <Directory />
         AllowOverride none
         Require all granted
     < /Directory >
     CustomLog  "logs/dummy-host2.example.com-access_log"  common
< /VirtualHost >

运行效果如下:

wKiom1MqqnGgnUNIAADXSH53q_I788.jpg


wKioL1MqqkvCrmtzAAIsTVZtm4o947.jpg


C) mod_deflate (节约带宽成本)

   启用压缩模块,gzip,deflate

具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 在 httpd.conf 中开启压缩模块
LoadModule deflate_module modules /mod_deflate .so
# 在 httpd.conf 中编写如下配置
<IfModule deflate_module>
AddOutputFilterByType DEFLATE text /plain
AddOutputFilterByType DEFLATE text /html
AddOutputFilterByType DEFLATE application /xhtml +xml
AddOutputFilterByType DEFLATE text /xml
AddOutputFilterByType DEFLATE application /xml
AddOutputFilterByType DEFLATE application /x-javascript
AddOutputFilterByType DEFLATE text /javascript
AddOutputFilterByType DEFLATE text /css
# 压缩等级(0-9),数值越大CPU压力也就越大
DeflateCompressionLevel 9
# 非Mozilla4标准浏览器仅开启gzip压缩
BrowserMatch ^Mozilla /4  gzip -only-text /html
# Mozilla4.06,4.07,4.08版本不开启压缩
BrowserMatch ^Mozilla /4 \.0[678] no- gzip
# IE浏览器不开启压缩
BrowserMatch \bMSI[E] !no- gzip  ! gzip -only-text /html
< /IfModule >

运行效果如下:

wKiom1MqqnPgPVbcAAMsBqGGgOQ272.jpg


D) setHandler (apache自带探测功能)

   可访问服务器信息,为服务器监控提供便利


具体配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 需要注意: SetHandler中的内容必要要经过用户认证
# htpasswd -c /etc/httpd/conf/.htpasswd -M tom
# -c 生成 .htpasswd 文件 -M md5加密用户密码
# 在 httpd.conf 中编写如下配置
<Location  /server-status >
     SetHandler server-status
     AuthType Basic
     AuthName  "Server Status"
     AuthUserFile  "/etc/httpd/conf/.htpasswd"
     Require valid-user
     Order deny,allow
     Allow from all
< /Location >


# 其他SetHandler可设置的值及对应模块

default-handler: 使用 default_handler() 发送文件,它是用来处理静态内容的处理器(核心)。

send-as-is: 直接发送,不增加 HTTP 头(mod_asis)。

cgi-script: 按 CGI 脚本处理(mod_cgi)。

imap-file: 按 imagemap 规则处理(mod_imagemap)。

server-info: 取得服务器配置信息(mod_info)。

server-status: 取得服务器状态报告(mod_status)。

type-map: 用于内容协商,按类型映射文件处理(mod_negotiation)。


运行效果如下:

wKioL1Mqqk2i3lwmAAN89lmjRZg129.jpg

wKioL1Mqqk7CSnNaAARoL3GKchw982.jpg


E) https (为私密信息保驾护航)

   https链接采用证书认证流程,客户端发送链接请求与服务器进行握手,协商加密方式,

   服务器发送带有证书签发者与自身信息的证书给客户端验证,客户端验证完毕即建立

   https安全链接通信.


具体配置如下:

1) 证书服务器自签证书阶段(需要密钥对一组,自签证书一张)

1
2
3
4
5
cd  /etc/pki/CA
openssl genrsa -out private /cakey .pem 2048
openssl req -new -x509 -key private /cakey .pem -out cacert.pem -days 3650
touch  index.txt serial calnumber
echo  01 > serial

wKiom1MqqnaiFSi3AAXtAHygnAY414.jpg

2) Web服务器安装mod_ssl模块

1
yum -y  install  mod_ssl

3) Web服务器申请证书阶段

1
2
3
cd  /var/www/html
openssl genrsa -out httpd.key 1024
openssl req -new -key httpd.key -out httpd.csr

wKioL1Mqqk-AG7UNAAXVA1qXTME538.jpg

4) 证书服务器签署证书

1
openssl ca - in  /var/www/html/httpd .csr -out  /var/www/html/httpd .crt -days 365

wKiom1MqqneCrmISAAVC98KGgOQ862.jpg

5) 启用ssl模块与配置文件

1
2
3
4
5
6
7
8
9
10
11
12
# 在 httpd.conf 中开启ssl_module模块和ssl的配置文件
# LoadModule ssl_module modules/mod_ssl.so
# Include /etc/httpd/extra/httpd-ssl.conf
vim  /etc/httpd/extra/httpd-ssl .conf
<VirtualHost *:443>
DocumentRoot  "/var/www/html"
ServerName www.king.com:443
ErrorLog  "/usr/local/apache/logs/error_log"
TransferLog  "/usr/local/apache/logs/access_log"
SSLEngine on
SSLCertificateFile  "/var/www/html/httpd.crt"
SSLCertificateKeyFile  "/var/www/html/httpd.key"

6) 重启apachectl服务

1
apachectl restart


运行效果如下:

# 没有将服务器证书导入到客户端受信任机构列表

wKioL1MqqlDhr5jcAAIS8O8Uuf0861.jpg

# 下载 httpd.crt 将其导入安装在客户端

wKiom1MqqnqTc6K8AAQD-CaAjWA130.jpg

# 将证书安放在受信任的根证书办法机构(12306买过票的童鞋都知道 :)

wKioL1MqqlWBJImXAAGy7V6C8S8662.jpg

# 导入成功后此处信息应为绿色,显示了链接到www.king.com的加密信息

wKiom1Mqqn2DYHs5AAHN4fOdUOM179.jpg










     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1380490,如需转载请自行联系原作者


相关文章
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
1173 5
|
Ubuntu Java 应用服务中间件
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
如何通过 Apt-Get 在 Ubuntu 14.04 上安装 Apache Tomcat 7
382 0
|
消息中间件 Ubuntu Java
在Ubuntu 18.04上安装Apache Kafka的方法
在Ubuntu 18.04上安装Apache Kafka的方法
550 0
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
335 3
|
Ubuntu 网络安全 Apache
Ubuntu下安装Apache2.4.7遇到的问题及解决办法
Ubuntu下安装Apache2.4.7遇到的问题及解决办法
383 2
|
消息中间件 Ubuntu Java
Ubuntu系统上安装Apache Kafka
Ubuntu系统上安装Apache Kafka
|
Ubuntu 关系型数据库 MySQL
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
在 Ubuntu 14.04 服务器上使用 Apache 安装 Drupal 的方法
266 0
|
存储 缓存 Ubuntu
如何在 Apache Web 服务器中安装、配置和使用模块
如何在 Apache Web 服务器中安装、配置和使用模块
396 0
|
Ubuntu Java 应用服务中间件
在Ubuntu 16.04上安装Apache Tomcat 8的方法
在Ubuntu 16.04上安装Apache Tomcat 8的方法
327 0

热门文章

最新文章

推荐镜像

更多