【运维工程师学习四】Web服务之Linux配置安装Apache

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服务器的日志配置网站端口分别进行了演示,其它的配置请自行搜索学习。

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
作为一名 CSDN 系统运维工程师,你需要具备以下技能: 1. Linux 系统管理和操作:掌握 Linux 操作系统的基本命令、文件系统、进程管理、用户权限管理等技能,能够熟练使用 Shell 脚本编写自动化脚本。 2. 网络基础知识:了解 TCP/IP 协议、网络拓扑结构、路由器、交换机等基础知识,掌握常见网络故障排查方法。 3. 数据库管理:熟悉 MySQL、Oracle、MongoDB 等数据库的安装配置和维护,能够进行数据备份、恢复、性能优化等操作。 4. Web 服务器管理:掌握 Apache、Nginx 等 Web 服务器的安装配置和维护,能够进行网站部署、负载均衡等操作。 5. 容器技术:了解 Docker、Kubernetes 等容器技术,能够进行容器的部署、管理和维护。 6. 监控和日志管理:熟悉 Zabbix、Grafana、ELK 等监控和日志管理工具,能够进行监控和日志分析。 7. 自动化运维:熟悉 Ansible、SaltStack 等自动化运维工具,能够进行自动化部署、配置管理和任务调度等操作。 8. 安全防护:了解常见的安全攻击手段和防御方法,能够进行安全加固、漏洞扫描和安全审计等操作。 基于以上技能要求,你可以按照以下学习路线进行学习: 1. 学习 Linux 操作系统基础知识,包括常用命令、文件系统、用户权限管理等。 2. 学习网络基础知识,了解 TCP/IP 协议、网络拓扑结构、路由器、交换机等基础知识。 3. 学习数据库管理知识,包括 MySQL、Oracle、MongoDB 等数据库的安装配置和维护等。 4. 学习 Web 服务器管理知识,包括 Apache、Nginx 等 Web 服务器的安装配置和维护等。 5. 学习容器技术,了解 Docker、Kubernetes 等容器技术的基本原理和使用方法。 6. 学习监控和日志管理知识,包括 Zabbix、Grafana、ELK 等监控和日志管理工具的使用方法。 7. 学习自动化运维知识,包括 Ansible、SaltStack 等自动化运维工具的使用方法。 8. 学习安全防护知识,了解常见的安全攻击手段和防御方法,学习安全加固、漏洞扫描和安全审计等操作。 以上是一个较为全面的学习路线,你可以根据自己的实际情况和需求进行调整和优化。在学习过程中,不断实践和总结经验,参与一些开源项目或者个人项目会有助于提升技能和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallFatMan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值