Linux----------httpd的简介和安装及使用
一、httpd的简介
http是Apache超文本传输协议服务器的主程序。它是一个独立的后台进程,能够处理请求的子进程和线程
http常用用的两个版本是httpd-2.2和httpd-2.4
CentOS6系列的默认httpd版本是httpd-2.2版本的rpm包
CentOS7系列的默认httpd版本是httpd-2.4版本的rpm包
二、常用httpd版本特性
(1)httpd-2.2
事先创建进程
按需维持适当的进程
模块化设计,核心比较小,各种功能通过模块添加(包括PHP),支持运行时配置,支持单独编译模块
支持多种方式的虚拟主机配置,如基于ip的虚拟主机,基于端口的虚拟主机,基于域名的虚拟主机等
支持https协议(通过mod_ssl模块实现)
支持用户认证
支持基于IP或域名的ACL访问控制机制
支持每目录的访问控制(用户访问默认主页时不需要提供用户名和密码,但是用户访问某特定目录时需要提供用户名和密码)
支持URL重写
支持MPM(Multi Path Modules,多处理模块)。用于定义httpd的工作模型(单进程、单进程多线程、多进程、多进程单线程、多进程多线程)
(2)httpd-2.4
httpd-2.4的新特性:
MPM支持运行DSO机制(Dynamic Share Object,模块的动态装/卸载机制),以模块形式按需加载
支持event MPM,eventMPM模块生产环境可用
支持异步读写
支持每个模块及每个目录分别使用各自的日志级别
每个请求相关的专业配置,使用来配置
增强版的表达式分析器
支持毫秒级的keepalive timeout
基于FQDN的虚拟主机不再需要NameVirtualHost指令
支持用户自定义变量
支持新的指令(AllowOverrideList)
降低对内存的消耗
三、httpd的工作模型
httpd有三种工作模式:prefork,worker,event
工作模式在/etc/httpd/conf.modules.d/00-mpm.conf定义,启动哪种模式就取消那行注释
prefork:多进程模型,预先生成进程,一个请求用一个进程响应
一个主进程负责生成n个子进程,子进程也称为工作进程
每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
worker:基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
event:基于时间的驱动,一个进程处理多个请求
四、httpd的程序环境即配置文件和重要目录
1.配置文件和重要目录
/var/log/httpd/access.lod 访问日志
/var/log/httpd/error_log 错误日志 (报错就观察此日志)
/var/www/html/* 站点文档目录
/usr/lib64/httpd/modules 模块存储路径
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf/*.conf 配置文件,被主配置文件包含
apachectl -t 或 httpd -t 检查配置文件是否有错误
httpd -x 测试服务运行
2.httpd自带的工具程序
httpasswd basic认证基于文件实现时,用到的账号密码文件生成工具
ab 压力测试工具
apachectl 类似systemctl命令,控制程序启动关闭
rotatelogs 日志滚动工具
curl 可用于http认证的命令
五、httpd常用的协议状态码
status(状态码):
1xx:100-101 信息提示
2xx:200-206 成功
3xx:300-305 重定向
4xx:400-415 错误类信息,客户端错误
5xx:500-505 错误类信息,服务器端错误
200: 成功,请求数据通过响应报文的entity-body部分发送;OK
301: 请求的URL指向的资源已经被删除;但在响应报文中通过首部Location指明了资源现在所处的新位置;Moved Permanently
302: 响应报文Location指明资源临时新位置 Moved Temporarily
304: 客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端;Not Modifiled
401: 需要输入账号和密码认证方能访问资源;Unauthorized
403: 请求被禁止;Forbidden
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error
502: 代理服务器从后端服务器收到了一条伪响应,如无法连接到网关;Bad Gateway
503 – 服务不可用,临时服务器维护或过载,服务器无法处理请求
504 – 网关超时
六、httpd常用配置
1.访问控制
法则 功能
Require all granted 允许所有主机访问
Require all deny 拒绝所有主机访问
Require ip IPADDR 授权指定来源地址的主机访问
Require not ip IPADDR 拒绝指定来源地址的主机访问
Require host HOSTNAME 授权指定来源主机名的主机访问
Require not host HOSTNAME 拒绝指定来源主机名的主机访问
IPADDR的类型 HOSTNAME的类型
IP:192.168.1.1
Network/mask:192.168.1.0/255.255.255.0
Network/Length:192.168.1.0/24
Net:192.168 FQDN:特定主机的全名
DOMAIN:指定域内的所有主机
httpd-2.4版本默认是拒绝所有主机访问的,安装后必须修改显示授权访问
配置示例: 允许除了ip192.168.60.55以外的所有主机访问
<Directory /var/www/html/www>
Require not ip 192.168.60.55
Require all granted
2.虚拟主机
虚拟主机有三种:
1)相同ip不同端口
2)不同ip相同端口
3)相同ip相同端口不同域名
七、三种虚拟主机配置示例:
http2.2版本里,在<VirtualHost *:80>上面加一行
NameVirtualHost
测试时,需要做主机名解析 vim /etc/hosts
windows主机名解析 C:\windows\system32\drivers\etc\hosts
找到文件无法修改,需要把文件拖到桌面修改,添加解析,再放回原位
1.相同ip不同端口
vim /etc/httpd-2.4/httpd.conf 修改主配置文件
Listen 80
Listen 81 (需要什么端口增加哪个端口)
<VirtualHost *:80>
ServerName wang.example.com
DocumentRoot "/usr/local/apache/htdocs/wang"
ErrorLog "logs/wang-error_log"
CustomLog "logs/wang-access_log" common
<VirtualHost *:81>
ServerName chen.example.com
DocumentRoot "/usr/local/apache/htdocs/wang
ErrorLog "logs/error_log"
CustomLog "logs/access_log" common
2.不同ip相同端口
网卡配置里增加ip 192.168.160.55
临时添加 ip addr add 192.168.160.55/24 dev ens33
永久添加 vim /etc/sysconfig/network-scright/ifcg-ens33
IPADDR=192.168.160.55
NETMASK=255.255.255.0
IPADDR=192.168.160.56
NETMASK=255.255.255.0
DNS=192.168.160.1
vim /etc/httpd-2.4/httpd.conf 修改主配置文件
<VirtualHost 192.168.160.55:80>
ServerName wang.example.com
DocumentRoot "/usr/local/apache/htdocs/wang"
ErrorLog "logs/wang-error_log"
CustomLog "logs/wang-access_log" common
<VirtualHost 192.168.160.56:80>
ServerName chen.example.com
DocumentRoot "/usr/local/apache/htdocs/wang
ErrorLog "logs/chen-error_log"
CustomLog "logs/chen-access_log" common
3.相同ip相同端口不同域名
<VirtualHost *:80>
ServerName wang.example.com
DocumentRoot "/usr/local/apache/htdocs/wang"
ErrorLog "logs/wang-error_log"
CustomLog "logs/wang-access_log" common
<VirtualHost *:80>
ServerName chen.example.com
DocumentRoot "/usr/local/apache/htdocs/chen
ErrorLog "logs//chen-error_log"
CustomLog "logs/chen-access_log" common
4.http配置注意事项
创建apache用户
useradd -s /sbin/nologin apache
创建网页目录并修改属主属组
mkdir -pv /usr/local/apache/htdocs/chen
chown -R apache.apache /usr/local/apache/htdocs/
创建网页
echo "wang" > /usr/local/apache/htdocs/wang/index.html
echo "chen" > /usr/local/apache/htdocs/chen/index.html
创建日志目录
mkdir /usr/local/apache/logs
chown -R /usr/local/apache/logs/{wang,chen}
启动服务后查看端口是否开启
ss -ntlp #httpd默认是80端口,https默认是443端口
八、配置https步骤
启用模块:编辑/etc/httpd/conf.modules.d/00-base.conf文件,添加
LoadModule ssl_module modules/mod_ssl.so
1.CA生成服务器证书
建立服务器密钥,括号必须要
cd /etc/pki/CA/
(umask 077;openssl genrsa -out private/cakey.pem 2048)
提取公钥
openssl rsa -in private/cakey.pem -pubout
建立服务器证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
国家: CN
省:HuBei
城市:Wuhan
公司:runtime.example.com
需要颁发的网址:runtime.example.com
邮箱:123@123.com
openssl x509 -text -in cacert.pem
mkdir certs new certs crl
touch index.txt && echo 01 > serial
2.客户端(需要的服务器端),生成密钥
cd /etc/httpd && mkdir ssl && cd ssl
(umask 077;openssl genrsa -out httpd.key 2048)
生成证书签署请求
openssl req -new -key httpd.key -days 365 -out httpd.csr
客户端把证书请求文件发给CA
scp httpd.csr root@CA端ip:/root
CA签署客户端提交上来的证书
openssl ca -in /root/httpd.csr -out httpd.crt -days 365
3.配置httpd.conf
取消以下内容的注释
LoadModule ssl_module
Include /etc/httpd/extra/httpd-vhost.conf
Include /etc/httpd/extra/httpd-ssl.conf
4 .在httpd-vhost.conf配置虚拟主机 (httpd-ssl.conf设置也可以)
# 必须有一个虚拟主机,这样才可以使用跳转功能和使用443端口访问
DocumentRoot "/usr/local/htdocs/wang"
Servername https://wang.example.com/
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
5.在httpd-ssl.conf配置证书的路径
SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key
6.检查配置文件是否有语法错误。apachectl -t 或 httpd -t
7.启动或重启服务
8.客户端设置hosts并以域名验证
vim /etc/hosts
192.168.43.143 wang.example.com
Linux----------httpd的简介和安装及使用的更多相关文章
- linux nload命令简介及安装方法
第一步:nload命令简介 nload 命令用于查看linux网络流量状况,实时输出.可以理解为是一个控制台应用程序,用来实时监测网络流量和带宽使用情况的命令. 使用可视化的界面显示流入和留出系统的网 ...
- Linux httpd源码编译安装
# wget http://apache.fayea.com/httpd/httpd-2.2.31.tar.bz2 去官网下载源码包 # mv httpd-.tar.bz2 /usr/local/sr ...
- Node.js 教程 01 - 简介、安装及配置
系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...
- Linux+apache+mono+asp.net安装教程
Linux+apache+mono+asp.net安装教程(CentOS上测试的) 一.准备工作: 1.安装linux系统(CentOS,这个就不多讲了) 2.下载所需软件 http-2.4.4.ta ...
- Linux下apache+phppgadmin+postgresql安装配置
Linux下apache+phppgadmin+postgresql安装配置 操作系统:CentOS 安装包:httpd(首选yum), php(包括php以及php-pgsql,php-mbstri ...
- Java Gradle入门指南之简介、安装与任务管理
这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍. ...
- VMware vSphere 5.1 简介与安装
虚拟化系列-VMware vSphere 5.1 简介与安装 标签: 虚拟化 esxi5.1 VMware vSphere 5.1 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...
- Nutch搜索引擎(第2期)_ Solr简介及安装
1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...
- Linux下指定版本编译安装LAMP
说明: 操作系统:CentOS 6.5 64位 需求: 编译安装LAMP运行环境 各软件版本如下: MySQL:mysql-5.1.73 Apache:httpd-2.2.31 PHP:php-5.2 ...
- Linux下查看MySQL的安装路径
Linux下查看mysql.apache是否安装,并卸载. 指令 ps -ef|grep mysql 得出结果 root ? :: /bin/sh /usr/ ...
随机推荐
- Windows下PyMC安装
先安装Anaconda2 然后conda install -c https://conda.binstar.org/pymc pymc
- Static,重载,List的知识点
声明为static的成员可以在它的类的对象创建之前被访问,静态方法不能访问实例变量. 声明为static的变量称为静态变量或类变量,static可以用来修饰属性.方法和代码块. 多重继承的初始化顺序是 ...
- python笔记20-装饰器、作用域
函数的作用域是就近原则,从里往外找,如果自己函数里有,就拿过来如果自己的函数里面没有的话,就去它父级函数里面找,父亲用不了儿子的,儿子可以用父亲的函数只有被调用才会执行# name = 'python ...
- 依赖注入之setter注入---只需修改配置,电脑就可以安装不同的打印机;读取properties配置文件并创建实例;实现不采用new的方式直接实例化对象
1.项目截图 2.黑白打印机类 package com.example.demo.printer; public class GrayPrinter implements Printer{ @Over ...
- ecplise包的层次结构选择
ecplise包的层次结构选择 平坦方式: 分层方式:
- P2886 [USACO07NOV]牛继电器Cow Relays
题目描述 For their physical fitness program, N (2 ≤ N ≤ 1,000,000) cows have decided to run a relay race ...
- 基于IntelliJ IDEA开发工具搭建SSM框架并实现页面登录功能详细讲解二
接: 接下来配置类 UserController package com.chatRotbot.controller; import com.chatRotbot.model.User; import ...
- The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.
今天用mysql连接数据库时,出现The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than o ...
- java版数据结构与算法 (1综述)
很大部分转载自 https://blog.csdn.net/singit/article/details/54898316 数据的逻辑结构:反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系指数据元 ...
- Wisdom RESTClient 使用教程
Wisdom RESTClient 一款自动化测试REST API的工具,它可以自动化测试RESTful API并生成精美的测试报告,同时基于测试过的历史API,可以生成精美的RESTful API文 ...