Linux基础服务6——Apache

news2024/12/30 1:44:18

文章目录

  • 一、基本了解
    • 1.1 自带工具
    • 1.2 服务配置文件
    • 1.3 访问控制法则
    • 1.4 web相关的命令
      • 1.4.1 curl命令
      • 1.4.2 httpd命令
  • 二、安装配置
    • 2.1 安装服务
    • 2.2 访问网页
    • 2.3 虚拟主机配置
      • 2.3.1 相同ip,不同端口
      • 2.3.2 相同端口,不同ip
      • 2.3.3 域名访问
  • 三、https
    • 3.1 生成证书
    • 3.2 启动ssl模块
    • 3.3 httpd-ssl.conf中指定证书位置
    • 3.4 访问网页验证

一、基本了解

httpd是什么?

  • httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。
  • httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows中作为服务运行。

httpd版本特性:

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

工作模型:

  1. prefork工作方式:
    • 多进程模型,预先生成进程,一个请求用一个进程响应。
    • 一个主进程负责生成n个子进程,子进程也称为工作进程。
    • 每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达,最大不会超过1024个
  2. worker工作方式:
    • 基于线程工作,一个请求用一个线程响应(启动多个进程,每个进程生成多个线程)
  3. event工作方式:
    • 基于事件的驱动,一个进程处理多个请求

httpd-2.4新增的模块:

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

1.1 自带工具

工具功能
htpasswdbasic认证基于文件实现时,用到的帐号密码生成工具
apachectlhttpd自带的服务控制脚本,支持start,stop,restart
apxs由httpd-devel包提供的,扩展httpd使用第三方模块的工具
rotatelogs日志滚动工具
suexec访问某些有特殊权限配置的资源时,临时切换至指定用户运行的工具
abapache benchmark,httpd的压力测试工具

1.2 服务配置文件

  • mpm:以DSO机制提供,配置文件为/etc/httpd/conf.modules.d/00-mpm.conf
文件目录释义
/var/log/httpd/access.log访问日志
/var/log/httpd/error_log错误日志
/var/www/html/站点文档目录
/usr/lib64/httpd/modules/模块文件路径
/etc/httpd/conf/httpd.conf主配置文件
/etc/httpd/conf.modules.d/*.conf模块配置文件
/etc/httpd/conf.d/*.conf辅助配置文件

1.3 访问控制法则

法则释义
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:1921681.0/255.2552550
Network/Length:192.168.1.0/24
Net:192.168
FQDN:特定主机的全名
DOMAIN:指定域内的所有主机

1.注意,httpd-2.4版本默认是拒绝所有主机访问的,所以安装以后必须做显示授权访问,按照如下方式修改即可。

<Directory /var/www/html/www>
    <RequireAlI>
        Require not ip 192.168.1.20
        Require all granted
    </RequireAlI>
</Directory>

1.4 web相关的命令

1.4.1 curl命令

  • curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议。
  • curl支持以下功能:
    1. https认证
    2. http的POST/PUT等方法
    3. ftp上传
    4. kerberos认证
    5. http上传
    6. 代理服务器
    7. cookies
    8. 用户名/密码认证
    9. 下载文件断点续传
    10. socks5代理服务器
    11. 通过http代理服务器上传文件到ftp服务器
//语法:curl [options] [URL ...]
//常用的options:
    -A/--user-agent <string>    //设置用户代理发送给服务器
    -basic              //使用Http基本认证
    --tcp-nodelay       //使用TCP_NODELAY选项
    -e/--referer <URL>      //来源网址
    --cacert <file>     //CA证书(SSL)
    --compressed        //要求返回时压缩的格式
    -H/--header <line>  //自定义请求首部信息传递给服务器
    -I/--head           //只显示响应报文首部信息
    --limit-rate <rate>     //设置传输速度
    -u/--user <user[:password]>     //设置服务器的用户和密码
    -0/--http1      //使用http 1.0版本,默认使用1.1版本。这个选项是数字0而不是字母o
    -o/--output     //把输出写到文件中
    -#/--progress-bar       //进度条显示当前的传送状态

1.4.2 httpd命令

//语法:httpd [options]
//常用的options:
    -l      //查看静态编译的模块,列出核心中编译了哪些模块。 \
            //它不会列出使用LoadModule指令动态加载的模块
    -M      //输出一个已经启用的模块列表,包括静态编译在服务 \
            //器中的模块和作为DSO动态加载的模块
    -v      //显示httpd的版本,然后退出
    -V      //显示httpd和apr/apr-util的版本和编译参数,然后退出
    -X      //以调试模式运行httpd。仅启动一个工作进程,并且 \
            //服务器不与控制台脱离
    -t      //检查配置文件是否有语法错误

二、安装配置

2.1 安装服务

1.安装httpd服务。

yum -y install httpd

在这里插入图片描述

2.关闭防火墙和selinux,访问网页。
在这里插入图片描述

2.2 访问网页

1.修改默认前端网页文件index.html内容,访问网页。
在这里插入图片描述
2.自定义前端文件名称,访问时需跟上文件名称。
在这里插入图片描述
3.也可以创建目录,将前端文件放入目录下访问。
在这里插入图片描述

2.3 虚拟主机配置

2.3.1 相同ip,不同端口

1.查找配置文件模板。

//查找配置文件模板,将其拷贝至/etc/httpd/conf.d目录下。
find / -name *vhosts.conf
cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf   /etc/httpd/conf.d

//一个虚拟主机的配置参数释义。
vim /etc/httpd/conf.d/httpd-vhosts.conf

<VirtualHost *:80>    //*表示IP,80表示端口号。
    ServerAdmin webmaster@dummy-host.example.com    //邮箱,可忽略不配置。
    DocumentRoot "/data"     //网站存放位置。
    ServerName dummy-host.example.com     //网站域名。
    ServerAlias www.dummy-host.example.com     //别名,可忽略不配置。
    ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"     //错误日志存放位置。
    CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common     //正确日志存放位置。
    <Directory /data>      //允许显示授权访问,不然网页访问不到上面配置的前端文件内容。
        <RequireAll>
            Require all granted
        </RequireAll>
    </Directory>
</VirtualHost>

2.在模板的基础上进行修改。

vim httpd-vhosts.conf
......
<VirtualHost *:80>
    DocumentRoot "/data/www.qingjun.com"
    ServerName www.qingjun.com
    ErrorLog "/var/log/httpd/www.qingjun.com-error_log"
    CustomLog "/var/log/httpd/www.qingjun.com-access_log" common
    <Directory /data/www.qingjun.com>
        <RequireAll>
            Require all granted
        </RequireAll>
    </Directory>
</VirtualHost>

Listen 81
<VirtualHost *:81>
    DocumentRoot "/data/www.baimu.com"
    ServerName www.baimu.com
    ErrorLog "/var/log/httpd/www.baimu.com-error_log"
    CustomLog "/var/log/httpd/www.baimu.com-access_log" common
    <Directory /data/www.baimu.com>
            Require all granted
    </Directory>
</VirtualHost>

3.创建刚自定义的前端文件。

mkdir -p /data/{www.qingjun.com,www.baimu.com}
echo '好好学习' > /data/www.qingjun.com/index.html
echo '大好河山' > /data/www.baimu.com/index.html

//检查配置文件是否错误。
httpd -t

//重启服务。
systemctl  restart httpd

4.访问网页。
在这里插入图片描述
在这里插入图片描述

2.3.2 相同端口,不同ip

1.修改虚拟主机配置文件。

<VirtualHost 192.168.130.160:80>  //相同端口,不同ip,该Ip需要存在本地服务器上。
    DocumentRoot "/data/www.qingjun.com"
    ServerName www.qingjun.com
    ErrorLog "/var/log/httpd/www.qingjun.com-error_log"
    CustomLog "/var/log/httpd/www.qingjun.com-access_log" common
    <Directory /data/www.qingjun.com>
        <RequireAll>
            Require all granted
        </RequireAll>
    </Directory>
</VirtualHost>

<VirtualHost 192.168.130.120:80>    //相同端口,不同ip,该Ip需要存在本地服务器上。
    DocumentRoot "/data/www.baimu.com"
    ServerName www.baimu.com
    ErrorLog "/var/log/httpd/www.baimu.com-error_log"
    CustomLog "/var/log/httpd/www.baimu.com-access_log" common
    <Directory /data/www.baimu.com>
            Require all granted
    </Directory>
</VirtualHost>

//检查配置文件是否错误。
httpd -t

//重启服务。
systemctl  restart httpd

2.本地新增一个ip。

//添加ip。
ip addr add 192.168.130.120/24 dev ens33

//删除ip。
ip addr del 192.168.130.120/24 dev ens33

在这里插入图片描述
3.访问网页。
在这里插入图片描述
在这里插入图片描述

2.3.3 域名访问

1.修改虚拟主机配置文件。

<VirtualHost *:80>  
    DocumentRoot "/data/www.qingjun.com"
    ServerName www.qingjun.com
    ErrorLog "/var/log/httpd/www.qingjun.com-error_log"
    CustomLog "/var/log/httpd/www.qingjun.com-access_log" common
    <Directory /data/www.qingjun.com>
        <RequireAll>
            Require all granted
        </RequireAll>
    </Directory>
</VirtualHost>

<VirtualHost *:80>   
    DocumentRoot "/data/www.baimu.com"
    ServerName www.baimu.com
    ErrorLog "/var/log/httpd/www.baimu.com-error_log"
    CustomLog "/var/log/httpd/www.baimu.com-access_log" common
    <Directory /data/www.baimu.com>
            Require all granted
    </Directory>
</VirtualHost>

//检查配置文件是否错误。
httpd -t

//重启服务。
systemctl  restart httpd

2.本机域名映射。
在这里插入图片描述
3.访问网页。
在这里插入图片描述
在这里插入图片描述

三、https

配置思路:

  1. 生成证书
  2. 配置httpd.conf,取消以下内容的注释,新版本此步骤可以忽略。
    • LoadModule ssl_module modules/mod_ssl.so
    • Include /etc/httpd24/extra/httpd-vhosts.conf
    • Include /etc/httpd24/extra/httpd-ssl.conf
  3. 在httpd-vhosts.conf中配置虚拟主机。
  4. 在httpd-ssl.conf中配置证书的位置。
  5. 检查配置文件是否有语法错误。
  6. 启动或重启服务。
  7. 设置hosts以便用域名访问。

3.1 生成证书

1.CA生成一对密钥

cd /etc/pki/CA 
(umask 077;openssl genrsa -out private/cakey.pem 2048)    #生成密钥,括号必须要
openssl rsa -in private/cakey.pem -pubout    #提取公钥

2.CA生成自签署证书。

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365    #生成自签署证书
openssl x509 -text -in cacert.pem    #读出cacert.pem证书的内容
mkdir certs newcerts crl
touch index.txt && echo 01 > serial

在这里插入图片描述

3.客户端服务器生成密钥,哪个服务需要证书就在哪台服务器上生成,这里就是在httpd所在的服务器上生成。

cd /etc/httpd && mkdir ssl && cd ssl
(umask 077;openssl genrsa -out httpd.key 2048)

4.客户端生成证书签署请求。

openssl req -new -key httpd.key -days 365 -out httpd.csr

在这里插入图片描述
5.客户端把证书签署请求文件发送给CA服务器,CA签署客户端提交上来的证书。

[root@localhost httpd]# openssl ca -in httpd.csr -out httpd.crt -days 365

6.CA把签署好的证书httpd.crt发给客户端。

3.2 启动ssl模块

1.安装模块。

yum -y install mod_ssl

2.如下目录文件中存在此行,说明已启用。
在这里插入图片描述

3.3 httpd-ssl.conf中指定证书位置

1.在/etc/httpd/conf.d/00-ssl.conf文件中配置。

//取消注释,指定正确位置。
DocumentRoot "/data/www.qingjun.com"
ServerName www.qingjun.com:443

//指定证书正确位置。
SSLCertificateFile /etc/httpd/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

2.重启服务。

httpd -t

systemctl  restart httpd

3.4 访问网页验证

1.查看/var/www/html/目录下定义的前端内容。
在这里插入图片描述
2.https访问。
在这里插入图片描述
3.http访问。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/710924.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度剖析 Linux 伙伴系统的设计与实现

目录 伙伴系统的核心数据结构 总结&#xff1a; 到底什么是伙伴 伙伴系统的内存分配原理 伙伴系统的内存回收原理 伙伴系统的实现 从 CPU 高速缓存列表中获取内存页 伙伴系统的核心数据结构 如上图所示&#xff0c;内核会为 NUMA 节点中的每个物理内存区域 zone 分配一个…

《计算机网络--自顶向下方法》第四章--网络层:数据平面

4.1网络层概述 每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报&#xff1b;控制平面的主要作用是协调这些本地路由器转发动作&#xff0c;使得数据报沿着源和目的地主机之间的路由器路径进行端到端传送 路由器具有截断的协议栈&#xff0c;即没有网络层…

[RISC-V]Milk-V开发板 i2c测试oled及波形输出

I2C3 引脚图 修改i2c3复用功能 build\boards\cv180x\cv1800b_sophpi_duo_sd\u-boot\cvi_board_init.c //I2C3 pin6 7 PINMUX_CONFIG(SD1_CMD, IIC3_SCL); PINMUX_CONFIG(SD1_CLK, IIC3_SDA);扫描I2C3上的设备 [rootcvitek]~# i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c …

大数据Doris(五十四):BACKUP数据备份原理和语法

文章目录 BACKUP数据备份原理和语法 一、BACKUP数据备份原理 1、快照及快照上传 2、元数据准备及上传 二、BACKUP数据备份语法 BACKUP数据备份原理和语法 通过Doris数据导出的各种方式我们可以将Doris中的数据进行备份&#xff0c;除了export方式之外&#xff0c;Doris 还…

高压线路零序电流方向保护程序逻辑原理(二)

二、零序电流方向保护的采样中断服务程序 零序电流方向保护与其他微机保护的采样中断服务程序相同&#xff0c;均有电压求和自检和电流求和自检及相电流差突变量起动元件DI1。零序电流方向保护的采样中断服务程序中最突出的问题是通过3U。突变量元件来实现闭锁保护&#xff0c…

使用Dependency Walker和Process Explorer排查程序缺少ucrtbase.dll等运行时库以及报0xC000007B错误问题总结

目录 1、问题描述 2、分析软件问题的常用分析工具 3、使用Dependency Walker排查启动程序时报找不到ucrtbase.dll、vcruntime140.dll等运行时库的问题 3.1、使用Dependency Walker查看exe程序的库依赖关系&#xff0c;排查找不到ucrtbase.dll、vcruntime140.dll库问题 3.2…

华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路

一、题目描述 相对开音节构成的结构为辅音元音&#xff08;aeiou&#xff09;辅音(r除外)e&#xff0c;常见的单词有life,time,woke,coke,joke,note,nose,communicate&#xff0c;use&#xff0c;gate&#xff0c;same&#xff0c;late等。 给定一个字符串&#xff0c;以空格…

关于 Camera 产品的功能分析

1、问题背景 通过最近做的一些项目&#xff0c;发现 Tuning 一款 Camera 产品前&#xff0c;要考虑到的事情有很多&#xff0c;不是简单的点亮&#xff0c;按要求调完效果就结束了。 从目前的经验来看&#xff0c;准备工作做的越充分&#xff0c;后期遇到的问题也就越少。本文…

MQTT(三)MQTTX工具使用

MQTTX工具使用 MQTTX是一种开源的MQTT客户端工具&#xff0c;用于帮助开发人员测试和调试MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议。MQTT是一种轻量级的消息传输协议&#xff0c;通常用于物联网设备和应用程序之间的通信。 MQTTX提供了一个用户…

MySQL中常用查看锁和事务的SQL语句

MySQL中常用查看锁和事务的SQL语句 当我们在使用MySQL数据库时&#xff0c;了解如何查看锁和事务的状态是非常重要的。这些信息可以帮助我们调试和优化数据库性能&#xff0c;以及解决并发访问的问题。在本博客中&#xff0c;我将介绍一些常用的MySQL查询语句&#xff0c;用于查…

文心一言 VS 讯飞星火 VS chatgpt (53)-- 算法导论6.2 5题

五、MAX-HEAPIFY的代码效率较高&#xff0c;但第 10 行中的递归调用可能例外&#xff0c;它可能使某些编译器产生低效的代码。请用循环控制结构取代递归&#xff0c;重写 MAX-HEAPIFY代码。 文心一言&#xff1a; 以下是使用循环控制结构取代递归调用的 MAX-HEAPIFY 代码&…

搜索引擎——倒排索引

搜索引擎——倒排索引 什么是倒排索引 倒排索引&#xff08;Inverted Index&#xff09;是一种用于快速查找文档的数据结构&#xff0c;常用于搜索引擎中。与正向索引&#xff08;Forward Index&#xff09;相反&#xff0c;倒排索引是基于单词或术语来组织文档的索引。 倒排…

【Andv】Andv图片上传组件:

文章目录 一、效果图:二、实现思路:三、实现代码:【1】components/AndvImageUpload/index.vue【2】main.js【3】使用&#xff1a; 一、效果图: 二、实现思路: 把andv的上传组件封装起来&#xff0c;并全局注册&#xff0c;这样别的页面不用引入就可以直接使用 三、实现代码: 【…

【复习《剑指Offer》13-17题】【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十三天 13/50

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

k8s中 分布式存储器longhorn的安装

条件&#xff1a; [rootk8s-master longhorn]# kubectl get nodes -o wide #K8S集群一个 NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k8s-master …

ABP recall:ABP modularization

为什么recall&#xff0c;因为之前有个task涉及到项目的配置问题&#xff0c;完全不知道配置文件到底在干什么&#xff0c;重新结合 ABP的模块化理解一下。 之前对模块化的理解&#xff1a;结合ABP VNext来理解DDD_abp.vnext和abp哪个生产ddd_董厂长的博客-CSDN博客 再深入一…

Jmeter之Bean shell使用详解

目录 一、什么是Bean Shell 二、Jmeter有哪些Bean Shell 三、BeanShell的用法 四、Bean Shell常用内置变量 总结&#xff1a; 一、什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;BeanShell是一种松散类型的脚本语言(这…

react环境

目录 一、React环境安装 1. vite集成 2. 官方脚手架 二、React特点 三、基础语法 1. JSX语法 2. 组件的写法——类组件/方法 3. 循环渲染 4. 条件渲染 5. css样式 6. 响应式状态——useState 一、React环境安装 1. vite集成 npm init vitelatest> 创建项目名>…

数分面试题-AB测试

目录标题 1、ABtest实验目的2、A/Btest是什么&#xff1f;意义/目的/作用3、A/Btest工作原理4、A/B test流程&#xff08;面试喜欢问&#xff09;5、一个实际的ABtest案例6、AB实验的注意事项6.1 网络效应&#xff1a;一个用户影响另一个用户6.2 学习效应&#xff1a;新奇效应6…

前端开发:JS中堆和栈的区别

前言 在前端实际开发中&#xff0c;有关JS原生的堆和栈也是很重要的点&#xff0c;关于底层和原理的掌握使用&#xff0c;尤其是在性能优化方面甚为重要。众所周知&#xff0c;JS的变量都是存放在内存中的&#xff0c;而且内存给变量开辟了两块区域&#xff0c;即堆区域和栈区域…