Apache 部署配置

news/2024/6/19 0:31:08 标签: apache

一、Apache 部署

1.1 安装 Apache

 1.上传  httpd 源码包至服务器

 2.确认 ht tpd 服务是否安装,并安装 2.4 版本所需依赖

# rpm -qa httpd

若提示已安装则进行卸载,未安装则直接执行第 3 步:

# rpm -e httpd --nodeps

-e:这是 rpm 命令的选项,表示卸载或删除一个已安装的 RPM 包。

--nodeps:这是 rpm 命令的选项,它告诉系统忽略依赖关系检查。

# yum install -y apr apr-devel cyrus-sasl-devel expat-devel libdb-devel openldap-devel apr-util-devel apr-util pcre-devel pcre gcc gcc-c++ make lrzsz

3.解压 并制 定解压目录

# tar zxf httpd-2.4.25.tar.gz -C /usr/src/

进入解压目录

# cd /usr/src/httpd-2.4.25/

4.执行配置:

# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

其中选项作用如下:

--prefix:指定将 httpd 服务程序安装到哪个目录,如/usr/local/httpd。若不指定安装目录,默认安装在/usr/local/apache2 目录下

--enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。

--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。

--enable-charset-lite:启动字符集支持,以便支持使用各种字符集编码的网页。

--enable-cgi:启用 CGI 脚本程序支持,便于扩展网站的应用访问能力。

 5.执行编译以及安装:

# make && make install

 6.确认安装成功,进入安装目录查看是否有文件存在# cd /usr/local/httpd/

7.优化 路径方便管理:

# ln -s /usr/local/httpd/bin/* /usr/local/bin///文件链接

创建了一个符号链接(symbolic link)来将 /usr/local/httpd/bin/ 目录中的所有文件链接到 /usr/local/bin/ 目录下。

-s 选项表示创建符号链接(而不是硬链接,符号链接是一种指向目标文件或目录的引用)。

方便直接执行命令,不用跑到httpd目录下去执行了,不创建的话可能无法直接执行 httpd -v

# httpd -v  //查看当前 httpd 程序版本

8.设置为开机自启 

centos 7.5:

创建 Apache 系统控制文件:

#vim /lib/systemd/system/httpd.service

[Unit][lc1] 

Description=The Apache HTTP Server

After=httpd.target

[Service] [lc2] 

Type=forking

PIDFile=/usr/local/httpd/logs/httpd.pid ExecStart=/usr/local/bin/apachectl $OPTIONS ExecReload=/bin/kill -HUP $MAINPID

KillMode=process

Restart=on-failure

RestartSec=1s

[Install][lc3] 

WantedBy=multi-user.target   //最小化安装或者桌面版/graohical.target

# systemctl daemon-reload //重载 systemctl 系统

# systemctl enable httpd.service  //将 httpd 服务设置为开机自启

以下两种方法都可查询开机是否启动:

# systemctl list-unit-files | grep httpd.service

# systemctl is-enabled httpd

1.2主要文件及目录

程序安装目录:/usr/local/httpd/

主配置文件:/usr/local/httpd/conf/httpd.conf 网页目录:/usr/local/httpd/htdocs/

服务脚本:/usr/local/httpd/bin/apachectl 主程序:/usr/local/httpd/bin/httpd

访问日志: /usr/local/httpd/logs/access_log

错误日志: /usr/local/httpd/logs/error_log

1.3配置服务器

修改主机名

# vim /etc/sysconfig/network

HOSTNAME=www.chengdu.com  //修改主机名,用于域名解析,可不更改在主配置文件中添加主机名:

# vim  /usr/local/httpd/conf/httpd.conf

ServerName www.chengdu.com

//添加此项检查配置文件是否正常:

# apachectl -t[lc4]    //提示 OK 则正常启动 HTTPD 服务:

apachectl -t Apache HTTP Server 的命令用于测试 Apache 配置文件的语法是否正确以及是否存在潜在的配置问题

# systemctl start httpd

查看运行的进程,有进程表示启动成功

# ps aux | grep httpd

修改默认显示网页

# vim /usr/local/httpd/htdocs/index.html

www.chengdu.com //加入此内容

客户机通过服务器 IP 地址进行访问: 服务器中查看客户机访问日志记录:

# tail /usr/local/httpd/logs/access_log

1.4 httpd.conf常用的全局配置参数

ServerRoot:服务目录

ServerAdmin: 管 理 员 邮 箱

User:运行服务的用户身份

Group:运行服务的组身份

ServerName:网站服务器的域名

DocumentRoot:网页文档的根目录

Listen:监听的 IP 地址、端口号

PidFile:保存 httpd 进程 PID 号的文件

DirectoryIndex:默认的索引页文件

AddDefaultCharset UTF-8 设置字符集常用的全局配置参数(续)  ErrorLog:错误日志文件的位置

CustomLog:访问日志文件的位置

LogLevel:记录日志的级别,默认为 warn

Timeout:网络连接超时,默认为 300 秒

KeepAlive:是否保持连接,可选 On 或 Off

MaxKeepAliveRequests:每次连接最多请求文件数

KeepAliveTimeout:保持连接状态时的超时时间

Include:需要包含进来的其他配置文件

二、Apache 应用

2.1客户机地址限制

Require all granted  //允许访问策略

Require all denied      //拒绝访问策略

Require local  //只允许本地访问

Require [not] host <主机名或域名列表>

Require [not] ip <ip 地址或网段列表>

举例 1:表示只禁止 IP 1.1 访问服务

<RequireAll>      //使用"not"需要用到此标签,将该段加入到项目中

Require not ip 192.168.1.1

Require all granted

</RequireAll>

举例 2:表示只允许 IP 1.0 网段和 2.0 网段访问服务,不需要使用 <RequireAll>标签

Require ip 192.168.1.0/24 192.168.2.0/24

被拒绝的主机连接服务器将会显示 403 错误

2.2 用户授权访问

认证就是客户端要给服务器出示一些自己的身份证明,来证明自己是谁!一旦服务器知道了客户端的身份,就可以判定客户端可以访问的事务和资源了。 在 HTTP 中,认证通常是通过提供用户名和密码来进行认证的。

http 服务支持两种认证方式:

摘要认证(需要模块功能支持,更加安全的方式传递验证信息)

基本认证:基于用户访问控制包括认证和授权,

创建用户认证数据文件

# cd /usr/local/httpd

# bin/htpasswd -c /usr/local/httpd/conf/.awspwd[lc5]  webadmin

//创建授权访问的用户账户文件

# bin/htpasswd /usr/local/httpd/conf/.awspwd webadmin1   //添加新用户时不需要-c 选项

bin/htpasswd:这是 htpasswd 命令的路径。htpasswd 是一个用于管理 Apache HTTP Server 的密码文件的命令。

-c:这是 htpasswd 命令的选项,用于创建新的密码文件。如果指定了 -c,则表示要创建一个新的密码文件。

/usr/local/httpd/conf/.awspwd:这是新创建的密码文件的路径。在这里,密码文件将存储在 /usr/local/httpd/conf/ 目录中,并命名为 .awspwd。

webadmin:这是要添加到密码文件的用户名。用户 "webadmin" 将具有对应的密码,以便进行身份验证。

  1. 添加用户授权配置

# vim /usr/local/httpd/conf/httpd.conf

<Directory "/usr/local/httpd/htdocs"> //在此行下添加

Authname "AAA"

AuthName "AAA":这个指令设置了身份验证领域的名称。在登录时,用户将看到一个提示,提示他们输入用户名和密码以访问资源。在这里,名称设置为 "AAA",您可以根据需要将其更改为适当的标识符。

Authtype Basic

AuthType Basic这个指令定义了身份验证的类型这里是基本身份验证(Basic Authentication)。基本身份验证是一种基本的用户名和密码验证方法

Authuserfile  /usr/local/httpd/conf/.awspwd

require valid-user      //valid-user:代表所有列表中的用户,若需要指定单个用户可修改为:require webadmin

注意:当设置了主机访问控制的同时配置了验证访问,主机访问控制生效。

#   Require all granted //配置了主机访问又配置了验证访问,因此需要关闭主机访问控制。

Authname "AAA" Authtype Basic

Authuserfile /usr/local/httpd/conf/.awspwd require valid-user

需求:

允许 192.168.1.254 直接访问,而其他人输入密码才能访问:

Require ip 192.168.1.253

Authname "AAA"

Authtype Basic

Authuserfile /usr/local/httpd/conf/.awspwd

require valid-user

需求 2:

拒绝一个地址访问而允许其他人认证访问:

2.3 构建虚拟 web 主机

能够让一台 web 服务器同时存在多个站点!

1.基于域名的虚拟主机 ****

通过两个域名访问到不同内容

1.安装配置 DNS 服务器用于域名解析

# yum install -y bind*

# mv /etc/named.conf /etc/named.conf.bak

# vim /etc/named.conf

options {

directory   "/var/named";

};

zone "chengdu.com" IN[lc6]  {

type master;

file "chengdu.com.zone";

};

zone "shanghai.com" IN {

type master;

file "shanghai.com.zone";

};

# vim /var/named/chengdu.com.zone

$TTL 600

@ IN SOA[lc7]   chengdu.com.   admin.chengdu.com[lc8] .(

  20170405

  1d  //刷新时间

  5d  //重试时间

  2D  //过期时间

   6h  //最小TTL

)

@ IN NS ns1.chengdu .com.

ns1  IN A  192.168.1.10 [lc9] 

www   IN A  192.168.1.10

# vim /var/named/shanghai.com.zone

$TTL 600

@     IN    SOA   shanghai.com. admin.shanghai.com.(

20170405

1H

5M

2D

6h

)

@ IN NS ns1.shanghai.com.

ns1  IN A  192.168.1.10

www  IN A  192.168.1.10

# systemctl restart named

2.准备虚拟主机网页文档

# mkdir /var/wwwchengdu  /var/wwwshanghai   //创建两台虚拟主机网页根目录

# echo "www.chengdu.com" > /var/wwwchengdu/index.html

//生成网页文件内容

# echo "www.shanghai.com" > /var/wwwshanghai/index.html

  1. 以独立的形式创建虚拟主机配置文件

# mv /usr/local/httpd/conf/extra/httpd-vhosts.conf[lc10] 

/usr/local/httpd/conf/extra/httpd-vhosts.conf.bak 

# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

我的c7.2在/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf

<VirtualHost 192.168.1.10:80>

DocumentRoot "/var/wwwchengdu"

ServerName www.chengdu.com

ErrorLog "logs/www.chengdu.com.error.log"

CustomLog "logs/www.chengdu.com.custom.log" common[lc11] 

</VirtualHost>

<VirtualHost 192.168.1.10:80>

DocumentRoot "/var/wwwshanghai"

ServerName www.shanghai.com

ErrorLog "logs/www.shanghai.com.error_log"

CustomLog "logs/www.shanghai.com.access_log" common

</VirtualHost>

注意:也可以将以上所有配置文件直接放在 httpd.conf 中设置虚拟主机时需要注意:

  1. 修改主配置文件,确定主配置文件没有访问限制拒绝策略
  2. 将 "/"区域设置为允许所有人访问:

<Directory /> //此区域中将拒绝所有改为允许所有

AllowOverride none[lc12] 

Require all granted //将拒绝改为允许

</Directory>

  1. 在主配置文件中加入引用虚拟主机配置文件项:

# vim /usr/local/httpd/conf/httpd.conf

Include conf/extra/httpd-vhosts.conf[lc13] 

# systemctl restart httpd

验证:访问 chengdu 域名能够看到 chengdu 内容   访问 shanghai 能够看到shanghai 内容

2.基于端口的虚拟主机

访问 www.chengdu.com 得到的网页信息:www.chengdu.com

访问 www.chengdu.com:8080得到的网页信息:www.shanghai.com

在原配置文件中将shanghai 的端口号改为 8080,在 httpd.conf 中添加监听端口 8080,重启访问服务即可

# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

找到 shanghai 配置区域

<VirtualHost 192.168.1.10:8080> //修改为 8080

DocumentRoot "/var/wwwshanghai"

ServerName www.chengdu.com   //域名改为 www.chengdu.com

ErrorLog "logs/www.shanghai.com.error_log"

CustomLog" logs/www.shanghai.com.access_log" common

# vim /usr/local/httpd/conf/httpd.conf

Listen 8080       //添加监听端口

# systemctl restart httpd //重启

服务验证:

www.chengdu.com   //能够访问到 chengdu 页面

www.chengdu.com:8080    //能够访问到 shanghai 页面

3.基于 IP 的虚拟主机

# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

<VirtualHost 192.168.1.11:80>   //将 shanghai.com 段修改 IP 为 11

DocumentRoot "/var/wwwshanghai"

ServerName www.shanghai.com

ErrorLog"logs/www.shanghai.com.error_log"

CustomLog"logs/www.chengdu.com.access_log" common

</VirtualHost>

开放 IP 加端口的监听

Listen 192.168.1.10:80

Listen 192.168.1.11:80

#Listen 192.168.1.10:8080 //禁用此项

修改 DNS 解析:

# vim /var/named/shanghai.com.zone

@

IN

SOA

shanghai.com.

admin.shanghai.com.(

20170405

1H

5M

2D

6h

)

@  IN NS ns1.shanghai.com.

ns1   IN A  192.168.1.11   //修改为 11

www   IN A  192.168.1.11   //修改为 11

# ifconfig ens33 192.168.1.11/24

# systemctl restart named

# systemctl restart httpd

注意:需要将虚拟机两张网卡都设置为同一个 vmnet 网卡,便于客户端访问验证验证:

通过域名 shanghai 能够看到 shanghai 内容

通过域名 chengdu 能够看到 chengdu 内容

通过 nslookup 也能够解析到 shanghai 域名的 IP 为 11,chengdu 的 IP 为 10,

直接通过 IP 192.168.1.10 能够访问到 chengdu 页面

直接通过 IP 192.168.1.11 能够访问到 shanghai


 [lc1][Unit] 部分定义了系统服务单元的描述和相关依赖关系:

Description=The Apache HTTP Server:描述了此服务的名称。

After=httpd.target:指定了此服务应该在 httpd.target 启动之后启动。

httpd.target 是 systemd 中用于表示 Apache HTTP Server 服务的一个目标单元(target unit)。在 systemd 中,目标单元是一种特殊的单元类型,它代表了一组相关的服务单元。httpd.target 用于管理与 Apache HTTP Server 相关的服务单元。

 [lc2][Service] 部分定义了服务的运行参数和行为:

Type=forking:指定服务以 fork 模式运行,通常用于以后台方式运行的进程。

PIDFile=/usr/local/httpd/logs/httpd.pid:指定了 Apache HTTP Server 进程的 PID 文件的路径。

ExecStart=/usr/local/bin/apachectl $OPTIONS:定义了启动服务时执行的命令。这里使用 apachectl 脚本来启动 Apache,$OPTIONS 变量包含了一些启动选项。

ExecReload=/bin/kill -HUP $MAINPID:定义了重新加载服务时执行的命令,通常用于重新加载配置。

KillMode=process:指定在终止服务时以进程为单位终止。

Restart=on-failure:指定在服务故障时重启。

RestartSec=1s:定义了重启服务的等待时间。

 [lc3][Install] 部分定义了服务的安装参数:

WantedBy=multi-user.target:指定了服务应该在 multi-user.target 启动时自动启用,这是通常用于多用户模式的目标。

 [lc4]

 [lc5].前缀的是个隐藏文件ls -a查看

 [lc6]·  IN" 是区域的类别,表示这是一个Internet类别的区域。

·  "type master;" 表示该域名区域是一个主区域,即该服务器是该域名区域的主服务器,负责管理该区域的资源记录。

·  "file "chengdu.com.zone";" 指定了与该域名区域关联的数据文件。在这种情况下,数据文件名为 "chengdu.com.zone",其中包含了该域名区域的资源记录信息。

 [lc7]Start of Authority(SOA)记录,用于标识特定域名区域的权威源

 [lc8]admin.chengdu.com.:这是指定了这个域名区域的权威DNS服务器的域名。

 20170405:这是序列号,表示了此区域文件的版本号。通常在每次更新区域文件时递增。

1d:这是刷新时间(Refresh),表示其他DNS服务器应该多久更新一次该区域的信息。

5d:这是重试时间(Retry),表示如果刷新失败,其他DNS服务器多久后应该重试。

2D:这是过期时间(Expire),表示其他DNS服务器在多久后应该停止使用此区域文件。

6h ):这是最小TTL(Time to Live),表示DNS记录在缓存中应该存储多久,这里是6小时。

 [lc9]NS:表示这是一个Name Server记录。

ns1.chengdu.com.:是权威DNS服务器的域名,它负责管理这个域名区域的DNS解析。

ns1:是主机名。

A:表示这是一个IPv4地址记录。

 [lc10]httpd.conf 是 Apache HTTP服务器的主要配置文件。

它包含了全局的服务器配置选项,如端口设置、主服务器的文档根目录、全局模块加载等。

httpd.conf 包含了所有虚拟主机(Virtual Host)配置的基本设置,这个文件对整个服务器的行为起着全局性的控制作用。

httpd-vhosts.conf 是一个可选的配置文件,用于定义虚拟主机的详细配置信息。

它通常包含了针对每个虚拟主机的配置,包括域名、文档根目录、日志文件等。

使用 httpd-vhosts.conf 可以轻松地设置多个虚拟主机,每个虚拟主机可以处理不同的域名或IP地址上的请求。

这个文件用于定义虚拟主机的特定行为和属性,以允许多个网站在同一台服务器上共存。

 [lc11]使用的是一个名为 "common" 的自定义日志格式。

"%h %l %u %t \"%r\" %>s %b"

每个符号的含义如下:

%h: 客户端的IP地址

%l: 客户端的标识符,通常是横杠 "-"

%u: 请求的用户标识符,通常也是横杠 "-"

%t: 请求的时间戳,通常在方括号内,例如 "[06/Sep/2023:12:34:56 +0000]"

\"%r\": 请求的第一行,包括HTTP方法、请求的页面路径和HTTP协议版本

%>s: 响应的HTTP状态码

%b: 响应的字节数(不包括HTTP标头)

 [lc12]AllowOverride none:这行配置表示禁用 .htaccess 文件中的任何覆盖规则。这通常是默认设置,确保不会使用任何在 .htaccess 文件中定义的自定义规则。

Require all granted:这行配置允许所有用户访问这个目录,将拒绝改为允许,从而允许任何用户访问 / 目录及其内容。

.htaccess 是一个特殊的配置文件,通常用于配置和控制 Apache HTTP 服务器在特定目录中的行为。

.htaccess 文件通常包含一系列的指令和规则,用于定义如何处理特定目录下的请求,包括重定向、身份验证、缓存控制、URL重写等。这使得网站管理员可以在不更改主服务器配置的情况下,针对特定目录或文件执行定制的操作。

 [lc13]是用于在 Apache HTTP 服务器配置中包含另一个配置文件 httpd-vhosts.conf 的指令。

具体来说,这行指令告诉 Apache 服务器去加载 httpd-vhosts.conf 文件中的虚拟主机配置信息。


http://www.niftyadmin.cn/n/5420566.html

相关文章

【NR 定位】3GPP NR Positioning 5G定位标准解读(七)- GNSS定位方法

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

寻找奇数(用异或来解决)

题解&#xff1a; 异或&#xff1a;二进制比特位相同则0&#xff0c; 不同则1. 两个相同的数字异或得到的是0&#xff0c; 基于这个思路&#xff0c;这道题对数组中的所有数据进行逐一异或就可以解决得到奇数次的数字&#xff0c;因为偶数次的数字都被异或成为0了&#xff0c…

docker常用操作-docker私有仓库的搭建(Harbor),并将本地镜像推送至远程仓库中。

1、docker-compose安装&#xff0c;下载docker-compose的最新版本 第一步&#xff1a;创建docker-compose空白存放文件vi /usr/local/bin/docker-compose 第二步&#xff1a;使用curl命令在线下载&#xff0c;并制定写入路径 curl -L "https://github.com/docker/compos…

Java设计模式:深入装饰器模式的三种写法(六)

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在软件设计中&#xff0c;装饰器模式是一种结构型设计模式&#xff0c;它允许用户在不改变对象结构的情况下&#xff0c;动态地给…

BK7231+字库+LCD显示

1、BK7231有2M flash&#xff0c;可以保存1个16*16汉字字库 2、驱动1个8位并口屏&#xff0c;将字库中的汉字中显示出来 一、将gb2312_80.bin打包到烧录镜像中。 1、bk7231u_rtt_sdk\OTAPackage\beken_packager中修改config.json文件&#xff1a; {"magic": "…

管理类联考-复试-管理类知识-其他常见词汇

文章目录 其他常见词汇营销4P、营销4C营销STP理论破窗效应价格歧视/区别定价定价策略——撇脂定价策略定价策略——渗透定价策略 心理账户机会成本看不见的手市场失灵马太效应鲶鱼效应禀赋效应&#xff08;马克杯实验&#xff09;羊群效应帕累托原则长尾理论 其他常见词汇 营销…

面试宝典-【redis】

目录 1.什么是缓存穿透 ? 怎么解决 ? 2.什么是布隆过滤器 3.什么是缓存击穿 ? 怎么解决 ? 4.什么是缓存雪崩 ? 怎么解决 ? 5.redis做为缓存&#xff0c;mysql数据如何与redis进行同步?(双写) 6.排他锁是如何保证读写、读读互斥的呢&#xff1f; 7.你听说过延…

Java websocket在SpringBoot中使用

Java websocket在SpringBoot中使用 导入坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>3.2.3</version> </dependency>配置websocket 新…