[RHEL7基础篇-13] Linux中的Apache服务

155 阅读6分钟

简介

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