源码包准备:官网下载或者作者站点下载
一共三个包:
依赖包:apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz
功能包:httpd-2.4.39.tar.gz
yum安装相关的依赖包,防止后面进行编译源码包是出现致命错误:

1
[root@liyuanshu ~]# yum install -y gcc  pcre  pcre-devel  expat-devel   bzip2  openssl-devel   zlib*  libtool

解压三个源码包到/usr/local/src目录下:

1
2
3
4
[root@liyuanshu software]# tar xf apr-1.7.0.tar.gz -C /usr/local/src/
[root@liyuanshu software]# tar xf apr-util-1.6.1.tar.gz -C /usr/local/src/
[root@liyuanshu software]# tar xf httpd-2.4.39.tar.gz -C /usr/local/src/
注: -C参数为指定解压位置的绝对路径,不然默认为当前路径下的相对路径

编译安装:
三大顺序:
./congfigure 功能选项——-根据所选择的功能,对当前操作系统进行检测。
–prefix:指定软件存放的位置[root@liyuanshu apr-1.7.0]# make install
–with-apr:选择依赖的相关软件所在的路径
–enable-so:打开 so 模块,启用动态装载模块功能
–enable-cgi:启用cgi功能,为非线程方式工作的mpm使用
–enable-cgid:以线程工作(worker/event)的mpm使用
–enable-rewrite:支持 URL 重写
–enable-zlib:通用压缩机制
–enable-module=[ all | most | ……] 指定启用哪些模块。可指定具体的模块名,也可使用all表示启用所有模块,most表示启用大多数常用模块。一般使用most即可
–enable-mpms-shared=all:启用MPM支持的模式,启用哪种mpm(prefork,worker,event),使用worker或event时要另外一种方式编译php(编译时使用了–enable-maintainer-zts选项)
make—————预先生成安装文件,若有出错现象原因一般为源码错误或者内存不足,使用make clean清除缓存(防止第二次make的时候出错)
make install——-将编译生成的相关资源,输出到指定的系统目录中。
因为httpd包的安装依赖于另外两个包,所有三个源码包之间安装有先后顺序
apr-1.7.0.tar.gz安装

1
2
3
[root@liyuanshu apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@liyuanshu apr-1.7.0]# make
[root@liyuanshu apr-1.7.0]# make install

apr-util-1.6.1.tar.gz安装

1
2
3
[root@liyuanshu apr-util-1.6.1]# ./configure --prefix=/usr/loacal/apr-util --with-apr=/usr/local/apr
[root@liyuanshu apr-util-1.6.1]# make
[root@liyuanshu apr-util-1.6.1]# make install

httpd-2.4.39.tar.gz安装:

1
2
3
[root@liyuanshu httpd-2.4.39]# ./configure --prefix=/usr/local/apache24  --enable-so  --enable-ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modules=most --enable-mods-shared=most --enable-mpms-shared=all  --with-mpm=event
[root@liyuanshu httpd-2.4.39]# make -j 4 ##同时开启四个子进程进行编译
[root@liyuanshu httpd-2.4.39]# make install

配置文件

Apache使用模块化管理功能,若想使用某些功能,必须开启相关的模块
有一个主配置文件以及若个相关配置文件组成:
配置文件
配置文件的内容很多很杂,以下只记录一些常用到的基本选项

1
2
3
4
5
6
7
8
9
10
11
12
13
##默认工作目录,后续的配置如果使用相对路径,则将以这个 项目 为相对路径的  查找起始点。
ServerRoot "/usr/local/apache24"
##监听端口
Listen 80
Timeout 60 ##服务器断开请求失败的等待时间(一.get请求的等待时间 二.post和put请求,两个TCP包之间的等待时间 三. 应答时传输两个ACK包之间的等待时间)
KeepAlive On ##是否开启维持HTTP回话连接功能
MaxKeepAliveRequests 0 ##一个连接允许的请求数量,0为无限制
KeepAliveTimeout 20 ##维持HTTP回话连接功能的时间
UseCanonicalName Off ##是否运行服务器设置自己的域名(若拥有虚拟主机则不能开启)
AccessFileName .htaccess ##设置分布式配置文件的名字
ServerTokens Prod ##展示http服务的名称形式,prod只显示服务名称
ServerSignature Off ##页面产生错误时显示服务器版本信息
HostnameLookups Off ##设置是否启动对客户端IP进行域名解析(Off | On | Double),浪费资源与时间,一般不开启

虚拟主机端配置

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
<VirtualHost *:80>

<Directory "/data/web-data/class.com">
Options None
AllowOverride None
Require all granted
</Directory>
ServerAdmin 123123@qq.com
DocumentRoot "/data/web-data/class.com"
ServerName www.class.com
ErrorLog "logs/class.com-error_log"
CustomLog "logs/class.com-access_log" common
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

</VirtualHost>

###根目录的三个参数设置
Options:配置特定目录下可以使用那些属性
All---准许除MultiViews以外的所有功能
MultiViews---允许多重内容被浏览,如果你的目录下有一个叫做 foo.txt 的文件,那么你可以通过 /foo 来访问到它,类似模糊寻找
Indexes----若该目录下无 index 主页索引文件 , 则准许显示该目录下的文件以供选择
ExecCGI---在该目录下准许使用 CGI
None
AllowOverride:指明Apache服务器是否去找 .htacess 文件作为配置文件,如果设置为none,那么服务器将忽略 .htacess文件,
如果设置为All , 那么所有在 .htaccess 文件里有的指令都将被重写。
Require:设置客户端的访问
Require all granted---允许所有IP访问
Require all denied---不允许任何IP访问
Require ip 192.168.1.0/24---允许某个网段的IP访问
Require not ip 192.168.80.0/24---不允许某个网段的IP访问
Require host test.com---不允许主机名是test.com的主机访问

注:想在一个apache服务中设置多个站点的方法(1.每个目录监听不一样的端口;2.开启多张物理网卡,每个目录使用不同IP;3.每个目录使用不同主机名)

× 请我吃糖~
打赏二维码