技术标签: Linux运维基础知识
Lesson25 Linux中的web服务器Apache
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行
Apache是世界使用排名第一的Web服务器软件,它可以运行在几乎所有广泛使用的计算机平台上
由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一,也叫网页服务器软件
它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写
是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议
HTTP是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统
HTTP协议工作于客户端-服务端架构为上,浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求
Web服务器根据接收到的请求后,向客户端发送响应信息
HTTP 请求/响应的步骤
1、客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。
2、发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
3、服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。
一个响应由状态行、响应头部、空行和响应数据4部分组成。
4、释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
5、客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
curl -I www.baidu.com #查看百度网站的服务名字
两大主流服务
lamp: linux apache mysql php/perl/python
lnmp: linux nginx mysql php/perl/python
客户端访问apache服务,然后加载php这个插件,然后调用mysql数据库
apchece ,企业中常用的web服务,用来提供http(超文本传输协议)
主配置目录 | /etc/httpd/conf |
主配置文件 | /etc/httpd/conf/httpd.conf |
子配置目录 | /etc/httpd/conf.d/ |
子配置文件 | /etc/httpd/conf.d/*.conf |
默认发布目录 | /var/www/html |
默认发布文件 | index.html |
默认端口 | 80 |
默认安全上下文 | httpd_sys_content_t |
程序开启默认用户 | apache |
apache日志 | /etc/httpd/logs/* |
重置并开启desktop虚拟机
配置静态网络ip为172.25.254.114
配置好yum源
改主机名字为Apache
将selinux关掉,状态为disabled
yum search apache #寻找安装包
yum install httpd -y 安装apache软件
systemctl start httpd开启apache服务
systemctl enable httpd 设置开机启动
netstat -antlupe | grep httpd #查看httpd的服务端口80是否开启
firewall-cmd --list-all ##查看火墙信息
firewall-cmd --permanent --add-service=http ##在火墙里面添加http服务
firewall-cmd --reload ##重新加载使添加生效
yum install httpd-manual ##apache的手册(在浏览器里面输入就可以看到)
在浏览器输入172.25.254.114/manual,可以看到帮助文档
重启服务
查看Apache服务下的主配置文件
查看主配置目录
cd /var/www/html(安装了httpd服务以后才会有这个共享目录)
vim index.html
测试 http://172.25.254.114
vim /etc/httpd/conf/httpd.conf #编辑httpd的主配置文件
Listen 将端口由80改为8080,默认使用端口80
systemctl restart httpd #重启Apache服务,修改才会生效
firewall-cmd --permanent --add-port=8080/tcp在火墙里面添加8080端口
firewall-cmd --reload加载使其生效
systemctl restart httpd #重启Apache服务
netstat -antlupe | grep httpd #查看端口是否改为8080,是否修改成功
测试:在浏览器输入172.25.254.114:8080
vim /etc/httpd/conf/httpd.conf
搜index.html
在index.html前边添加westos.html #将默认发布文件由index.html改为westos.html,默认发布文件按顺序访问,先访问westos.html,再访问index.html
systemctl restart httpd #重启服务
vim /etc/httpd/conf/httpd.conf #修改主配置文件
找到主配置文件
在主配置文件前添加westos.html
编辑主配置文件
在浏览器输入172.25.254.114:8080 #查看到westos.html里的内容(此时还没有还原80端口)
vim /etc/httpd/conf/httpd.conf
搜/Doc找默认发布目录那一行
复制那一行,注释掉原来的,防止自己手写把格式写错
/var/www/html----->/westos/html #将默认发布目录改为/meng/html
vim /etc/httpd/conf/httpd.conf
加入授权信息:
<Directory "/westos/html">
Require all granted允许共享改目录下面的东西
</Directory>
systemctl restart httpd重启服务
cd /var/www/html #Apache默认发布目录
mkdir -p /westos/html #新建一个目录,让它成为默认发布目录
vim /westos/html/index.html #编写默认发布文件
<h1>www.westos.com</h1>
新建一个目录
切换到这个目录
编辑这个发布文件,重启服务
vim /etc/httpd/conf/httpd.conf #修改主配置文件的发布目录
测试:在浏览器输入172.25.254.114:8080(此时没有关闭8080端口)
测试:在浏览器中输入172.25.254.114/index.html查看
例如:在真机上网时,在浏览器里面输入www.baidu.com时,百度浏览器会出来
点击百度里面的新闻时,它会自动跳转到news.baidu.com
点击百度里面的地图时,它会跳转到map.baidu.com
说明此时百度的Apache服务有很多域名
现在,想使我的Apache服务器上的news,music都有自己的默认发布目录和默认发布文件
但是如果一台主机一个站点太浪费资源了,在Apache主机上搭建虚拟机主机,使每个虚拟主机对应一个域名
可以使每一项都有自己的域名
vim /etc/httpd/conf/httpd.conf #将端口改为80,还原默认端口
systemctl restart httpd #重启服务
mkdir -p /var/www/vhost/news给news建立默认发布目录
mkdir -p /var/www/vhost/music给music建立默认发布目录
cd /etc/httpd/conf.d/ 默认发布目录
ls
vim .conf(编辑虚拟主机的配置文件,主配置文件里面有要求,必须以.conf结尾)
查看/var/www/目录中的目录,有一个virtual目录可供使用
切换到这个目录,查看
切换到子配置目录
虚拟主机的配置信息
/<VirtualHost _default_:80> #虚拟主机的apache服务默认也使用端口80
DocumentRoot /var/www/html #根共享目录
CustomLog logs(etc/httpd/logs)/default.log combined #混合型日志的目录
</VirtualHost>
vim /var/www/virtual/news/html/index.html给news编写默认发布文件
<h1>news.westos.com</h1>
vim /var/www/vhost/music/index.html给music编写默认发布文件
<h1>music.westos.com</h1>
news虚拟站点的基本信息和授权信息
<VirtualHost *:80>
ServerName news.westos.com
DocumentRoot /var/www/virtual/music/html
CustomLog logs/news.log combined
</VirtualHost>
<Directory "/var/www/virtual/music/html">
Require all granted
</Directory>
music虚拟站点的基本信息和授权信息
vim music.conf, 将复制的news.conf的内容中的news全部替换成music
替换完成
<VirtualHost *:80>
ServerName music.westos.com
DocumentRoot /var/www/virtual/music/html
CustomLog logs/music.log combined
</VirtualHost>
<Directory "/var/www/virtual/music/html">
Require all granted
</Directory>
systemctl restart httpd #重启服务
在真机里面vim /etc/hosts做本地解析(使用哪里的浏览器进行测试就在哪里做解析)
写入内容:
172.25.254.114 www.westos.com news.westos.com music.westos.com
测试:在网页地址栏分别输入www.westos.com news.westos.com music.westos.com 可以进入不同的页面
Apache内部的访问控制想让谁访问谁才能访问,这样比较安全
针对主机ip的访问控制
allow,deny会有一个读取的先后顺序,后面的会覆盖前面的,相当于设置访问apache服务器的黑白名单
进入主配置文件,编辑主配置文件
systemctl restart httpd #重启服务
先读allow,再读deny, 先允许所有主机,再拒绝172.25.254.114主机访问
测试:在浏览器地址栏输入172.25.254.114/westos, 可以看到,访问被拒绝
编辑主配置文件
先读deny,再读allow,先拒绝所有,再允许172.25.254.114访问主页
systemctl restart httpd ##重启服务
测试:在真机里面输入firefox,输入172.25.254.114/westos,可以查看主页
测试:在真机里面输入firefox,输入172.25.254.114,可以查看
输入172.25.254.114不行
用户方式的访问控制(比ip安全)
新建一个子目录
在这个目录下添加一个发布目录
htpasswd -cm .apache_auth admin #建立admin用户
输入密码
cat apache_auth #查看该文件
htpasswd -m .apache_auth admin(追加用户在文件里面不需要-c,否则后一个用户信息会覆盖掉前一个建立的用户)
输入密码
cat .apache_auth #查看该文件
进入主配置文件 vim /etc/httpd/conf.d/httpd.conf,编辑为只允许用户admin登陆
<Directory "/var/www/html">
AuthUserFile /etc/httpd/.apache_auth 认证文件类型
AuthType basic #认证类型为基本
AuthName "Please input username and password" #加上认证名字,提醒用户输入用户名和密码
#Require user admin #只允许admin用户通过认证访问共享目录
#Require valid-user #允许所有用户访问
以上两个只能二选一
</Directory>
systemctl restart httpd #重启Apache服务
测试: 此时要使用ctrl+shift+delete 清空缓存(不同浏览器的方法不同) 在浏览器进行测试
在浏览器地址栏输入172.25.254.114/westos/index.html
可以看到,admin用户可以登陆网页,但是admin1用户不可以
vim /var/www/html/index.php 编辑这个php文件
这个时候在浏览器输入172.25.254.114是空白的,因为缺少php软件
yum install php -y #安装php
重启服务
可以看到子配置目录里出现php.conf
测试:在浏览器里面输入172.25.254.114就可以看到php的图形化界面了
通用网关接口(CGI)是网站上放置动态内容的最简单的方法。CGI脚本可用于许多目的,但是谨慎控制使用哪个CGI脚本以及允许谁添加和运行这些脚本十分重要。编写质量差的CGI脚本可能为外部攻击者提供了破怀网站及其内容安全性的途径。因此,在web服务器级别和SELinux策略级别,都存在用于限制CGI脚本的使用设置。
在浏览器里输入172.25.254.111/manual/ #查看apache服务手册,看设置cgi语言都需要在配置文件里面写入哪些内容
选CGI查看需要复制的内容
mkdir /var/www/html/cgi #在默认发布目录下建立cgi目录
cd /var/www/html/cgi
vim index.cgi #编写cgi语言的默认发布文件
粘贴复制的内容
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`; #这里date的引号不是单引号,是ESC下边的那个键
#相当于一个测试的脚本
chmod +x index.cgi #给脚本一个可执行权限
./index.cgi #可以看到时间调用脚本,看能否看到时间
先测试一下,在浏览器输入172.25.254.111/cgi/index.cgi
看到的是源代码
172.25.254.114/manual #查看手册
复制
cd /etc/httpd/conf.d/
ls
vim /etc/httpd/conf.d/default.conf #编辑虚拟主机的配置文件
<Directory "/var/www/html/cgi">
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
要使用cgi语言就要添加这个才会生效,手册要求
复制这块内容
systemctl restart httpd #重启服务
测试:在浏览器地址栏输入172.25.254.114/cgi/index.cgi,可以看到显示时间,并且网页刷新一次,时间改变一次
先找到wsgi的安装包,复制链接
建立目录
切换到这个目录下,下载安装包
)
systemctl restart httpd #重启服务
cd /etc/httpd/conf.d/
ls
vim vhost.conf
写入手册要求的内容:
<VirtualHost *:80>
ServerName www.westoswsgi.com
WSGIScriptAlias / /var/www/wsgi/script.wsgi
</VirtualHost>
systemctl restart httpd
可以看到,apache的默认配置文件都是以.conf结尾
编辑文件
可以看到,无法重启apache服务,会报错,这是因为缺少mod_wsgi插件
yum install mod_wsgi -y #安装wsgi
可以看到,现在可以重启apache
在真机中加入本地解析172.25.254.114 www.westoswsgi.com
测试:在浏览器输入:www.westoswsgi.com
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer)
或 (Hypertext Transfer Protocol Secure,超文本传输安全协议)
它是以安全为目标的HTTP通道,简单来讲就是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL
它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。
https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。
这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。
www.westoswsgi.com
现在它被广泛用于万维网上安全敏感的通讯,例如交易支付。
超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密
如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。
为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。
HTTPS和HTTP的区别主要为以下四点:
一、https协议需要到ca申请证书,一般免费证书很少,需要交费。
二、http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
四、http的连接很简单,是无状态的;HTTPS协议是加密访问,是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
客户端访问服务器的时候客户端那边是不安全的,虽然服务端自己很安全,但不能保证客户端访问服务端的时候客户端是安全的,因此可能会造成服务端不安全
在能上网的真机里面输入www.baidu.com,发现会自动跳转到https://www.baidu.com
现在要将我的Apache服务加密
这个加密锁需要开启443端口,
yum install mod_ssl -y #在自己的Apache服务器上面安装锁
firewall-cmd --permanent --add-service=https在火墙里面添加https服务
firewall-cmd --reload
重启服务
netstat -antlupe | grep httpd
#查看443端口是否开启(mod_ssl安装完成,在火墙中允许apache服务,此时,可以看到,443端口自动打开)
在真机的浏览器里访问172.25.254.114, 可以看到
可以看到,这个证书不知道是哪个机构颁发的
下面我们制作自己的自签名证书
yum install crypto-utils -y # 安装自己的加密
genkey www.westos.com #生成自己的锁和钥匙
按照步骤选择信息之后就会生成钥匙和密码,此处选择next
选择1024,next
生成随机数
此处询问我们是否要把证书发送给证书认证机构,选择No
添加证书的详细信息,添加完毕选择next
可以看到钥匙和锁已经生成
cd /etc/httpd/conf.d/
ls
vim ssl.conf
写入自己生成的钥匙和密码
这里的钥匙和锁的存放目录都可以在生成过程中的shell界面中找到,直接复制过来,防止出错
systemctl restart httpd #重启服务
测试:在浏览器中输入https://172.25.254.114 ,发现已经是我自己生成的锁了
实验目的:
怎样让客户在自己的浏览器中输入172.25.254.114(80端口)时自动跳转为https://172.25.254.114(443端口)
cp news.conf login.conf
vim login.conf
vim login.conf #写入:(编写网页重写文件,名字任意,以.conf结尾就行)
<VirtualHost *:443> #建立一个443端口虚拟主机,https需要开启443端口
ServerName login.westos.com
DocumentRoot /var/www/vhost/login建立默认发布目录
CustomLog logs/login.log combined
cd /etc/httpd/conf.d/
ls
vim ssl.conf
复制钥匙和锁
SSLEngine on开启这个功能
SSLCertificateFile /etc/pki/tls/certs/www.westos.com.crt钥匙
SSLCertificateKeyFile /etc/pki/tls/private/www.westos.com.key锁
</VirtualHost>
<Directory "/var/www/html/virtual/login">授权
Require all granted
</Directory>
mkdir -p /var/www/vhost/login建立默认发布目录
vim /var/www/vhost/login/index.html建立默认发布文件
<h1>login.westos.com</h1>
systemctl restart httpd #重启服务
vim login.conf
<VirtualHost *:80> #建立一个80端口的虚拟主机
ServerName login.westos.com
RewriteEngine on 将网页重写的功能开启
RewriteRule ^(/.*)$ https://%{
HTTP_HOST}$1 [redirect=301](永久重定向:永久跳转)
客户端输入的内容 客户端主机
</VirtualHost>
关闭火墙
做本地解析:(浏览器在哪在就哪做本地解析)
vim /etc/hosts
测试:在真机浏览器输入login.westos.com------>https://login.westos.com 成功
字符 | 释义 |
---|---|
^(/.*)$ | 客户在浏览器地址栏中输入的所有字符 |
https:// | 强制客户加密访问 |
%{HTTP_HOST} | 客户请求主机 |
$1 | 收集第一个字符,也就是写入的字符 |
[redirect=301] | 永久重写,302临时 |
文章浏览阅读312次。-Xms768m -Xmx1280m jvm堆的最小值和最大值设置,一般设成相同值,避免频繁分配堆空间-XX:NewSize=128m -XX:MaxNewSize=128m 年轻代最小值和最大值设置(年轻代设定了,年老代也就定了),也可以用参数-XX:NewRatio=4,年老代和年轻代的大小比,这里128m有点小了,官方建议的是heap的3/8,差不多280m-XX:PermSi..._markstacksize
文章浏览阅读704次,点赞9次,收藏6次。BigData-KongGuan项目是当前民航项目的后端程序,负责访问数据为前端提供查询接口,同时提供一些定时任务,例如,将HBase数据查询出来,并推送到Kafka当中,来模拟航空数据的收集过程等。2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目。BigData-Etl-KongGuan项目是当前民航项目的数据清洗程序,负责数据的ETL等工作。4、以原项目为例,具体介绍各个目录情况并参照创建相关文件夹。目录/文件(代码)的说明。目录/文件(代码)的说明。_搭建后端框架
文章浏览阅读974次,点赞20次,收藏31次。其它面试题(springboot、mybatis、并发、java中高级面试总结等)也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**[外链图片转存中…(img-Ps9pECru-1711100315746)][外链图片转存中…(img-QOmsBbso-1711100315747)][外链图片转存中…(img-2w3vnv0E-1711100315747)]
文章浏览阅读909次。《人机交互技术》课程介绍人机交互(Human-Computer Interaction, HCI):是研究人、计算机以及它们间相互影响,通过计算机输入、输出设备,以有效的方式实现人与计算机对话的技术;用户界面是人与计算机之间传递、交换信息的媒介和对话接口,是计算机系统的重要组成部分。人机交互与用户界面是两个有着紧密联系而又不尽相同的概念。人机交互强调的是技术和模型,用户界面是计算机的关键组成部分。..._人机交互方式的作用
文章浏览阅读3.2k次,点赞2次,收藏16次。在初步学习网络安全时,暂时了解DOS命令系统及常用命令,以形成一定的框架体系,后续学习中如需要再继续强化。_dos管道命令详解
文章浏览阅读219次。VB管理信息系统开发实战 大学计算机科学与技术专业毕业,从事教育培训两年,程..._管理系统vb教学
文章浏览阅读263次。ylbtech-Java-Class-FC:java.time.Duration1.返回顶部 2.返回顶部3.返回顶部1、/* * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All r..._startinclusive.until
文章浏览阅读2.0k次,点赞3次,收藏10次。python代码报错解决的四个方法,包括如何搜索关键词返回的是自己想要的文章,以及GPT的使用方法,看Gitee和Githup源码_python 处理报错
文章浏览阅读575次。arm架构安装RabbitMQ#查看Linux内核版本uname -r 4.18.0-80.7.2.el7.aarch64#或者使用 uname -a#查看erlang版本,输入erlerl#显示如下:Erlang/OTP 24版本,我这里是升级后的版本了,本来版本比较低Erlang/OTP 24 [erts-12.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]Eshell V12.0 (abort with_requires: erlang >= 23.2
文章浏览阅读219次。2、备案千万不要去付费、不要付费、不付费,付的钱都是智商税,网上有这种付费教你准备材料告诉你流程的全是坑(就是告诉你流程,告诉你要准备那些材料,最终操作其实都是需要你自己去操作的)!3、只需要我们找 “服务提供商(或者说服务器提供商):简单一点就是你服务器是哪一家提供的,你就找哪一家就行(我们使用的是阿里云)” 填写app相关信息就好啦;3)服务提供商的备案页面填写相关信息,你按照步骤来就行了,都有模版案例的(当然其中可能会用到提供商的相关app用于材料上传或人脸认证的);_安卓 ios icp
文章浏览阅读3k次,点赞13次,收藏26次。好久没更新了,确实是有点懒了,主要是这两天返乡在隔离(借口)。这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎私信或者评论区留言!这一篇就更新一下《白话机器学习中的数学——梯度下降法》!_最速梯度下降法
文章浏览阅读383次。逐浪锥钉体.rar逐浪圆体.rar_逐浪字体 版权