Linux 【web 服务器】Apache(httpd)

散落在麦田的星 2024-10-06 14:03:04 阅读 64

        Apache HTTP Server(简称Apache或httpd)是一个开放源码的网页服务器,是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

        Apache提供的web服务器的守护进程是httpd,通过http协议进行文本传输,默认使用80端口的明文传输方式,后来,为了保证数据的安全和可靠性,又添加了443的加密传输的方式;Apache提供的服务器又被称为:补丁服务器,它是一款高度模块化的软件,想要给它添加相应的功能只需添加相应的模块,让其Apache主程序加载相应的模块,不需要的模块也可以不用加载,保证了Apache的简洁,轻便,高效性,当出现大量访问一个服务器是可以使用多种复用模式,保证了服务器能快速回应客户端的请求,如MPM,端口复用技术。

特点:

开放源代码跨平台使用,支持绝大多数硬件平台,支持所有的unix系统和linux系统,支持大多数windows平台支持多种web编程语言,perl,php,python,java等模块化设计,根据所需功能去安装不同的模块运行非常稳定,支持大负载访问的web站点安全性高,及时修复已发现的漏洞

1.安装apache

<code>yum install -y httpd

#启动:

systemctl start httpd

#状态:

systemctl status httpd

#查看端口:

netstat -lntp | grep 80

配置文件目录:

<code>网站根目录:/var/www/html/

错误信息目录:/var/www/error/

Apache日志文件:/var/log/httpd/

主要执行文件: /usr/sbin/apachectl

二进制执行文件: /usr/sbin/httpd

主配置文件:/etc/httpd/conf/httpd.conf

cd /etc/httpd/

#

./conf/ 主配置文件

./conf.d/ 子配置文件

./logs/ 存储日志

./modules/ 存储模块

./run/ 存储Pid文件,存放的pid号码。是主进程号

查看配置文件:

vim /etc/httpd/conf/httpd.conf

ServerRoot "/etc/httpd" #工作目录:服务器设置的最顶层目录

Listen 80 #监听端口

Include conf.modules.d/*.conf #包含conf.modules.d目录下的*.conf文件

User apache #子进程的用户,有可能被人改称www账户

Group apache#子进程的组

ServerAdmin root@localhost # 设置管理员邮件地址

##对根目录的一个权限的设置

<Directory /> #网站容器开始标识

AllowOverride none #对目录设置特殊属性:none不使用.htaccess控制,all允许

Require all denied #granted 表示允许所有访问,denied 表示拒绝所有访问

DocumentRoot "/var/www/html" #默认页面存放位置(目录),可更改

##对/var/www/html目录的一个权限的设置

<Directory "/var/www/html">

Options Indexes FollowSymLinks #找不到index.html主页时,以目录的方式呈现,并允许链接到网站根目录以外

AllowOverride None #对目录设置特殊属性:none不使用.htaccess控制,all允许

Order allow,deny #对页面的访问控制顺序后面的一项是默认选项。如allow,deny则默认是deny

Allow from all #允许所有的用户,通过和上一项结合可以控制对网站的访问控制

</Directory>

##默认打开的网页文件名称

<IfModule dir_module>

DirectoryIndex index.html

</IfModule>

ErrorLog "logs/error_log" #错误日志存放的位置

ServerSignature On #当客户请求的网页不存在,或者错误的时候是否提示apache的版本的一些信息

IncludeOptional conf.d/*.conf # 包含conf.d目录下的*.conf文件

访问控制:

首先:先把默认页面移除

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.back

修改配置文件:

vim /etc/httpd/conf/httpd.conf

1.默认允许所有主机访问

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride None

Require all granted

</Directory>

2.默认拒绝所有主机访问

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride None

Require all denied

</Directory>

3.设定:拒绝少部分,允许大部分:可用于黑名单

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride None

<RequireALL>

Require not ip 192.168.137.152

Require all granted

</RequireAll>

</Directory>

4.设定:拒绝大部分,允许少部分:可用于内部测试

<Directory "/var/www/html">

Options Indexes FollowSymLinks

AllowOverride None

<RequireAny>

Require ip 192.168.137.152

Require all denied

</RequireAny>

</Directory>

虚拟主机:

虚拟主机:多个网站在一台服务器上。应用于只有一台服务器但需要提供多个页面时。

三种:基于域名、基于端口、基于Ip。

1.基于域名:

ip相同,端口相同,域名不同:

错误日志:vim /var/log/httpd/error_log

1.创建子配置文件:test.conf

cd /etc/httpd/conf.d/

vim test.conf

#虚拟主机1

<VirtualHost *:80> #VirtualHost:虚拟主机端口;*代表监听本机所有ip,也可以指定ip

DocumentRoot /alan #发布网站目录,自己定义

ServerName www.alan.com #域名,可以自己定义

<Directory "/alan/">

AllowOverride None #设置目录的特性

Require all granted #允许所有人访问

</Directory>

</VirtualHost>

#虚拟主机2

<VirtualHost *:80> #VirtualHost:虚拟主机端口;*代表监听本机所有ip,也可以指定ip

DocumentRoot /tom #发布网站目录,自己定义

ServerName www.tom.com #域名,可以自己定义

<Directory "/tom/">

AllowOverride None #设置目录的特性

Require all granted #允许所有人访问

</Directory>

</VirtualHost>

2.创建 /alan 目录:默认页面发布目录

mkdir /alan

mkdir /tom

3.创建 index.html 文件,作为默认页面

echo "My name is alan." >>/alan/index.html

echo "My name is tom." >>/tom/index.html

4.给权限:重启:

chmod 777 /alan

chmod 777 /alan/index.html

chmod 777 /tom

chmod 777 /tom/index.html

systemctl restart httpd

5.修改本地域名解析

vim /etc/hosts

<code>6.查看:

curl www.alan.com

2.基于端口

域名相同,ip相同,端口不同:

错误日志:vim /var/log/httpd/error_log

1.创建子配置文件:test.conf

cd /etc/httpd/conf.d/

vim test.conf

###################

Listen 81

Listen 82

#虚拟主机1

<VirtualHost *:81> #VirtualHost:虚拟主机端口;*代表监听本机所有ip,也可以指定ip

DocumentRoot /alan #发布网站目录,自己定义

ServerName www.alan.com #域名,可以自己定义

<Directory "/alan/">

AllowOverride None #设置目录的特性

Require all granted #允许所有人访问

</Directory>

</VirtualHost>

#虚拟主机2

<VirtualHost *:82> #VirtualHost:虚拟主机端口;*代表监听本机所有ip,也可以指定ip

DocumentRoot /tom #发布网站目录,自己定义

ServerName www.alan.com #域名,可以自己定义

<Directory "/tom/">

AllowOverride None #设置目录的特性

Require all granted #允许所有人访问

</Directory>

</VirtualHost>

<code>2.其他操作同《基于域名》

systemctl restart httpd

curl www.alan.com:81

3.基于IP

端口相同,域名相同,ip不同:

输入域名,通过DNS解析为不同的IP。

错误日志:vim /var/log/httpd/error_log

1添加临时ip

ip a a 192.168.137.153/24 dev ens33

2.创建子配置文件:test.conf

cd /etc/httpd/conf.d/

vim test.conf

###################

<VirtualHost 192.168.137.152:80>

DocumentRoot /alan

ServerName www.alan.com

<Directory "/alan/">

AllowOverride None

Require all granted

</Directory>

</VirtualHost>

<VirtualHost 192.168.137.153:80>

DocumentRoot /tom

ServerName www.alan.com

<Directory "/tom/">

AllowOverride None

Require all granted

</Directory>

</VirtualHost>

<code>3.其他操作同《基于域名》

systemctl restart httpd

4.修改本地域名解析

vim /etc/hosts

curl 192.168.137.152



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。