httpd(Web服务器)

名词解释

1、URL:Uniform Resource Locator,统⼀资源定位符

2、⽹址格式:<协议>://<主机或主机名>[:port]/<⽬录资源,路径>

3、主机地址/主机名:主机地址是服务器在因特⽹所在的IP地址。主机名就需要域名解析来处理

4、主机文件:Linux中一般位于/etc/host,Windows位于C:\Windows\system32\drivers\etc\hosts

5、端⼝号(port):http为80,https为443

0-1023:永久地分配给固定的应⽤程序使⽤,特权端⼝(只有管理员有权限启⽤并让进程监听)
1024-41951:注册端⼝,但不是特别严格,分配给程序注册为某应⽤使用(3306/TCP)
41952-60000:客⼾端程序随机使⽤的端⼝,动态端⼝,或私有端⼝

httpd相关文件

安装httpd:

yum install httpd -y

Apache HTTP服务器是通过简单的⽂本⽂件配置的。这些⽂件可能位于不同的位置,具体取决于服务器的安装⽅式。

这些⽂件的公共位置如下所示

服务根目录(ServerRoot)/etc/httpd
主配置文件( Primary Config File
/etc/httpd/conf/httpd.conf
其他配置文件( Other Config Files
/etc/httpd/conf.d/
⽤于载⼊ Red Hat Enterprise Linux 中打包动 态模块的配置⽂件的辅助⽬录。在默认配置 中,⾸先会处理这些配置⽂件。
/etc/httpd/conf.modules.d/
模块位置( Module Locations
/usr/lib/httpd/modules
网站根目录( DocumentRoot
/var/www/html/
错误日志( ErrorLog
/var/log/httpd/error_log
访问日志( AccessLog
/var/log/httpd/access_log
cgi-bin
/var/ w /cgi- bin (empty and disabled by default)
二进制( binary
/usr/sbin/httpd
运行时目录( runtime directory
/etc/httpd/run
1、 主要的配置文件 /etc/httpd/conf/httpd.conf
2、 额外的参数文件 /etc/httpd/conf.d * .conf
如果你不想要修改原始配置文件 httpd.conf 的话,那么你可以将你自己的额外参数文件独立出来,例如你想要有自己的额外设置值,可以将它写入 /etc/httpd/conf.d/zhuji.conf(注意,扩展名一定是.conf ),而启动 Apache 时,这个文件就会被读入主要配置文件当中了
3、 默认的首页所在目录 /var/ w /html/ ,当输入网址时所显示的数据,就是放在这个目录当中的首页文件(默认为index.html
4、 默认给一些可执行的CGI (网页程序)程序放置的目录 /var/ w /cgi- bin/ ,当输入网址/cgi- bin/ 时所显示的数据所在。
5、 默认的Apache 日志文件都放在 /var/log/httpd/ ,对于流量比较大的网站来说,一个星期的日志文件的数据可以达到1GB 左右
如果从源代码处安装了httpd,那么配置⽂件的默认位置是/usr/local/apache2/conf

http模块解释

httpd是一个模块化服务器,即核心服务器中只包含最基本的功能,但是可以通过可加载到httpd中的模块来提供扩展功能。默认情况下,编译时服务器中包含一组基本模块,如果将服务器编译为使用动态加载的模块,则可以单独编译模块,并随时使用LoadModule指令添加模块,否则必须重新编译httpd以添加或删除模块。通过将指令封装在块中,可以在特定模块存在的条件下包含配置指令,但是块不是必须的,在某些情况下可能会掩盖缺少重要模块的事实

httpd -l:查看当前编译到服务器中的模块
httpd -M:查看动态加载的模块

httpd主配置文件解释

cat /etc/httpd/conf/httpd.conf

该文件内容如下:

目录树的顶部
ServerRoot "/etc/httpd"侦听特定的IP地址或端口(必需指令,配置文件没有会导致服务器无法启动)
Listen 80允许在服务器配置文件中包含其他配置文件(通配符表达式与任何文件不匹配则Include指令将失败并出错;如果忽略不匹配的通配符,则可以使用IncludeOptional指令)
Include conf.modules.d/*.conf运行httpd的用户/组的名称
User apache
Group apache电子邮件地址
ServerAdmin root@localhost服务器用于标识自身的名称和端口
ServerName 0.0.0.0:80这里拒绝所有/的访问
<Directory />AllowOverride noneRequire all denied
</Directory>提供文档的目录
DocumentRoot "/var/www/html"允许对该目录的访问
<Directory "/var/www">AllowOverride None# Allow open access:Require all granted
</Directory>放宽对默认文档根目录的访问
<Directory "/var/www/html">启用了基于文件目录和符号链接的访问Options Indexes FollowSymLinksAllowOverride NoneRequire all granted
</Directory>如果指定模块存在,则按照指定的指令执行
<IfModule dir_module>DirectoryIndex index.html
</IfModule>应用于匹配文件名的指令,拒绝了.ht前缀的所有文件
<Files ".ht*">Require all denied
</Files>错误日志路径
ErrorLog "logs/error_log"日志级别
LogLevel warn访问日志格式化配置模块
<IfModule log_config_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedLogFormat "%h %l %u %t \"%r\" %>s %b" common<IfModule logio_module>LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio</IfModule>CustomLog "logs/access_log" combined
</IfModule># alias:将web路径映射到文件系统路径,并用于访问不在DocumentRoot下的内容。
# ScriptAlias:控制哪些目录包含服务器脚本。脚本别名基本上与别名相同,只是目标目录中的文档被视为应用程序,并在请求时由服务器运行,而不是作为发送到客户端的文档。关于尾随“/”的规则适用于ScriptAlias指令和Alias指令。
<IfModule alias_module>ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>对cgi目录的定义
<Directory "/var/www/cgi-bin">AllowOverride NoneOptions NoneRequire all granted
</Directory>对mime(多用途互联网邮件扩展)的配置
<IfModule mime_module>AddType application/x-compress .ZAddType application/x-gzip .gz .tgzAddType text/html .shtmlAddOutputFilter INCLUDES .shtml
</IfModule>字符集配置
AddDefaultCharset UTF-8对mime的配置
<IfModule mime_magic_module>MIMEMagicFile conf/magic
</IfModule>启用发送文件
EnableSendfile on包含其他配置文件
IncludeOptional conf.d/*.conf

httpd使用

基本及相关命令

1、启动httpd服务

systemctl start httpd

2、停止httpd服务

 systemctl stop httpd

3、重启httpd服务

systemctl restart httpd

4、查看httpd绑定IP和端口

5、查看httpd进程

6、防火墙放行端口

7、重启防火墙规则

8、修改SELinux模式

9、网卡修改

设置网卡IPV4地址
nmcli connection modify ens160 ipv4.addresses 192.168.182.128/24增加网卡IPV4地址
nmcli connection modify ens160 +ipv4.addresses 192.168.182.129/24删除网卡IPV4地址
nmcli connection modify ens160 -ipv4.addresses 192.168.182.129/24设置IP地址获取方式为手动
nmcli connection modify ens160 ipv4.method manual 设置网卡的网关IP地址
nmcli connection modify ens160 ipv4.gateway 192.168.182.2设置网卡的DNS地址
nmcli connection modify ens160 ipv4.dns 114.114.114.114设置自动启动网卡
nmcli connection modify ens160 connection.autoconnect yes启动网卡
nmcli connection up ens160 显示会话
nmcli connection show显示设备
nmcli device

1、基于IP、端口、域名的虚拟主机

1.1基于IP

1、进入副配置文件目录下并创建一个后缀为.conf的配置文件

cd /etc/httpd/conf.d
vim vhost.conf

2、编写文件内容

3、创建对应目录及index.html

mkdir /testip1 /testip2
echo welcome 192.168.182.128 > /testip1/index.html
echo welcome 192.168.182.129 > /testip2/index.html

4、网卡添加新地址

nmcli connection modify ens160 ipv4.addresses 192.168.1182.128/24
nmcli connection modify ens160 ipv4.addresses 192.168.182.128/24
nmcli connection modify ens160 ipv4.method manual
nmcli connection modify ens160 +ipv4.addresses 192.168.182.129/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、防火墙放行端口及重启

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

6、修改SELinux

setenforce 0

7、启动httpd

systemctl start httpd

结果:

1.2基于端口

1、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virport.conf

2、编写文件内容

3、创建对应目录及index.html

mkdir /testport1 /testport2
echo welcome 192.168.182.130:80 > /testport1/index.html
echo welcome 192.168.182.130:81 > /testport2/index.html

4、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.130/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、防火墙放行端口及重启

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

6、修改SELinux

setenforce 0

7、启动httpd

systemctl start httpd

结果:

1.3基于域名

1、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virname.conf 

2、编写文件内容

3、创建对应目录及index.html

mkdir /testname1 /testname2 /testname3
echo welcome www.haha.com > /testname1/index.html
echo welcome www.xixi.com > /testname2/index.html
echo welcome www.hehe.com > /testname3/index.html

4、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.131/24
nmcli connection modify ens160 +ipv4.addresses 192.168.182.132/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、修改本地地址解析文件/etc/hosts

6、防火墙放行端口及重启

firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload

7、修改SELinux

setenforce 0

8、启动httpd

systemctl start httpd

结果:

2、基于https的虚拟主机

1、安装ssl模块

yum install mod_ssl -y

2、进入/etc/pki/tls/certs目录中生成秘钥和证书

cd /etc/pki/tls/certs
#生成秘钥
openssl genrsa > jiami.key 
#生成证书
openssl req -utf8 -new -key jiami.key -x509 -days 100 -out jiami.crt 

3、将秘钥和证书放置于正确的路径中

由于在/etc/pki/tls/certs/目录下生成秘钥和证书
所以证书文件不用移动
只需移动秘钥文件
mv /etc/pki/tls/private/jiami.key /etc/pki/tls/certs/jiami.crt

4、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virhttps.conf

5、编写文件

6、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.133/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

7、防火墙放行端口及重启

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

8、修改SELinux

setenforce 0

9、启动httpd

systemctl start httpd

结果:

 补充:安装ssl模块后/etc/httpd/conf.d/下出现一个ssl.conf文件

vim /etc/httpd/conf.d/ssl.conf 

其内容如下:

Listen 443 httpsSSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialogSSLSessionCache         shmcb:/run/httpd/sslcache(512000)
SSLSessionCacheTimeout  300SSLCryptoDevice builtin<VirtualHost _default_:443>ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warnSSLEngine onSSLHonorCipherOrder onSSLCipherSuite PROFILE=SYSTEM
SSLProxyCipherSuite PROFILE=SYSTEMSSLCertificateFile /etc/pki/tls/certs/localhost.crtSSLCertificateKeyFile /etc/pki/tls/private/localhost.key<FilesMatch "\.(cgi|shtml|phtml|php)$">SSLOptions +StdEnvVars
</FilesMatch>
<Directory "/var/www/cgi-bin">SSLOptions +StdEnvVars
</Directory>BrowserMatch "MSIE [2-5]" \nokeepalive ssl-unclean-shutdown \downgrade-1.0 force-response-1.0CustomLog logs/ssl_request_log \"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"</VirtualHost>

其中重要的有三句并且需要写入conf文件中:

SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt

SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

3、基于用户认证的虚拟主机

1、创建账号文件并建立用户信息

第一次使用htpasswd命令建立目录并添加用户需加-c
htpasswd -c /etc/httpd/zhanghao zhangsan
htpasswd /etc/httpd/zhanghao lisi

2、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/viruser.conf

3、编写文件内容

4、网卡添加新地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.134/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

5、创建/testuser目录

mkdir /testuser
echo welcome user > /testuser/index.html

6、创建/mysecret目录

mkdir /mysecret
echo welcome to mysecret > /mysecret/index.html

7、修改主配置文件(将其注释取消并把www.example.com修改为0.0.0.0)

 8、防火墙放行端口及重启

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

9、修改SELinux

setenforce 0

10、启动httpd

systemctl start httpd

结果:

4、基于python的虚拟主机

1、安装模块

yum install python3-mod_wsgi -y

2、在/var/www/cgi-bin目录下编写python文件

vim /var/www/cgi-bin/haha.wsgi

3、进入副配置文件目录下并创建一个后缀为.conf的配置文件

vim /etc/httpd/conf.d/virpython.conf

4、编写文件

5、修改本地解析文件

6、网卡新增IP地址

nmcli connection modify ens160 +ipv4.addresses 192.168.182.135/24
nmcli connection modify ens160 connection.autoconnect yes
nmcli connection up ens160 

7、防火墙放行端口及重启

firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

8、修改SELinux

setenforce 0

9、启动httpd

systemctl start httpd

结果:

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

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

相关文章

装饰器设计模式是什么?什么是 Decorator 装饰器设计模式?Python 装饰器设计模式示例代码

什么是 Decorator 装饰器设计模式&#xff1f; 装饰器模式是一种结构型设计模式&#xff0c;它允许向现有对象动态地添加新功能&#xff0c;同时不改变其结构。这种模式实现了对对象的包装&#xff0c;称为装饰器&#xff0c;并且可以在运行时动态地添加、修改或删除对象的行为…

重磅!这本30w人都在看的Python数据分析畅销书:更新了!

想学习python进行数据分析&#xff0c;这本《利用python进行数据分析》是绕不开的一本书。目前该书根据Python3.10已经更新到第三版。 Python 语言极具吸引力。自从 1991 年诞生以来&#xff0c;Python 如今已经成为最受欢迎的解释型编程语言。 pandas 诞生于2008年。它是由韦…

NX二次开发UF_CAM_set_clear_plane_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_clear_plane_data Defined in: uf_cam_planes.h int UF_CAM_set_clear_plane_data(tag_t object_tag, double origin [ 3 ] , double normal [ 3 ] ) overview 概述 De…

快慢指针判断环形链表

我们在前面文章中写过用快慢指针判断链表是否带环&#xff1a; leetcode&#xff1a;环形链表-CSDN博客 我们用的是slow指针一次走一步&#xff0c;fast指针一次走两步&#xff0c;当slow入环后开始了追击&#xff0c;每走一次距离缩短1&#xff0c;最终就会相遇 思考问题 …

【LeetCode】每日一题 2023_11_23 HTML 实体解析器(调库/打工)

文章目录 刷题前唠嗑题目&#xff1a;HTML 实体解析器题目描述代码与解题思路 结语 刷题前唠嗑 题目&#xff1a;HTML 实体解析器 题目链接&#xff1a;1410. HTML 实体解析器 题目描述 代码与解题思路 func entityParser(s string) (ans string) {return strings.NewRepla…

NX二次开发UF_CAM_set_lower_limit_plane_tag 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CAM_set_lower_limit_plane_tag Defined in: uf_cam_planes.h int UF_CAM_set_lower_limit_plane_tag(tag_t object_tag, tag_t target_tag ) overview 概述 Set the tag of a …

使用 PowerShell 创建共享目录

在 Windows 中&#xff0c;可以使用共享目录来将文件和文件夹共享给其他用户或计算机。共享目录可以通过网络访问&#xff0c;这使得它们非常适合用于文件共享、协作和远程访问。 要使用 PowerShell 创建共享目录&#xff0c;可以使用 New-SmbShare cmdlet。New-SmbShare cmdl…

算法的奥秘:常见的六种算法(算法导论笔记2)

算法的奥秘&#xff1a;种类、特性及应用详解&#xff08;算法导论笔记1&#xff09; 上期总结算法的种类和大致介绍&#xff0c;这一期主要讲常见的六种算法详解以及演示。 排序算法&#xff1a; 排序算法是一类用于对一组数据元素进行排序的算法。根据不同的排序方式和时间复…

postman定义公共函数这样写,测试组长直呼牛逼!!!

postman定义公共函数 在postman中&#xff0c;如下面的代码&#xff1a; 1、返回元素是否与预期值一致 var assertEqual(name,actual,expected)>{tests[${name}&#xff1a;实际结果&#xff1a; ${actual} &#xff0c; 期望结果&#xff1a;${expected}]actualexpected…

2023年危险化学品经营单位主要负责人证模拟考试题库及危险化学品经营单位主要负责人理论考试试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年危险化学品经营单位主要负责人证模拟考试题库及危险化学品经营单位主要负责人理论考试试题是由安全生产模拟考试一点通提供&#xff0c;危险化学品经营单位主要负责人证模拟考试题库是根据危险化学品经营单位主…

【追求卓越12】算法--堆排序

引导 前面几节&#xff0c;我们介绍了有关树的数据结构&#xff0c;我们继续来介绍一种树结构——堆。堆的应用场景有很多&#xff0c;比如从大量数据中找出top n的数据&#xff1b;根据优先级处理网络请求&#xff1b;这些情景都可以使用堆数据结构来实现。 什么是堆&#xf…

【20年扬大真题】编写程序,功能是计算1~10之间的偶数之和

【20年扬大真题】 编写程序&#xff0c;功能是计算1~10之间的偶数之和 #include<stdio.h> int main() {int i 1;int sum 0;for (i 1;i < 10;i){if (i % 2 0){sum i;}}printf("%d", sum); }

Java核心知识点整理大全9-笔记

目录 null文章浏览阅读9w次&#xff0c;点赞7次&#xff0c;收藏7次。Java核心知识点整理大全https://blog.csdn.net/lzy302810/article/details/132202699?spm1001.2014.3001.5501 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯…

FindMy技术用于充电宝

充电宝是一种便捷的充电器&#xff0c;方便个人随身携带&#xff0c;能够自行储备电能&#xff0c;为主流电子设备提供充电服务。它广泛应用于没有外部电源供应的场所&#xff0c;例如旅行、户外活动或紧急情况下&#xff0c;为用户的手持设备提供持续的电力支持&#xff0c;确…

spring boot加mybatis puls实现,在新增/修改时,对某些字段进行处理,使用的@TableField()或者AOP @Before

1.先说场景&#xff0c;在对mysql数据库表数据插入或者更新时都得记录时间和用户id 传统实现有点繁琐&#xff0c;这里还可以封装一下公共方法。 2.解决方法&#xff1a; 2.1&#xff1a;使用aop切面编程&#xff08;记录一下&#xff0c;有时间再攻克&#xff09;。 2.1.1&am…

centos 安装k8s教程(一键安装k8s)

第一步 准备几台机器 第二步 K8s Manager 服务器中添加docker支持 安装教程请查看这个博客 docker 安装详细教程 点我 第三步安装 KuboardSpray 教程在这里 第四步 下载k8s资源包 第五步 安装k8s 点击安装后 显示如下&#xff1a;等待完成

arduino入门一:点亮第一个led

void setup() { pinMode(12, OUTPUT);//12引脚设置为输出模式 } void loop() { digitalWrite(12, HIGH);//设置12引脚为高电平 delay(1000);//延迟1000毫秒&#xff08;1秒&#xff09; digitalWrite(12, LOW);//设置12引脚为低电平 delay(1000); }

电脑桌面便签工具选择哪一款?

随着互联网时代的不断发展&#xff0c;电脑成为日常工作及办公中必不可少的工具&#xff0c;通过电脑这款工具&#xff0c;大家可以更好的进行工作、学习等方面的交流&#xff1b;电脑桌面便签由于可以为大家整合一些工作及学习方面的备忘事项及笔记等&#xff0c;因而深受大家…

【Vue】Node.js的下载安装与配置

目录 一.下载安装 官网&#xff1a; 二.环境变量的配置 三.设置全局路径和缓存路径 四.配置淘宝镜像 五.查看配置 六.使用npm安装cnpm ​ 一.下载安装 官网&#xff1a; https://nodejs.org/en/download 下载完之后&#xff0c;安装的时候一直点next即可&#xff0c…

FlinkCDC实现主数据与各业务系统数据的一致性(瀚高、TIDB)

文章末尾附有flinkcdc对应瀚高数据库flink-cdc-connector代码下载地址 1、业务需求 目前项目有主数据系统和N个业务系统,为保障“一数一源”,各业务系统表涉及到主数据系统的字段都需用主数据系统表中的字段进行实时覆盖,这里以某个业务系统的一张表举例说明:业务系统表Ta…