目 录CONTENT

文章目录

Apache部署

简中仙
2020-02-23 / 0 评论 / 0 点赞 / 77 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2023-10-07,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、Apache简介

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。

httpd的两大版本,httpd-2.2和httpd-2.4。

  • CentOS6系列的版本默认提供的是httpd-2.2版本的rpm包
  • CentOS7系列的版本默认提供的是httpd-2.4版本的rpm包

1、Apache的主要特点

1、开放源代码

2、跨平台应用

3、支持各种Web编程语言:Apache服务器可支持的网页编程语言包括Perl,PHP,PythonJava 等,甚至微软的ASP技术也可以在Apache服务器中使用。

4、模块化设计:其他软件开发商可以编写标准的模块程序,从而添加Apache本身并不具有的其他功能。

5、运行非常稳定:Apache服务器可用于构建具有大负载访问量的Web站点。

6、良好的安全性:Apache服务器具有相对较好的安全性,Apache的维护团队会及时对已发现的漏洞提供修补程序,为Apache的所有使用者提供 尽可能安全的服务器程序。

2、Apache的特性

httpd有很多特性,下面就分别来说说httpd-2.2版本和httpd-2.4版本各自的特性。

版本特性
2.2事事先创建进程 按需维持适当的进程 模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块 支持多种方式的虚拟主机配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等 支持https协议(通过mod_ssl模块实现) 支持用户认证 支持基于IP或域名的ACL访问控制机制 支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和密码) 支持URL重写 支持MPM(Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、单进程多线程、多进程、多进程单线程、多进程多线程)
2.4httpd-2.4的新特性: MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载 支持event MPM,eventMPM模块生产环境可用 支持异步读写 支持每个模块及每个目录分别使用各自的日志级别 每个请求相关的专业配置,使用来配置 增强版的表达式分析器 支持毫秒级的keepalive timeout 基于FQDN的虚拟主机不再需要NameVirtualHost指令 支持用户自定义变量 支持新的指令(AllowOverrideList) 降低对内存的消耗

httpd-2.4新增的模块

httpd-2.4在之前的版本基础上新增了几大模块,下面就几个常用的来介绍一下。

模块功能
mod_proxy_fcgi反向代理时支持apache服务器后端协议的模块
mod_ratelimit提供速率限制功能的模块
mod_remoteip基于ip的访问控制机制被改变,不再支持使用Order,Deny,Allow来做基于IP的访问控制

二、编译安装httpd服务器

1、安装开发环境

# rpm -q httpd                 			# 查看是否安装
# rpm -e httpd --nodeps                   # 卸载已安装的程序
# dnf -y install gcc gcc-c++ make
# dnf -y groupinstall "Development Tools"
# dnf -y install openssl-devel pcre-devel expat-devel libtool libxml2-devel

2、下载并编译安装apr-1.7.0+和apr-util-1.6.1+

# wget http://mirrors.aliyun.com/apache/apr/apr-1.7.0.tar.gz
# wget https://mirrors.aliyun.com/apache/apr/apr-util-1.6.1.tar.gz
# tar -xf apr-1.7.0.tar.gz -C /usr/local/src/
# tar -xf apr-util-1.6.1.tar.gz -C /usr/local/src/
# cd /usr/local/src/apr-1.7.0/
# sed -i -e '31880 s/^/#/' configure
# ./configure --prefix=/usr/local/apr
# make && make install
# cd /usr/local/src/apr-util-1.6.1/
# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
# make && make install

3、编译安装httpd

# wget https://dlcdn.apache.org/httpd/httpd-2.4.54.tar.bz2 --no-check-certificate
# tar -xf httpd-2.4.54.tar.bz2 -C /usr/local/src/
# cd /usr/local/src/httpd-2.4.54/
# ./configure --prefix=/usr/local/apache --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-mpms-shared=all --with-mpm=prefork --with-mpm=event --enable-cgid --enable-expires --enable-deflate --enable-http2
# make && make install
模块说明
--enable-so支持动态共享模块(即打开 DSO 支持)
--enable-rewrite支持 url 重写
--enable-ssl支持 ssl
--enable-cgi启用 cgi
--with-zlib支持ZLIB压缩
--with-pcre支持正则表达式
--with-apr=/usr/local/apr指定 apr 的安装路径
--with-apr-util=/usr/local/apr-util指定 apr-util 的安装路径
--enable-modules=most指明要静态编译到 httpd 二进制文件的模块,all 或者 most,all 表示包含所有模块,most 表示包含大部分常用模块
--enable-mpms-shared=all启用 MPM 所有支持的模式
--with-mpm=event指定启用的 mpm 模式,默认使用 enevt 模式
--enable-cgidMPM 使用的是 event 或 worker 要启用 cgid
--enable-expires激活彧通过配置文件控制 HTTP 的“Expires:”和“Cache-Control:”头内容
--enable-deflate提供对内容的压缩传输编码支持,一般是 html、js、css 等内容的站点
--enable-http2支持构建 HTTP/2

4、配置环境变量

# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh
echo 'export PATH=/usr/local/apache/bin:$PATH' >>/etc/profile
# source /etc/profile
# which apachectl //查看环境变量是否设置成功
/usr/local/apache/bin/apachectl
# httpd -V                 //查看版本和已装模块
# httpd -l                 //只查看静态编译模块
# httpd -M                 //查看所有模块

5、配置映射关系

# ln -s /usr/local/apache/include/ /usr/include/apache

6、配置man文档

# vi /etc/man_db.conf
# every automatically generated MANPATH includes these fields
#
#MANDATORY_MANPATH /usr/src/pvm3/man
#
MANDATORY_MANPATH                       /usr/man
MANDATORY_MANPATH                       /usr/share/man
MANDATORY_MANPATH                       /usr/local/share/man
MANDATORY_MANPATH                       /usr/local/apache/man 						# 添加这一行

7、关闭防火墙和selinux

# systemctl stop firewalld.service
# setenforce 0

8、开启apache

# apachectl start
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain. Set the 'ServerName' directive globally to suppress this message
# ss -anltup | grep httpd
tcp    LISTEN     0      128    [::]:80                 [::]:*                   users:(("httpd",pid=34417,fd=4),("httpd",pid=34416,fd=4),("httpd",pid=34415,fd=4),("httpd",pid=34414,fd=4))
# apachectl stop
AH00558: httpd: Could not reliably determine the server's fully qualified domain
name, using localhost.localdomain. Set the 'ServerName' directive globally to
suppress this message
# vim /usr/local/apache/conf/httpd.conf
ServerName www.example.com:80 							# 此行注释取消
# apachectl start
# ss -anltup | grep httpd
tcp    LISTEN     0      128    [::]:80                 [::]:*                   users:(("httpd",pid=34639,fd=4),("httpd",pid=34638,fd=4),("httpd",pid=34637,fd=4),("httpd",pid=34636,fd=4))
# apachectl stop

9、添加httpd系统服务

# vim /lib/systemd/system/httpd.service
[Unit]
Description = The Apache HTTP Server
After = network.target

[Service]
Type = forking
PIDFile = /usr/local/apache/logs/httpd.pid
ExecStart = /usr/local/apache/bin/apachectl $OPTIONS
ExecReload = /bin/kill -HUP $MAINPID
KillMode = process
Restart = on-failure
RestartSec = 42s

[Install]
WantedBy = graphical.target  #
# systemctl daemon-reload
# systemctl enable httpd                 //设置httpd服务开机启动
Created symlink from /etc/systemd/system/graphical.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
# systemctl start httpd
# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since 一 2022-10-10 17:20:00 CST; 3s ago
  Process: 34814 ExecStart=/usr/local/apache/bin/apachectl $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 34636 (httpd)
   CGroup: /system.slice/httpd.service
           ‣ 34636 /usr/local/apache/bin/httpd -k start

10月 10 17:20:00 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
10月 10 17:20:00 localhost.localdomain apachectl[34814]: httpd (pid 34636) already running
10月 10 17:20:00 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
参数说明
Description设置服务单元描述字符串
After设置服务单元的启动先后顺序(先启动httpd.service,后启动network.target)
Type设置服务进程的启动类型
PIDFile设置服务的守护进程的PID文件
ExecStart设置服务启动时执行的命令
ExecReload设置服务重新加载时执行的命令
KillMode设置在单元停止时,杀死进程的方法。 process表示仅杀死主进程
Restart表示仅在进程异常退出时重启
RestartSec设置在重启服务前暂停多长时间
WantedBy设置该服务所在的Target
0

评论区