您的位置:首页 > 运维架构 > Apache

Linux Apache服务介绍及搭建

2017-05-01 14:14 746 查看
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/


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

[b]********End********[/b]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息