Linux网站架构系列之Apache----部署篇

简介:

Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。其在Linux平台上,结合Mysql,Php形成的LAMP网站架构是一个强大的Web应用程序平台,并且因其低廉的成本,高效的性能受到中小型企业的强烈追捧。

本篇将为大家讲述如何部署一台Apache服务器。


环境:

1
2
3
4
5
6
7
8
9
CentOS6.4 x86_64位 采用最小化安装,系统经过了基本优化
selinux为关闭状态,iptables为无限制模式
ip:192.168.1.113 /24
apache版本:httpd-2.4.6
apr版本:apr-1.4.8
apr-util版本:apr-util-1.5.2
pcre版本:pcre-7.8
源码包存放位置: /server/tools
源码包编译安装位置: /etc/local/ 软件名称


一、准备工作

1、开发环境部署

因为本次实验中系统是最小化安装的,所以在安装apache之前需要先安装开发环境和依赖包。

1
2
[root@c64-web ~] # yum groupinstall "Development tools" "Server Platform Development" -y   #安装这两个开发环境的软件包组
[root@c64-web ~] # yum install pcre* -y #安装pcre兼容的正则表达式

由于我们安装的httpd-2.4.6版本比较新,因此默认开发环境包中自带的apr包版本比较低,只能支持2.2.x系列的httpd版本,而这里至少要1.4版本以上的apr才被支持。因此我们需要先编译安装apr才行。

注意:apache2.2.x版本,只要安装了系统的默认开发环境包组,就不需要再安装apr了。

apr介绍

Apache可移植运行时( Apache Portable Runtime,简称APR),它是Apache HTTP服务器的支持库,提供了一组映射到下层操作系统的API。APR的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能,因此Apache使用这个之后可以有效的提高Apache的静态页面的处理能力。

apr安装

1
2
3
4
5
6
7
8
9
[root@c64-web ~] # cd /server/tools/     #首先我们要先进到存放源码的目录
[root@c64-web tools] # wget http://apache.dataguru.cn/apr/apr-1.4.8.tar.gz  #下载apr源码包
[root@c64-web tools] # tar zxf apr-1.4.8.tar.gz    #解压源码包
[root@c64-web tools] # cd apr-1.4.8
[root@c64-web apr-1.4.8] # ./configure --prefix=/usr/local/apr  #编译前配置,并指定安装目录,方便维护
[root@c64-web apr-1.4.8] # make           #执行编译
[root@c64-web apr-1.4.8] # make install   #执行安装
执行编译和安装的过程我们可以缩减为下面一条命令即可
[root@c64-web tools] # make&&make install  #该命令表示,当执行make编译成功后接着执行make install进行安装

仅仅装了apr是不够的,这里还需要安装apr-util这个开发包。

为什么呢?

一般情况下,我们很容易把APR开发包理解为仅仅是一个开发包,不过事实上并不是如此。目前,完整的APR实际上包含了三个开发包:apr、apr-util以及apr-iconv,每一个开发包分别独立开发,并拥有自己的版本。而apr-iconv在apache安装时暂不涉及,在以后tomcat调优时会涉及到这个开发包,到时再关注即可。因此,下面我们就继续开始安装apr-util。

1
2
3
4
5
6
[root@c64-web apr-1.4.8] # cd ..
[root@c64-web tools] # wget http://apache.dataguru.cn/apr/apr-util-1.5.2.tar.gz
[root@c64-web tools] # tar zxf apr-util-1.5.2.tar.gz
[root@c64-web tools] # cd apr-util-1.5.2
[root@c64-web apr-util-1.5.2] #  ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr      #因为apr-util依赖于apr,因此这里需要指定apr的安装路径
[root@c64-web apr-util-1.5.2] # make&&make install #这里用上面提到的快捷命令

2、源码包验证

开发环境搞定之后,就要准备apache的源码包了。我们可以从apache的官网或者镜像站点进行下载。同时我们还需要下载apache的公钥和数字签名文件,以便实现对源码包一致性的验证,确保包的安全性。

1
2
3
4
[root@c64-web apr-util-1.5.2] # cd ..
[root@c64-web tools] # wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz
[root@c64-web tools] # wget http://www.eu.apache.org/dist/httpd/httpd-2.4.6.tar.gz.asc
[root@c64-web tools] # wget http://www.apache.org/dist/httpd/KEYS

这里我们采用下面这种方式来进行包验证

1
2
% gpg -- import  KEYS
% gpg --verify httpd-2.2.8. tar .gz.asc

验证结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@c64-web tools] # gpg --import KEYS    #用gpg命令导入公钥
gpg: key 2719AF35:  "Ben Laurie <ben@gonzo.ben.algroup.co.uk>"  not changed
gpg: key A99F75DD:  "Rodent of Unusual Size <coar@ACM.Org>"  not changed
……
gpg: key 6D5954FA:  "Eric Covener <covener@apache.org>"  not changed
gpg: Total number processed: 64
gpg:           w /o  user IDs: 4
gpg:              unchanged: 60
[root@c64-web tools] # gpg --verify httpd-2.4.6.tar.gz.asc #验证httpd-2.4.6.tar.gz.asc
gpg: Signature made Tue 16 Jul 2013 12:44:25 AM CST using RSA key ID 791485A8
gpg: Good signature from  "Jim Jagielski (Release Signing Key) <jim@apache.org>"    #出现这一行说明这个签名是有效的
gpg:                 aka  "Jim Jagielski <jim@jaguNET.com>"
gpg:                 aka  "Jim Jagielski <jim@jimjag.com>"
gpg: WARNING: This key is not certified with a trusted signature!  #这个警告是因为本地密钥库不信任该公钥
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: A93D 62EC C3C8 EA12 DB22  0EC9 34EA 76E6 7914 85A8

如果gpg --verify的命令输出信息和上面相似,就可以确信http-2.4.6.tar.gz确实来自Apache。这里可以忽略上面表明公钥不可信的警告。因为保证公共密钥签名来自所有者的惟一方法是,密钥的所有者亲自把磁盘上的密钥交给你。不过,采取上面的步骤后,我们已经可以在某种程度上确信下载的http-2.4.6.tar.gz可信了。


二、开始安装

所有准备工作都做好了,下面开始安装apache

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@c64-web tools] # tar zxf httpd-2.4.6.tar.gz
[root@c64-web tools] # cd httpd-2.4.6
[root@c64-web httpd-2.4.6] # ./configure \
--prefix= /usr/local/apache-2 .4.6 \       #配置文件目录
--with-apr= /usr/local/apr \              #指定apr安装路径
--with-apr-util= /usr/local/apr-util \     #指定apr-util安装路径
--with-pcre \                             #支持perl的正则表达式
-- enable -so \                            #启用动态模块加载
-- enable -ssl \                           #基于ssl加密传输
-- enable -cgi \                         #开启CGI脚本
-- enable -rewrite \                     #允许URL重写
--with-zlib \                          #支持压缩
-- enable -deflate \                     #支持网页压缩
-- enable -expires \                     #支持网页缓存
-- enable -headers \                     #提供允许对HTTP请求头的控制
-- enable -modules=most \                #支持大多数模块
-- enable -mpms-shared=all \             #mpm模块的动态切换
--with-mpm=worker                      #让apache以worker方式运行


以上是生产环境中常用的一些编译参数

此处提供给你们复制,方便快捷执行命令

1
2
[root@c64-web httpd-2.4.6] # ./configure --prefix=/usr/local/apache-2.4.6 --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre --enable-so --enable-ssl --enable-cgi --enable-rewrite --with-zlib --enable-deflate --enable-expires --enable-headers --enable-modules=most --enable-mpms-shared=all --with-mpm=worker  #此处为方便你们复制执行用的,如执行了上面的就不要再执行这个了
[root@c64-web tools] # make&&make install

这样我们的apache已经编译安装完成了,对于编译时执行的诸多参数详解,我会在下篇博文进行详细的讲述,本篇不做熬述。


三、启动配置

1、创建目录软链接

apache安装完成之后,我们要先为编译安装好的目录添加软链接。此操作在生产环境中为重要调优参数,添加这条软链接的目的有两点:1、方便人类使用。2、便于以后升级版本。

1
[root@c64-web httpd-2.4.6] # ln -s /usr/local/apache-2.4.6 /usr/local/apache

2、启动服务

创建好目录软链接之后,我们就可以开始启动apache服务了。如果我们是yum或者rpm安装的话,我们可以直接用service httpd start来进行服务启动。因为我们是编译安装的,所以此处我们要这样启动。

1
2
3
4
5
[root@c64-web httpd-2.4.6] # cd /
[root@c64-web /] # /usr/local/apache/bin/apachectl -t  #首先我们要检查语法
AH00557: httpd: apr_sockaddr_info_get() failed  for  c64-web
AH00558: httpd: Could not reliably determine the server 's fully qualified domain name, using 127.0.0.1. Set the ' ServerName' directive globally to suppress this message
Syntax OK

此时,我们可以看到在检查语法时,报了两个提示。不过这两个提示不影响,我们的服务器启动和运行。在本篇暂时不讲,等到后面的排错篇,我会详细给大家讲解此问题的解决方案。因此,继续执行开启命令

1
[root@c64-web /] # /usr/local/apache/bin/apachectl start

启动之后,我们用下面的两个命令分别查看端口是否开启,服务进程是否启用。

1
2
3
4
5
6
7
8
[root@c64-web /] # netstat -lnt|grep 80
tcp        0      0 :::80                       :::*                        LISTEN
[root@c64-web /] # ps -ef|grep httpd
root      2009     1  0 05:14 ?        00:00:00  /usr/local/apache-2 .4.6 /bin/httpd
daemon    2010  2009  0 05:14 ?        00:00:00  /usr/local/apache-2 .4.6 /bin/httpd
daemon    2011  2009  0 05:14 ?        00:00:00  /usr/local/apache-2 .4.6 /bin/httpd
daemon    2012  2009  0 05:14 ?        00:00:00  /usr/local/apache-2 .4.6 /bin/httpd
root      2104  1928  0 05:14 pts /0     00:00:00  grep  httpd

由此看出,我们的服务已经正常启动了,此时我们用客户端访问下我们的apache服务器,已经可以实现正常访问。

061046738.png


3、优化启动

大家应该感觉到上面的启动项有点很繁琐的感觉了,在这里我们可以对apache启动的控制命令进行优化。优化的方法有3种。

第一种:修改PATH变量

我们可以通过把apache启动命令的目录加入到全局环境变量中去,这样就可以实现直接输入命令即可操作,无需带上一长串的路径了。

1
2
3
[root@c64-web /] # echo 'export PATH=$PATH:/usr/local/apache/bin' >> /etc/profile
[root@c64-web /] # tail -1 /etc/profile
export  PATH=$PATH: /usr/local/apache/bin

第二种:拷贝命令

我们也可以拷贝apache的启动命令apachectl到系统启动目录下

1
[root@c64-web /] # cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

第三种:添加软链接

我们还可以通过添加软链接的方式,将apache启动命令目录添加一条软链接到/etc/init.d/系统启动目录下

1
[root@c64-web /] # ln -s /usr/local/apache/bin/apachectl /etc/init.d/httpd


4、开机自启动

下面,我们就要实现apache服务的开机自启动了。开机自启动的实现也是有两种方式的

第一种:将httpd即apachectl命令加入到系统开机启动服务chkconf中(此种方法仅限优化启动中后两种操作者进行)

首先我需要对/etc/init.d/httpd文件稍作修改

1
2
3
[root@c64-web /] # vi /etc/init.d/httpd   #编辑此文件,在#!/bin/bash下面添加以下两行
#chkconfig:2345 10 90
#descrption:Activates/Deactivates Apache Web Server

添加完成之后,

1
2
3
4
[root@c64-web /] # chkconfig --add httpd   #添加httpd服务到系统开机启动服务列表
[root@c64-web /] # chkconfig httpd on      #设置httpd服务开机自启动
[root@c64-web /] # chkconfig --list httpd  #从列表中查看httpd在不同级别的启动情况
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off


第二种:添加到开机启动配置文件/etc/rc.d/rc.local下

本方法对优化启动的3种方法都有效,不过你要注意你设置的httpd命令的路径。本例以优化启动的第二种方法为前提

1
2
3
4
5
[root@c64-web /] # echo '#httpd start by sunsky in 20131104' >> /etc/rc.d/rc.local  #添加注释,方便以后查看
[root@c64-web /] # echo '/etc/init.d/httpd start >/dev/null 2>&1' >> /etc/rc.d/rc.local
[root@c64-web /] # tail -2 /etc/rc.d/rc.local #添加完成后一定要看是否添加成功
#httpd start by sunsky in 20131104
/etc/init .d /httpd  start > /dev/null  2>&1


Apache服务器的部署到这里就彻底完工了!怎么样是不是很简单啊。中间有些操作我用了多种方式,是想告诉大家,在linux上,一个问题是有多种解决办法的,所以一定要多思考,多操作。下一篇博文,我将带大家一起了解apache的配置文件,编译参数和其他知识点的说明。










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

目录
相关文章
|
10月前
|
存储 消息中间件 Kafka
Confluent 首席架构师万字剖析 Apache Fluss(一):核心概念
Apache Fluss是由阿里巴巴与Ververica合作开发的Flink表存储引擎,旨在提供低延迟、高效率的实时数据存储与变更日志支持。其采用TabletServer与CoordinatorServer架构,结合RocksDB和列式存储,实现主键表与日志表的统一管理,并通过客户端抽象整合湖仓历史数据,弥补Paimon在实时场景下的性能短板。
1157 23
Confluent 首席架构师万字剖析 Apache Fluss(一):核心概念
|
存储 Cloud Native 数据处理
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
本文整理自阿里云资深技术专家、Apache Flink PMC 成员梅源在 Flink Forward Asia 新加坡 2025上的分享,深入解析 Flink 状态管理系统的发展历程,从核心设计到 Flink 2.0 存算分离架构,并展望未来基于流批一体的通用增量计算方向。
715 0
从嵌入式状态管理到云原生架构:Apache Flink 的演进与下一代增量计算范式
|
10月前
|
存储 消息中间件 Kafka
Confluent 首席架构师万字剖析 Apache Fluss(三):湖流一体
原文:https://jack-vanlightly.com/blog/2025/9/2/understanding-apache-fluss 作者:Jack Vanlightly 翻译:Wayne Wang@腾讯 译注:Jack Vanlightly 是一位专注于数据系统底层架构的知名技术博主,他的文章以篇幅长、细节丰富而闻名。目前 Jack 就职于 Confluent,担任首席技术架构师,因此这篇 Fluss 深度分析文章,具备一定的客观参考意义。译文拆成了三篇文章,本文是第二篇。
937 25
Confluent 首席架构师万字剖析 Apache Fluss(三):湖流一体
|
10月前
|
存储 消息中间件 Kafka
Confluent 首席架构师万字剖析 Apache Fluss(二):核心架构
原文:https://jack-vanlightly.com/blog/2025/9/2/understanding-apache-fluss 作者:Jack Vanlightly 翻译:Wayne Wang@腾讯 译注:Jack Vanlightly 是一位专注于数据系统底层架构的知名技术博主,他的文章以篇幅长、细节丰富而闻名。目前 Jack 就职于 Confluent,担任首席技术架构师,因此这篇 Fluss 深度分析文章,具备一定的客观参考意义。译文拆成了三篇文章,本文是第二篇。
996 20
|
10月前
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
1416 3
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
2358 7
ERPNext 搭建教程:Linux 一键部署与维护
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1136 13
|
关系型数据库 Linux Nacos
Rocky Linux 部署 Docker 和 NACOS 实例
本文介绍在阿里云环境下基于 Rocky Linux 搭建 Docker 并部署 Nacos 的完整流程。涵盖 Docker 安装、镜像加速配置、网络设置及 MySQL 与 Nacos 容器的创建,适用于开发与生产环境。
1599 1

热门文章

最新文章