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

【运维工程师学习四】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

【运维工程师学习四】Web服务之Linux配置安装Apache_第1张图片

(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,重启系统使生效

在这里插入图片描述

【运维工程师学习四】Web服务之Linux配置安装Apache_第2张图片

【运维工程师学习四】Web服务之Linux配置安装Apache_第3张图片

5、Apache的启动验证

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

【运维工程师学习四】Web服务之Linux配置安装Apache_第4张图片

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

6、Apache安装后的目录结构

一、配置文件放在 /etc下面 /etc/httpd 配置文件根目录
【运维工程师学习四】Web服务之Linux配置安装Apache_第5张图片

  • 没有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就是一个放网页的目录
    【运维工程师学习四】Web服务之Linux配置安装Apache_第6张图片

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

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

vi /etc/httpd/conf/httpd.conf

输入/DocumentRoot回车,搜索到该位置
可见默认的网站目录是/var/www/html
【运维工程师学习四】Web服务之Linux配置安装Apache_第7张图片

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

8、Xftp上传文件

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

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

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

在这里插入图片描述

【运维工程师学习四】Web服务之Linux配置安装Apache_第8张图片

【运维工程师学习四】Web服务之Linux配置安装Apache_第9张图片

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

让纯静态网站可以运行不是最终目的,学好apache这个web服务器才是王道。我将网站代码重新上传一份至/home/myfirstweb目录下。则重复上页的命令vi /etc/httpd/conf/httpd.conf打开配置文件,输入/DocumentRoot回车,定位到该位置,将/var/ww/html修改为/home/myfirstweb,保存退出并重启apache。
【运维工程师学习四】Web服务之Linux配置安装Apache_第10张图片

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

【运维工程师学习四】Web服务之Linux配置安装Apache_第11张图片

【运维工程师学习四】Web服务之Linux配置安装Apache_第12张图片
再次在访问实验机器的IP地址,会出现如下情况:
【运维工程师学习四】Web服务之Linux配置安装Apache_第13张图片
这是神马情况?!
Forbidden,禁止的意思,错误代码是403。
是的,你没有访问该网站的权限。这是网站代码目录的权限问题。

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

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


……
</Directory>

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

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

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

"/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  

【运维工程师学习四】Web服务之Linux配置安装Apache_第14张图片

  • 直接改但是改烂了,又有强迫症想改回去原来一摸一样的,可以复制下面内容:
"/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内的权限声明外,还要注意系统用户的权限。
【运维工程师学习四】Web服务之Linux配置安装Apache_第15张图片
Apache配置文件中User是定义运行该程序的用户,通过grep搜索可知,默认的用户是“apache”(还有用户组的,组名都是apache)。通过ps查看进程可以确认这一点。

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

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

修改默认文档同样是在……区域,接着前面的权限配置为例,全部的配置如下:

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

【运维工程师学习四】Web服务之Linux配置安装Apache_第16张图片

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

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

【运维工程师学习四】Web服务之Linux配置安装Apache_第17张图片

  • 注释部分说的很明白,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域名访问网站。

【运维工程师学习四】Web服务之Linux配置安装Apache_第18张图片
【运维工程师学习四】Web服务之Linux配置安装Apache_第19张图片

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

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

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

ErrorLog "logs/error_log" LogLevel warn

定义日志保存路径,logs的完整路径是/etc/httpd/logs/error_log
定义日志记录的级别,有8种,warn为告警级别。欲了解更多请搜索“apache 日志级别”
【运维工程师学习四】Web服务之Linux配置安装Apache_第20张图片

(2)用户访问日志

CustomLog "logs/access_log" combined

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

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

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

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

15、Apache配置——其它配置

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

16、总结

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

你可能感兴趣的:(运维工程师学习,运维,学习,前端,运维开发,shell,apache,centos)