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