简介
Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。本章主要在RedHat7的环境下介绍apache安装、web服务管理、apache工作模式、日志解析、Web状态以及主要参数。apache的是部署web系统的时候比较常用的一个web引擎,在部署网站之类的业务上都可以使用这一服务,所以说对于这一服务的安装需要熟悉的掌握才可以
apache安装
1.通过rpm与yum进行安装(推荐,可避免包之间依赖导致的错误)
确认是否已经安装http服务
> rpm -qa | grep http
若未安装请使用yum进行安装
> yum install "http*"
注:若yum安装http服务出现问题请看[RHEL7基础篇-3] 包的安装与管理
2.通过源代码安装
2.1 环境准备
安装wget
> yum -y install wget vim
在使用wget前需要先配置网卡保证机器可以上网,主要用于下载apache的源代码包
> vim /etc/sysconfig/network-scripts/ifcfg-ens33
文件内容
NAME=ens33
UUID=54c6b394-c7cc-4f0c-b41d-ef5b8796dcdc
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.100.100
PREFIX=24
GATEWAY=192.168.100.1
DNS1=114.114.114.114
修改DNS
> vim /etc/resolv.conf
文件内容
nameserver 8.8.8.8
使用wget把源代码包下载下来(由于版本更替,有可能会出现目前的版本已经缺失的情况,需要到上级目录寻找最新版本)
> wget https://downloads.apache.org/apr/apr-1.7.4.tar.gz
> wget https://downloads.apache.org/apr/apr-util-1.6.3.tar.gz
> wget https://downloads.apache.org/httpd/httpd-2.4.62.tar.gz
安装apache的关联服务,--allowerasing用于替换冲突的安装包(可以理解为安装最新版本)
> yum -y install openssl-devel pcre-devel expat-devel libtool gcc make --allowerasing
添加apache账号
> useradd -r -M -s /sbin/nologin apache
2.2 编译安装
解压所有用wget下载的文件
> tar -xf apr-1.7.4.tar.gz
> tar -xf apr-util-1.6.3.tar.gz
> tar -xf httpd-2.4.62.tar.gz
安装顺序:1.apr 2.apr-util 3.httpd
1.apr
> cd apr-1.7.4/
注释掉或删除掉以下内容
> vim configure
# $RM "$cfgfile"
检查安装环境,设置安装路径
> ./configure --prefix=/usr/local/apr
开始编译安装
> make && make install
2.apr-util
> cd apr-util-1.6.3/
检查安装环境,设置安装路径与apr的安装路径
> ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
> make && make install
3.httpd
> cd httpd-2.4.62/
检查安装环境,设置安装路径与其他设置
> ./configure --prefix=/usr/local/apache --with-mpm=worker --enable-so --enable-rewrite --enable-headers --enable-expires # --with-mpm=worker把工作模式设置成worker,不指定模式的话,默认为prefork
> make && make install
web服务管理与配置文件
在安装完httpd服务后后面需要的就是对服务的开启与修改配置文件了,本节主要学习的就是服务管理与配置文件的常规修改
1.服务管理
在rhel7当中除了service可以开启服务外,还可以使用systemctl来开启服务与设置开机启动
语法检查命令
安装完服务和部署完后,建议运行一下这一命令进行自检
> apachectl -t
自检时可能会出现以下报错 (可忽略,默认为本机地址)
编辑 该报错为httpd.conf配置文件中的ServerName未设置导致的
在/etc/httpd/conf/httpd.conf中增加ServerName配置,127.0.0.1为本机地址,可以根据需求修改为其他地址和域名
> echo "ServerName 127.0.0.1:80" >> /etc/httpd/conf/httpd.conf
2.配置文件
在安装完httpd后需要进行常规配置文件的检查与修改
修改配置文件/etc/httpd/conf/httpd.conf中的Listen 80
> vim /etc/httpd/conf/httpd.conf
# Listen 80 // 配置文件原带,注释掉或删除掉
# Listen 你的IP:80
Listen 192.168.100.100:80
...
# IncludeOptional conf.d/*.conf // 配置文件原带,注释掉或删除掉
确认80端口是否开启
> netstat -ntpl | grep :80
tcp6 0 0 :::80 :::* LISTEN 33797/httpd
echo "你的ip" 到/var/www/html/index.html用于测试用
> echo "192.168.100.100" > /var/www/html/index.html
在浏览器中访问http://你的ip,测试前记得关闭firewalld与selinux
http://192.168.100.100
apache工作模式
# 工作模式的配置,在安装的时候需要指定模式
> apachectl -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
prefork:进程模式(多进程,每个进程产生子进程),prefork 是一种非线程、与派生的工作模式,用的是进程去处理请求,所以比较容易消耗内存,但是稳定性好,某个进程出现问题不会影响到其他请求。
worker:线程模式(多进程,每个进程生成多个线程),worker是使用多个子进程、每个子进程有多个线程、由于使用的是线程去处理请求,消耗内存小,适合高流量的请求,但是如果某个进程出现问题,那么这个进程下的线程都会出现问题,即稳定性不是很好。
event:event模式,是为解决keep-alive保持长连接出现的一种工作模式,使用keep-alive长连接的时候,某个线程会一直被占用,即使中间没有请求,需要等到超时才会被释放,所以这个时候就出现了event的工作模式就出现了
日志解析
1、定制日志文件的格式涉及到两个指令,即LogFormat指令和CustomLog指令定义日志格式,需要到httpd配置文件中进行配置(即/etc/httpd/conf/httpd.conf)
LogFormat "%h %l %u %t \"%r\" %>s %b" common
2、使用common格式的日志,并将日志输出到access_log这个文件中
CustomLog /var/log/access_log common
3、使用rotatelogs对日志进行轮转
CustomLog "/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/%Y%m%d_access_img.linux.com 86400 480" common
# rotatelogs要写绝对路径
4、错误日志的定义
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn # 定义错误日志的级别
ErrorLog logs/error_log # 定义错误日志的输出文件
状态
常见的几种状态
主要参数
1.web服务进程所属的用户和组
在主配置文件中,确认到的两行
User apache
Group apache
> ps -ef |grep httpd
2.在主配置文件中需要注意的参数
对应域名放置资源的路径
DocumentRoot "/var/www/html"
放置配置文件,默认日志文件存放的路径
ServerRoot "/etc/httpd"
定义域名
ServerName www.example.com