Linux Apache服务介绍及搭建 - Go语言中文社区

Linux Apache服务介绍及搭建


Apache服务(Apache HTTP Server),是Apache软件基金会的一个开放源码的网页服务器。 
Apache官方网站:http://www.apache.org/

Centos6 和Centos7两个自带版本

Centos 6:2.2 
Centos 7:2.4

下面说一下Linux下Apache的安装

安装方式: 
–> rpm安装 
–> 编译安装 
–> yum安装

需要安装4个包:httpd、httpd-devel、httpd-manual、httpd-tools 
这里写图片描述

这里写图片描述

Centos6:

一、程序环境

1、配置文件:

/etc/httpd/conf/httpd.conf 
/etc/httpd/conf.d/*.conf

2、服务脚本:

/etc/rc.d/init.d/httpd 
配置文件:/etc/sysconfig/httpd

3、主程序文件:

/usr/sbin/httpd 
/usr/sbin/httpd.event 
/usr/sbin/httpd.worker

4、日志文件目录:

/var/log/httpd 
->access_log: 访问日志 
error_log:错误日志

5、站点文档目录:

/var/www/html

6、模块文件路径:

/usr/lib64/httpd/modules

7、配置文件的组成:

~]# grep “Section” /etc/httpd/conf/httpd.conf 
### Section 1: Global Environment 
### Section 2: ‘Main’ server configuration 
### Section 3: Virtual Hosts

8、配置格式:

directive value 
directive:不区分字符大小写 
value:为路径时,取决于文件系统

二、服务搭建及相应配置 
1、开启Apache服务

先编辑一下配置文件/etc/httpd/conf/httpd.conf,在ServerName 那一行加上localhost:80 否则在启动服务的时候会报错 
这里写图片描述 
启动httpd服务 
这里写图片描述

2、关闭SELinux、iptables防火墙

把/etc/selinux/conf 配置文件中的SELINUX修改为disabled。保存退出后重启虚拟机! 
这里写图片描述 
这里写图片描述 
重启虚拟机后查看SELinux状态,已经关闭 
这里写图片描述 
关闭iptables防火墙

3、重启httpd服务,打开浏览器,测试访问

这里写图片描述

这里写图片描述
PS:局域网中的机器都可以访问到

4、修改监听的端口和IP,测试访问

新加一行 Listen 10.33.2.254:8080 使其监听当前主机的8080端口 
这里写图片描述

重新加载httpd服务。一般情况下修改完配置文件不要重新启动,重新加载一下即可 
这里写图片描述

测试访问 
这里写图片描述
PS:可能浏览器兼容性有问题,未修改前用的IE浏览器可以,修改完之后发现IE就不行了,360可以正常访问。

5、持久连接

Persistent Connection:连接建立,每个资源获取完成后不会断开连接,而是继续等待其它的请求完成。

如何断开?

数量限制:100 
时间限制:可配置(一般不要配置太长时间,10秒左右即可)

副作用:对并发访问量较大的服务器,持久连接功能会使有些请求得不到响应

折中方案:使用较短的持久连接时间

测试:

可以本地测试 
telnet HOST PORT 
GET /URL HTTP/1.1 
Host:HOSTNAME or IP

这里写图片描述 
PS:在输入Host之后敲两次回车,会显示出来我们要访问的文档,看一下文档末尾信息: 
这里写图片描述 
会显示连接断开,这是因为配置文件中设置的持久连接是关闭状态的。 
这里写图片描述

把持续连接由off–>on,重新加载服务后在测试一下: 
这里写图片描述 
这里写图片描述 
可以看到连接并没有断开,还是持续着的 
等待15秒,超时断开 
这里写图片描述

持续连接状态:KeepAlive On | off 
最大请求数:MaxKeepAliveRequest # 
超时时间(s):KeepAliveTimeout #

6、切换默认访问URL

这里写图片描述 
在浏览器中输入主机IP默认访问的URL是/var/www/html,可以通过修改配置文件修改默认访问URL,即DocumentRoot。下面做一下实验,先把DocumentRoot改成/www/rsq,但是Directory不变,看看实验结果是什么 
这里写图片描述 
这里写图片描述

重载服务,测试访问 
这里写图片描述 
成功访问

把/www/rsq/index.html 重命名为:test.html,再访问一下看会发生什么。 
这里写图片描述

这里写图片描述

会发现又回到欢迎界面了,那我们把配置文件中的Directory目录改成/www/rsq/,看看会发生什么。 
这里写图片描述 
会发现变成了Index界面,可以下载一些文件,再把配置文件中的Directory下options选项中的Indexes删除掉,看看会发生什么。 
这里写图片描述

这里写图片描述 
被禁止访问了

PS:在options选项中,除了Indexes外还有一个选项FollowSymLinks,这个的选项含义是允许跟踪符号链接文件,当/www/rsq/目录下有链接文件时还可以访问到次文件,若是把这个删除,那链接文件就不能访问到了

Directory中“基于来源地址”实现访问控制: 
(1) Options 
所有可用特性:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews None, All

Indexes: 索引; 
FollowSymlinks:允许跟踪符号链接文件; 
SymLinksifOwnerMatch:若符号链接的属主和本地链接文件属主一样才可以访问 
MultiViews:是否允许多视图

(2) 基于来源地址的访问控制机制 
Order:检查次序 
Order allow,deny 做白名单,默认deny 
Order deny,allow 做黑名单,默认allow 
Allow from 
Deny from

来源地址: 
IP/NetAddr: 
172.16 
172.16.0.0 
172.16.0.0/16 
172.16.0.0/255.255.0.0

7、路径别名: 
DocumentRoot “/www/rsq”

要访问:http://10.33.2.254/download/bash-4.4.2-3.el6.x86_64.rpm
        会访问:--> /www/rsq/download/bash-4.4.2-3.el6.x86_64.rpm

别名:Alias /URL/ "/PATH/TO/SOMEDIR/"  
    定义“Alias /bbs/ "/Doc/htdocs"
        要访问:http://10.33.2.254/bbs/index.html   
        会访问:--> /Doc/htdocs/bbs/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

8、设定默认字符集

AddDefaultCharset UTF-8 
列举几种类型:GBK, GB2312, GB18030

9、基于用户的访问控制

认证质询:

WWW-Authenticate:响应码为401,拒绝客户端请求,并说明要求客户提供账号和密码;

认证:

Authorization:客户端用户填入账号和密码后再次发送请求报文;认证通过,则服务器发送响应的资源;

认证类型:

basic:明文 
digest:消息摘要

安全域:

需要用户认证后方能访问的路径; 
应该通过名称对其进行标识,并用于告知用户认证的原因;

用户的账号和密码存储于何处?

虚拟账号:仅用于访问某服务时用到的认证标识;

存储:

文本文件 
SQL数据库 
ldap 
nis

说一下basic认证:

1、定义安全区域

例子: 
< Directory “”> 
Options Indexes FollowSymLinks #选项 
AllowOverride None #是否允许覆盖 
AuthType Basic #认证类型 
AuthName “Adiministator Private” #认证名字 
AuthUserFile “/etc/httpd/conf.d/.htpasswd” #认证文件 
Require valid-user #允许所有用户登录;允许某些用户访问或某些组访问都在这里设置 
< /Directory > 
这里写图片描述
需要在/www/rsq/目录下创建admin文件夹,然后测试。 
PS:以下的实验由于换了一台PC,所以虚拟机IP发生变化,不过不影响实验,在此声明新IP:192.168.56.136 
这里写图片描述
测试 
这里写图片描述 
提示要输入用户名和密码,下面开始创建用户名和密码:

2、提供账号和密码存储(文本文件)

使用htpasswd命令进行管理

htpasswd [options] passwordfile username 
-c: 自动创建passwordfile,因此,仅应该在添加第一个用户时使用; 
-m: md5加密用户密码; 
-s: sha1加密用户密码; 
-D: 删除指定用户

这里写图片描述
PS:创建了两个用户,分别为RSQ1、RSQ2,在创建第二个用户的时候不加 ‘-c’ 选项

测试: 
这里写图片描述
这里写图片描述
——成功登陆—— 
PS:成功登陆后访问的依然是文件类型的,可以在admin文件中创建一个index.html的文件,添加点内容,这样显示的就会是网页格式了,在配置文件中可以定义主页面的格式!

3、实现基于组进行认证

只需要把配置文件略做改动,然后创建相应目录即可 
< Directory “/www/htdocs/admin”> 
Options Indexes FollowSymLinks 
AllowOverride None 
AuthType Basic 
AuthName “Administator private” 
AuthUserFile “/etc/httpd/conf.d/.htpasswd” 
AuthGroupFile “/etc/httpd/conf.d/.htgroup” 
Require group Users 
< /Directory > 
为了有对比,这里再创建一个Tom用户 
这里写图片描述
在/etc/httpd/conf.d/目录下创建一个 ‘.htgroup’ 隐藏文件,并添加以下内容: 
这里写图片描述 
修改配置文件为如下: 
这里写图片描述
重新加载服务,访问测试 
这里写图片描述
这里写图片描述

测试一下RSQ1能否访问 
这里写图片描述
这里写图片描述
不能访问,要求重新输入账户和密码

10、虚拟主机

有三种实现方案:

—>基于ip: 
为每个虚拟主机准备至少一个ip地址;实践中很少使用 
—>基于port: 
为每个虚拟主机准备至少一个专用port;实践中也很少使用 
—>基于hostname: 
为每个虚拟主机准备至少一个专用hostname;实践中经常使用

PS:可混合使用上述三种方式中任意方式;一般虚拟主机莫与中心主机混用,所以,要使用虚拟主机,先禁用中心主机(注释DocumentRoot)

每个虚拟主机都有专用配置:

< VirtualHost “IP:PORT”> 
SeverName 
DocumentRoot “” 
< /VirtualHost> 
也可定义如下内容,但是最主要的两项还是上面的两项 
ServerAlias: 虚拟主机的别名; 
ErrorLog:错误日志 
CustomLog:访问日志 
还可以使用Directory封装,做访问控制 
< Directory “”> 
< /Directory >

1、基于IP

先把配置文件中的DocumentRoot注释,然后在配置文件最后添加我们新添加的内容,然后创建相应的目录即可。 
这里写图片描述
保存退出后新添加ip:192.168.56.137/24 
这里写图片描述
然后创建相应的DocumentRoot目录,多创建几个sample,后续实验会用到。在doc目录下分别创建index.html,内容分别为sample1.rsq.com、sample2.rsq.com,以便测试对比。 
这里写图片描述
可以用httpd -t 或 service httpd configtest 检查配置文件中语法是否有误,无误后重启服务 
这里写图片描述
测试 
这里写图片描述
这里写图片描述

2、基于Port

在配置文件中添加一些内容 
这里写图片描述
既然修改了端口,那相应的就应该修改监听端口 
这里写图片描述
然后在/vhost/sample3/doc/目录下创建index.html,内容为sample3.rsq.com。就不附图了。 
修改了端口,重启服务 
这里写图片描述
测试 
这里写图片描述
这里写图片描述

3、基于Hostname

先去掉配置文件中NameVirtualHost的注释,并修改 
这里写图片描述
然后修改虚拟主机配置 
这里写图片描述
三个虚拟主机,对应的ServerName不同,重载,开始测试。在测试的时候可以换一台虚拟机,添加解析内容到/etc/hosts 文件中,否则浏览器解析不了我们要访问的主机名。 
这里写图片描述
保存退出,开始测试 
这里写图片描述
这里写图片描述
这里写图片描述
PS:局域网内的机器只要修改一下hosts文件,都可以访问得到

11、status页面

在访问主机的时候,在后边加上server-status可以查看本机服务器的状态页面,如下:。 
这里写图片描述
只需要把配置文件900多行位置的注释去掉,并允许本地网段访问即可,Allow From 192.168.56 
这里写图片描述

PS:在设置虚拟主机的时候为其提供https服务,使得用户可以通过https安全的访问此web站点,这个就需要用到openssl证书认证了,可以看看我写的另一篇文章OpenSSL

有几个关于Apache的命令,给大家分享一下

curl 
lynx

********End********

转载至https://blog.csdn.net/mr_rsq/article/details/71055677


版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/vic_qxz/article/details/80536370
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 23:01:01
  • 阅读 ( 816 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢