【运维工程师学习四】Web服务之Apache

news2024/11/15 4:46:52

【运维工程师学习四】Web服务之Apache

    • 1、查询、安装apache
      • rpm命令使用
    • 2、验证httpd是否启动成功
      • (1)、查看是否有httpd的进程
      • (2)、查看是否有80端口在监听中
      • (3)、CentOS7默认不带netstat命令,通过yum安装
    • 3、使用YUM方法安装的apache,可以使用系统的systemctl命令来管理其启动、重启及关闭。
    • 4、关闭系统防火墙
    • 5、Apache的启动验证
    • 6、Apache安装后的目录结构
    • 7、Apache配置——配置网站根目录
    • 8、Xftp上传文件
    • 9、Apache配置——配置网站代码目录的权限
      • 解释:
    • 10、Apache配置——配置网站代码目录的权限
    • 11、Apache配置——配置默认文档
    • 12、Apache配置——配置主机名
    • 13、查看ServerName
      • (1)、windows系统hosts文件路径:
      • (2)、linux系统hosts文件路径:
    • 14、Apache配置——配置web服务器的日志
      • (1)运行日志/错误日志
      • (2)用户访问日志
        • 1、先创建一个空的日志文件,即你在apache配置文件声明的保存文件不能还没有存在;
        • 2、注意文件的系统权限,是否允许了apache的运行用户的读写权限。
    • 15、Apache配置——其它配置
    • 16、总结

1、查询、安装apache

rpm –aq | grep httpd	#查询是否安装了apache,本系统还没有安装
yum install httpd –y	#使用yump安装,安装过程省略

rpm命令使用

-a  查询所有套件
-q  使用询问模式,当遇到任何问题时,rpm指令会先询问用户
-v  显示指令执行过程
-h或–hash  套件安装时列出标记
-i  显示套件的相关信息
-l  显示套件的文件列表
-R  显示套件的关联性信息
-vv  详细显示指令执行过程,便于排错

2、验证httpd是否启动成功

(1)、查看是否有httpd的进程

ps aux | grep httpd

在这里插入图片描述

(2)、查看是否有80端口在监听中

netstat -utnlp

在这里插入图片描述

(3)、CentOS7默认不带netstat命令,通过yum安装

yum install –y net-tools

3、使用YUM方法安装的apache,可以使用系统的systemctl命令来管理其启动、重启及关闭。

systemctl start httpd	#启动httpd
systemctl restart httpd	#重启httpd
systemctl stop httpd	#关闭httpd
systemctl enable httpd	#使httpd开机启动
systemctl disable httpd	#取消httpd开机启动

4、关闭系统防火墙

温馨提示:为避免防火墙对网站访问的影响,学习网络软件其它,建议关闭系统防火墙。
1、systemctl stop firewalld #关闭防火墙
2、systemctl disable firewalld #取消防火墙开机启动
3、修改/etc/selinux/config文件,将SELINUX=enforcing修改为SELINUX=disabled,重启系统使生效

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5、Apache的启动验证

  • 查看你的ip地址为下一步使用
ip a
  • 确保你了关闭了firewalld的情况下,通过在另外一台机用浏览器访问你实验httpd机器的IP,你会看到如下结果:

在这里插入图片描述

  • 这是apache默认的欢迎页。上述结果表明apache已正常启动。

6、Apache安装后的目录结构

一、配置文件放在 /etc下面 /etc/httpd 配置文件根目录
在这里插入图片描述

  • 没有tree命令的话,使用yum install –y tree安装
    二、httpd所有的安装程序都安装在/usr目录中;根据不同的部分安装在不同的目录中。
    1、httpd 用的基本用户指令都放在/usr/bin中
    /usr/bin/ab /usr/bin/htdbm /usr/bin/htdigest /usr/bin/htpasswd /usr/bin/logresolve
    2、httpd程序需要调用的模块、集成的函数库都放在 /usr/lib目录下
    /usr/lib/httpd------------>httpd调用函数库、集成模块的根目录
    /usr/lib/httpd/modules
    /usr/lib/httpd/modules/mod_actions.so
    /usr/lib/httpd/modules/mod_alias.so

    /usr/lib/httpd/modules/mod_vhost_alias.so
    3、httpd所需要的系统命令都放在/usr/sbin/目录下面
    /usr/sbin/apachectl /usr/sbin/htcacheclean /usr/sbin/httpd /usr/sbin/httpd.event
    /usr/sbin/httpd.worker /usr/sbin/httxt2dbm /usr/sbin/rotatelogs /usr/sbin/suexec
    4、httpd所需要的一些共享文件都安装在/usr/share目录下面
    /usr/share/doc/httpd-2.2.3 /usr/share/doc/httpd-2.2.3/ABOUT_APACHE

    /usr/share/man/man8/suexec.8.gz
    5、程序在运行时要改变的数据都安装在/var目录下面,根据内容不同在安装在不同的目录下面
    /var/cache/mod_proxy ------------>缓存
    /var/lib/dav
    /var/log/httpd ------------>日志
    6、apache作为web服务器需要一个发布网页的目录,/var/www就是一个放网页的目录
    在这里插入图片描述

温馨提示:
1、/var/www是apache默认的网站目录,你可以将网站代码文件放在这里,当然也可以放你喜欢的目录
2、上述提关于apache安装后的6个目录结构,是针对yum安装后的,如果是源码编译安装,则视你安装时的配置
3、初学者,在没有搞透文件权限之前,建议将网站代码文件放在/var/www/html

7、Apache配置——配置网站根目录

vi /etc/httpd/conf/httpd.conf

输入/DocumentRoot回车,搜索到该位置
可见默认的网站目录是/var/www/html
在这里插入图片描述

  • 如果整站均是纯静态网站,默认安装完,无需做任何修改,只要将网站代码全部上传至/var/www/html目录下,网站即可被正常访问

8、Xftp上传文件

用XFTP向Linux上传文件时出现Permission is not allowed
解决方案:

传输的文件夹权限不够。
添加权限:

sudo chmod 777 文件夹名称
sudo chmod -R 777 文件夹名称 #文件夹里的文件也赋权
sudo chmod 777 /var/www/html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 上传成功,并且可以访问

让纯静态网站可以运行不是最终目的,学好apache这个web服务器才是王道。我将网站代码重新上传一份至/home/myfirstweb目录下。则重复上页的命令vi /etc/httpd/conf/httpd.conf打开配置文件,输入/DocumentRoot回车,定位到该位置,将/var/ww/html修改为/home/myfirstweb,保存退出并重启apache。
在这里插入图片描述

  • 记得创建目录,否则httpd跑不起来

在这里插入图片描述

在这里插入图片描述
再次在访问实验机器的IP地址,会出现如下情况:
在这里插入图片描述
这是神马情况?!
Forbidden,禁止的意思,错误代码是403。
是的,你没有访问该网站的权限。这是网站代码目录的权限问题。

9、Apache配置——配置网站代码目录的权限

Apache配置文件中使用下面的语句组合来设置网站目录的权限

<Directory “网站文件目录”>
……
</Directory>

必须同时出现
中间……部分为权限声明语句
我们知道默认的目录是/var/www/html,我们来看看默认配置是如何为默认目录声明权限的。如下:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted #允许访问
#注意:
#此处语句旧版为Deny / Allow
#新版使用require
</Directory>

要实现为我的新目录/home/myfirstweb配置权限,将上面的/var/www/html修改为/home/myfirstweb即可,或者将上面的内容复制一份,并修改目录然后全部添加到配置文件中(即保留原内容)。修改完成后,保存配置并重启apache,再次访问网站发现可正常访问。

<Directory "/home/myfirstweb">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>

解释:

  • 禁止显示Apache目录列表
Options FollowSymLinks 
  • 在AllowOverride 设置为 None 时, .htaccess 文件将被完全忽略。当此指令设置为 All 时,所有具有
    “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中。
AllowOverride All 
  • 允许所有请求访问资源
Require all granted  

在这里插入图片描述

  • 直接改但是改烂了,又有强迫症想改回去原来一摸一样的,可以复制下面内容:
<Directory "/var/www/html">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

10、Apache配置——配置网站代码目录的权限

关于web服务器的权限配置,除了在apache内的权限声明外,还要注意系统用户的权限。
在这里插入图片描述
Apache配置文件中User是定义运行该程序的用户,通过grep搜索可知,默认的用户是“apache”(还有用户组的,组名都是apache)。通过ps查看进程可以确认这一点。

因此,我们要确保网站代码目录的系统权限允许“apache”这个用户及组可读/可写(有需要的话)
通过 ls –l确认网站目录的系统权限,如果不符合请使用chown或chmod命令修改为正确的权限。

11、Apache配置——配置默认文档

修改默认文档同样是在<Directory “网站文件目录”>……区域,接着前面的权限配置为例,全部的配置如下:

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    DirectoryIndex index.html index.php index.jsp default.aspx
</Directory>
  • DirectoryIndex语句开始,空格后加你想要的默认文档文件名。
  • 多个文件名以空格分隔只有其中一个生效,上边的举例是将其它的都填入以演示而已。
  • 如果不配置默认文档,则访问网站时如果只输入主机名,则会提示找不到文件。

在这里插入图片描述

12、Apache配置——配置主机名

ServerName www.test.com
  • 配置主机名的标识是ServerName,下图为apache配置文件中关于主机名配置说明:

在这里插入图片描述

  • 注释部分说的很明白,apache会自动检测主机IP,但建议在配置文件中声明主机名及端口,如果不声明则默认使用主机的IP地址进行访问,并且端口默认为80。下面举例多种配置案例:
ServerName 192.168.190.128  #指定服务器IP为主机名,端口为默认80
ServerName 192.168.190.128:8080  #指定服务器IP为主机名,端口为8080
ServerName www.test.com  #指定域名www.text.com为主机名,端口为默认80
ServerName www.test.com:9090  #指定域名www.text.com为主机名,端口为9090

13、查看ServerName

grep ServerName httpd.conf

在这里插入图片描述
以添加www.test.com域名为例。
由于我并没有test.com这个域名的所有权,再加上目前的实验环境是内网,无法使用域名注册商上的域名解释功能。因此,对于做实验的,我们可以通过在操作系统中对hosts文件进行声明。

(1)、windows系统hosts文件路径:

C:\Windows\System32\drivers\etc\hosts

(2)、linux系统hosts文件路径:

/etc/hosts
  • 如下图,最hosts文件最后添加一行。格式为:
IP地址 域名
  • 设置完毕后,即可以使用www.test.com域名访问网站。

在这里插入图片描述
在这里插入图片描述

14、Apache配置——配置web服务器的日志

Web服务器的日志对检查web服务器的故障,以及网页的被访问情况极其重要。我们来看一下默认安装的apache,将日志保存在哪里。只要知道保存在哪里,想要修改为我希望的保存路径就只是修改目录而已。
Apache日志有两种:apache程序自身的运行日志、用户访问日志。

(1)运行日志/错误日志

ErrorLog "logs/error_log" LogLevel warn

定义日志保存路径,logs的完整路径是/etc/httpd/logs/error_log
定义日志记录的级别,有8种,warn为告警级别。欲了解更多请搜索“apache 日志级别”
在这里插入图片描述

(2)用户访问日志

CustomLog "logs/access_log" combined

声明日志路径及日志格式。日志格式的意思是:日志记录的内容包含哪些内容,内容的顺序如何。内容有:日期、用户类型、文档大小、url等等。 这些内容的排序方式,就是格式问题。Combined为标准的日志格式

上面显示的是默认的日志保存路径,可以修改为自己喜欢的路径,但要注意两点:

1、先创建一个空的日志文件,即你在apache配置文件声明的保存文件不能还没有存在;

2、注意文件的系统权限,是否允许了apache的运行用户的读写权限。

15、Apache配置——其它配置

要让一个纯静态网站跑起来是比较简单的事,但我们的目标是学好apache,所以除了前面介绍的配置,还有加密配置(俗称的https)、访问权限、压缩、缓存等等,这些配置不再一一演示,请自行搜索练习。

16、总结

本文介绍web服务器的基本概念及各平台常用的web服务端程序,另外以apache为例对配置网站根目录配置网站代码目录的权限配置默认文档配置访问地址配置web服务器的日志配置网站端口分别进行了演示,其它的配置请自行搜索学习。

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

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

相关文章

自定义TagViewGroup

来看看如何实现最最基本的TagGroupView&#xff0c;该视图作为ViewGroup的作用是实现其中的子视图的自动换行&#xff0c;保证子视图能够按照在xml中传入的顺序来相对合理地显示到界面上。 注意&#xff1a;其实在Android技术已经非常完善的当下&#xff0c;其实我们已经不怎么…

【k8s】k8s的yaml文件解释,如何部署一个java.jar包

前言&#xff1a; k8s的yaml文件解释&#xff0c;如何部署一个java,jar包 YAML语法格式&#xff1a; 大小写敏感&#xff1b;使用缩进表示层级关系&#xff1b;不支持Tab键制表符缩进&#xff0c;只使用空格缩进&#xff1b;缩进的空格数目不重要&#xff0c;只要相同层级的元…

Imx6ull linux 设备树

一 linux设备树简介 1.1 linux设备树 Linux设备树是一种用于描述硬件设备信息的数据结构&#xff0c;它在Linux内核中发挥着越来越重要的作用 在系统上电后&#xff0c;BootLoader会将设备树传递给Linux内核&#xff0c;内核根据识别的树信息展开为platform_device、spi_dev…

如何用爬虫实现GPT功能

如何用爬虫实现GPT功能&#xff1f; GPT&#xff08;Generative Pre-trained Transformer&#xff09;和爬虫是两个完全不同的概念和技术。GPT是一种基于Transformer模型的自然语言处理模型&#xff0c;用于生成文本&#xff0c;而爬虫是一种用于从互联网上收集数据的技术。 …

贝叶斯 A/B 测试解释与Python实现

一、说明 A / B测试在各个行业中有许多应用。从试图确定最佳市场群体到医疗药物测试&#xff0c;它具有各种应用&#xff0c;并允许企业根据结果做出决策。有两种常见的A/B检验方法&#xff0c;频率主义方法和贝叶斯方法&#xff0c;两者都是从假设检验的基础出发的。在本文中&…

819. 递归求阶乘

链接&#xff1a; 819.递归求阶乘 题目&#xff1a; 请使用递归的方式求 nn 的阶乘。 输入格式 共一行&#xff0c;包含一个整数 nn。 输出格式 共一行&#xff0c;包含一个整数&#xff0c;表示 nn 的阶乘的值。 数据范围 1≤n≤101≤n≤10 输入样例&#xff1a; 3输出样例&am…

【Linux】查看系统各种信息的常用命令 (CPU、内存、进程、网口、磁盘、硬件、等等)

Linux是一种开源的类Unix操作系统&#xff0c;它有很多不同的发行版&#xff0c;如Ubuntu、CentOS、Debian等。Linux系统提供了很多命令行工具&#xff0c;可以让用户方便地查看和管理系统的各种信息&#xff0c;如硬件配置、内存使用、进程状态、网络连接等。本文将介绍一些常…

解决IDEA项目external libraries依赖包消失的问题

有时候电脑重启后&#xff0c;再打开IDEA上的项目时会出现external libraries目录下的依赖包都消失了的情况&#xff0c;只剩下了一个JDK的包 网上说可以通过刷新IDEA的缓存解决&#xff0c;但我试了没有效果&#xff0c;最后使用如下办法解决&#xff1a; 1.删除项目目录下的…

python接口自动化(二十五)--unittest断言——下(详解)

简介 本篇还是回归到我们最初始的话题&#xff0c;想必大家都忘记了&#xff0c;没关系看这里&#xff1a;传送门 没错最初的话题就是登录&#xff0c;由于博客园的登录机制改变了&#xff0c;本篇以我找到的开源免费的登录API为案例&#xff0c;结合 unittest 框架写 2 个用例…

MySQL原理探索——26 备库为什么会延迟好几个小时

在上一篇文章中&#xff0c;介绍了几种可能导致备库延迟的原因。你会发现&#xff0c;这些场景里&#xff0c;不论是偶发性的查询压力&#xff0c;还是备份&#xff0c;对备库延迟的影响一般是分钟级的&#xff0c;而且在备库恢复正常以后都能够追上来。 但是&#xff0c;如果备…

nvm的安装与使用5分钟极速上手

nvm的安装与使用5分钟极速上手 下载 nvm 并安装 nvm官网下载地址推荐下载 nvm-setup.zip 这一个&#xff0c;nvm-noinstall.zip下载之后不用安装&#xff0c;但是得自己配置setting.txt文件&#xff0c;以及环境变量&#xff0c;过于麻烦。nvm-setup.zip 会直接帮我们把环境变…

开篇(变量、运算符、进制)

一、Java简介 JDK&#xff08;JRE&#xff08;JVM & API&#xff09;、Java language&#xff08;tools & APIs&#xff09;&#xff09;&#xff1b;java源文件 → javac的编译 → class类&#xff08;会生成一个或多个class文件&#xff09;&#xff1b; * 使用 jav…

什么是Qt Widgets?一组创建经典桌面应用UI的界面组件!

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 Qt Widgets模块提供…

QGIS 根据点位批量出图

背景 在工作中&#xff0c;当有大量项目点位需要结合地图介绍时&#xff0c;则需要批量截图。于是有了今天的教程。 一 工具及材料准备 QGIS 插件 QuickMapServices 点位集合 CSV文件 其他图层文件 二 导入图层 这里根据实际需要导入自己对应格式的就好。 图层-添加…

计算机网络地址

1、ipv4地址 2、网络地址转换 3、子网划分和主机号

Spring MVC 注解实现

注解描述 注解描述Controller用于标记在一个类上&#xff0c;使用它标记的类就是一个SpringMVC Controller 对象&#xff0c;分发处理器将会扫描使用了该注解的类的方法&#xff0c;并检测该方法是否使用了RequestMapping 注解。Controller 只是定义了一个控制器类&#xff0c…

第七章 环境软件的安装

1、nodeJS安装 node -v node版本 安装多个node版本 pnpm i nvm -g nvm -v nvm ls 查看当前安装的版本 nvm install 18.7.0 安装指定的版本 nvm use 18.6.0 切换到别的版本 安装pnpm npm i pnpm -g pnpm -v 安装VSCode 官网直接下载 安装好后 需要配置 按住 CMD +…

基于单片机的老人防摔倒的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过LCD1602液晶显示屏显示当前的经纬度及时间的信息&#xff1b;温度传感器采集当前体温&#xff1b;通过GPS接收模块获得当前位置的位置的经度、纬度、时间和高度等信息&#xff1b;通过ADXL345检测老人摔倒的一瞬间重力加速度通…

[解决Github 克隆错误] unable to access ‘xxx‘: Recv failure: Connect

1.错误描述&#xff1a; 从GitHub上克隆仓库到本地&#xff0c;出现错误&#xff1a; unable to access https://github.com/xxxx: Recv failure: Connection was reset。 克隆失败。 2.第一次解决此问题&#xff1a;从终端输入&#xff1a; git config --global http.sslVer…

Liunx下的消费者与生产者模型与简单线程池的实现

文章目录 前言1.消费者与生产者模型2.信号量1.信号量的接口2.使用环形队列模拟生产者消费者模型 3.简单实现线程池4.补充说明 前言 本文主要会结束消费者生产者模型&#xff0c;以及简单线程池的实现。 1.消费者与生产者模型 之前我们学了条件变量和互斥等概念。条件变量本质…