CentOS 7 apache服务与虚拟主机

Apache 网站服务基础

Apache简介

“Apache HTTP Server”是开源软件项目的杰出代表,它基于标准的 HTTP 网络协议提供网页浏览服务,在 Web 服务器领域中长期保持着超过半数的份额。Apache 服务器可以运行在Linux、UNIX、Windows 等多种操作系统平台中

Apache 的主要特点

Apache 服务器在功能、性能和安全性等方面的表现都是比较突出的,可以较好地满足Web 服务器用户的应用需求。其主要特点包括以下几个方面。

  • 开放源代码:这是 Apache 服务器的重要特性之一,也是其他特性的基础。Apache 服务程序由全世界的众多开发者共同维护,并且任何人都可以自由使用,这充分体现了开源软件的精神。
  • 跨平台应用:这个特性得益于Apache 的源代码开放。Apache 服务器可以运行在绝大多数软硬件平台上,所有 UNIX 操作系统都可以运行 Apache 服务器,甚至Apache 服务器可以良好地运行在大多数Windows 系统平台中。Apache 服务器的跨平台特性使其具有被广泛应用的条件。
  • 支持各种Web 编程语言:Apache 服务器可支持的网页编程语言包括 Perl、PHP、Python、Java 等,甚至微软的ASP 技术也可以在Apache 服务器中使用。支持各种常用的Web 编程语言使Apache 具有更广泛的应用领域。
  • 模块化设计:Apache 并没有将所有的功能集中在单一的服务程序内部,而是尽可能地通过标准的模块实现专有的功能,这为Apache 服务器带来了良好的扩展性。其他软件开发商可以编写标准的模块程序,从而添加 Apache 本身并不具有的其他功能。
  • 运行非常稳定:Apache 服务器可用于构建具有大负载访问量的Web 站点,很多知名的企业网站都使用Apache 作为Web 服务软件。
  • 良好的安全性:Apache 服务器具有相对较好的安全性,这是开源软件共同具有的特性。并且,Apache 的维护团队会及时对已发现的漏洞提供修补程序,为 Apache 的所有使用者提供尽可能安全的服务器程序

apache网站服务实验

实验设备

虚拟机主机名IP地址
CentOS7apache192.168.78.129
CentOS7桌面版client192.168.78.130

基础环境

关闭防火墙

systemctl stop firewalld    //关闭防火墙
systemctl disable firewalld    //禁止开机自启动

关闭selinux

vi /etc/selinux/config    //selinux的配置文件

#内容如下
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled    //将SELINUX改为disabled

配置静态IP

vi /etc/sysconfig/network-scripts/ifcfg-ens33    //ens33网卡的配置文件
 
#内容如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"    //将获取IP方式改为静态static获取
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="2ce64331-c359-4e02-8297-4b279599dd47"
DEVICE="ens33"
ONBOOT="yes"
#添加网络信息
IPADDR="192.168.78.129"    //IP地址
NETMASK="255.255.255.0"    //子网掩码
GATEWAY="192.168.78.2"    //网关
 
#重启服务
systemctl restart network

修改主机名称

#CentOS7
hostnamectl set-hostname apache    //修改主机名称为apache
#CentOS7桌面版
hostnamectl set-hostname client   //修改主机名称为client

yum安装源代码编译安装的依赖

yum -y install gcc gcc-* make

安装httpd服务

在配置 Apache 网站服务之前,需要正确安装好 httpd 服务器软件。httpd 服务器的安装可以选用RPM 安装、源码编译安装这两种方式,前者相对比较简单、快速,但是在功能上存在一定的局限性。在实际的生产环境中,使用源码编译安装的方式要更加普遍

安装httpd依赖

yum -y install apr-util-devel pcre-devel zlib-devel

下载httpd服务

yum -y install wget
#将httpd下载到root下
wget  https://archive.apache.org/dist/httpd/httpd-2.4.25.tar.gz -P /root/

解压httpd安装包

#软件一般解压在/usr/src/,所以我们也解压到/usr/src目录下
tar -zxf /root/httpd-2.4.25.tar.gz -C /usr/src/

配置httpd

#--prefix:指定将 httpd 服务程序安装到哪个目录下,如/usr/local/httpd
#--enable-so:启用动态加载模块支持,使 httpd 具备进一步扩展功能的能力。
#--enable-rewrite:启用网页地址重写功能,用于网站优化及目录迁移维护。
#--enable-charset-lite:启用字符集支持,以便支持使用各种字符集编码的网页。
#--enable-cgi:启用CGI 脚本程序支持,便于扩展网站的应用访问能力。

#进入解压后目录
cd /usr/src/httpd-2.4.25/
#配置
./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

#配置完成之后可以使用echo $?验证以下是否成功,返回0表示代码执行成功

编译httpd和编译安装

make && make install

确认安装结果

ls /usr/local/httpd/
bin  build  cgi-bin  conf  error  htdocs  icons  include  logs  man  manual  modules
安装后目录
  1. bin: 通常包含可执行文件,对于Apache来说,这里可能包含启动、停止和管理Apache服务器的脚本或程序。
  2. build: 这个目录可能包含编译Apache或相关模块时使用的源代码、构建脚本或临时文件。不过,在标准安装后,这个目录可能不存在或为空,因为它主要用于开发者或自定义构建过程中。
  3. cgi-bin: 这个目录用于存放CGI(Common Gateway Interface)脚本。CGI是一种标准,允许Web服务器执行外部程序并将输出发送给浏览器。这个目录通常包含由用户创建的、用于处理Web表单或执行其他动态功能的脚本。
  4. conf: 包含Apache的配置文件,如httpd.conf(或类似命名的文件),这是Apache的主要配置文件,用于设置服务器参数、模块加载、虚拟主机等。
  5. error: 可能包含用于自定义错误页面的HTML文件。当Apache遇到错误(如404 Not Found)时,可以从这里提供友好的错误消息。
  6. htdocs: 这是Apache的默认文档根目录(尽管可以通过配置文件更改)。网站的文件(如HTML、图片、CSS、JavaScript等)应该放在这里,以便它们可以通过Web浏览器访问。
  7. icons: 包含用于Web页面上的图标文件,如目录图标、文件类型图标等。这些图标通常用于美化Web界面。
  8. include: 可能包含一些被主配置文件httpd.conf或其他配置文件引用的额外配置文件或模块定义文件。
  9. logs: 包含Apache的日志文件,如访问日志(记录所有对服务器的请求)和错误日志(记录服务器运行时的错误和警告)。
  10. man: 包含Apache和相关工具的手册页(man pages)。手册页是Unix和类Unix系统中用于提供命令或程序详细说明的文档。
  11. manual: 这个目录可能包含Apache的详细文档或用户手册的HTML版本,对于理解Apache的配置和功能非常有用。
  12. modules: 包含Apache的模块文件。Apache模块是扩展Apache服务器功能的插件,可以用于添加新的功能,如支持不同的编程语言(如PHP、Python)或提供安全功能。

 优化执行路径

通过源码编译安装的 httpd 服务,程序路径并不在系统默认的搜索路径中,为了使该服务在使用时更加方便,可以为相关程序添加符号链接

这样,在执行相关命令时就不用输入冗长的路径了。例如,当执行“httpd-v”命令(用于查看程序版本)时,即相当于执行“/usr/local/httpd/bin/httpd-v”命令

#使用软连接将httpd程序路径软连接到系统默认的程序路径下
ln -s /usr/local/httpd/bin/* /usr/local/bin

#
httpd-v
Server version: Apache/2.4.25 (Unix) Server built:	Jan 10 2024 13:25:57

开启关闭服务

apachectl 开启服务
httpd 开启服务
#开启服务后可能会报一个错误信息
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::c055:2fc0:ea60:20e5. Set the 'ServerName' directive globally to suppress this message
这个错误消息是由 Apache HTTP 服务器(httpd)发出的,表明它无法自动确定服务器的完全限定域名(FQDN)
可以进入配置文件 vim /usr/local/httpd/conf/httpd.conf 将大约在201行左右的ServerName www.example.com:80取消注释改成自己的域名,不影响做实验

apachectl stop 关闭服务

添加httpd系统服务

在/lib/systemd/system/目录下,建立一个以.service 结尾的单元(unit)配置文件, 用于控制由Systemd 管理或监控的httpd 服务

cat > /lib/systemd/system/httpd.service << 'EOF'
[Unit]
Description=The Apache HTTP Server
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/httpd/logs/httpd.pid
ExecStart= /usr/local/bin/apachectl $OPTIONS
ExecrReload= /bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
EOF

#执行完成之后便可以使用
systemctl start httpd 开启服务
systemctl stop httpd 关闭服务等

如果需要在一台服务器httpd服务部署多个网站可以使用httpd的web虚拟主机服务

httpd虚拟web主机

在同一台服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机

基于域名的虚拟主机
1、首先需要向 DNS 服务提供商注册各虚拟 Web 站点的域名

以便当访问其中任何一个虚拟Web 站点时,最终访问的都是同一个 IP 地址——实际支撑所有虚拟Web 站点的服务器的IP 地址。

2、为虚拟主机准备网页文档

        创建网站根目录,网页文档(这里以需要部署两个网站为例)

mkdir -p /var/www/html/sdgycom 创建网站根目录,可以在根目录里面添加网页文档

mkdir -p /var/www/html/bookcom 创建网站根目录,可以在根目录里面添加网页文档
3、添加虚拟主机配置 虚拟主机区域:

使用<VirtualHost监听地址>……</VirtualHost>区域配置,为每一个虚拟 Web 主机建立独立的配置内容。其中至少应包括虚拟主机的网站名称、网页根目录的配置项;其他(如管理邮箱、访问日志等)配置项可根据实际需要添加。

目录权限:使用<Directory目录位置>……</Directory>区域配置,为每一个虚拟Web 主机的网站目录设置访问权限,如允许任何人访问。目录访问可以继承其父目录的授权许可,因此可以采取直接为父文件夹授权访问权限的方法来简化配置。 当虚拟 Web 主机的数量较多时,建议使用独立的虚拟主机配置文件,然后在httpd.conf文件中通过 Include 加载这些配置。这样可以将对 httpd.conf 文件的改动减至最少,更方便配置内容的维护

#创建独立的配置文件
vi /usr/local/httpd/conf/extra/httpd-vhosts.conf

#内容如下
#设置 sdgy 虚拟站点区域
<VirtualHost *:80>
#网站根目录
DocumentRoot "/var/www/html/sdgycom" 
#网站域名
ServerName www.sdgy.com
#日志文件
ErrorLog "logs/www.ggg.com.error_log"
CustomLog "logs/www.ggg.com.access_log" common
#设置目录访问权限Require all granted
<Directory "/var/www/html">	
</Directory>
</VirtualHost>

#设置 ggg 虚拟站点区域
<VirtualHost *:80>
#网站根目录
DocumentRoot "/var/www/html/gggcom" 
#网站域名
ServerName www.ggg.com
#日志文件
ErrorLog "logs/www.ggg.com.error_log"
CustomLog "logs/www.ggg.com.access_log" common
#设置目录访问权限Require all granted
<Directory "/var/www/html">
</Directory>
</VirtualHost>
4、加载独立配置文件 
vim /usr/local/httpd/conf/httpd.conf

…… //省略部分内容
#加载独立的配置文件
#在大概484行左右
Include conf/extra/httpd-vhosts.conf

#重启服务使配置生效
systemctl restart httpd
基于端口的虚拟主机

构建基于 IP 地址的虚拟主机的过程与基于域名的虚拟主机类似,也需要先提供域名解析、准备网页文档,再调整 httpd 配置、重启 httpd 服务,然后在客户机中访问虚拟主机进行测试。其中最主要的区别是,不同类型的虚拟主机在httpd.conf 文件中的配置内容略有不同

对于基于 IP 地址的虚拟主机,每个虚拟 Web 主机各自使用不同的 IP 地址,但是都通过同一台 httpd 服务器对外提供 Web 浏览服务。正因为如此,用来支撑这些虚拟Web 主机的服务器也就需要有大量的网络接口,这在实际应用中往往不太方便,所以基于IP 地址的虚拟主机并不像基于域名虚拟主机那样应用广泛

配置文件
vi /usr/local/httpd/conf/extra/httpd-vhosts.conf

#内容如下
#设置 sdgy 虚拟站点区域IP虚拟主机
<VirtualHost 192.168.78.129:80>
#网站根目录
DocumentRoot "/var/www/html/sdgycom" 
#网站域名
ServerName www.sdgy.com
#日志文件
ErrorLog "logs/www.ggg.com.error_log"
CustomLog "logs/www.ggg.com.access_log" common
#设置目录访问权限Require all granted
<Directory "/var/www/html">	
</Directory>
</VirtualHost>

#设置 ggg 虚拟站点区域IP虚拟主机
<VirtualHost 192.168.78.111:80>
#网站根目录
DocumentRoot "/var/www/html/gggcom" 
#网站域名
ServerName www.ggg.com
#日志文件
ErrorLog "logs/www.ggg.com.error_log"
CustomLog "logs/www.ggg.com.access_log" common
#设置目录访问权限Require all granted
<Directory "/var/www/html">
</Directory>
</VirtualHost>
基于IP地址的虚拟主机

构建基于端口的虚拟主机的过程与基于域名的虚拟主机类似,也需要先提供域名解析、准备网页文档,再调整 httpd 配置、重启 httpd 服务,然后在客户机中访问虚拟主机进行测试。其中最主要的区别是,不同类型的虚拟主机在httpd.conf 文件中的配置内容略有不同

基于端口的虚拟主机通常只用于同一个 Web 站点,其针对的网站名称、IP 地址往往是相同的,但通过不同的 TCP 端口来提供访问不同网页内容的服务入口。在浏览器中访问非 80 端口的 Web 服务器时, 需要明确指出服务器的端口号,

配置基于端口的虚拟 Web 主机时,要通过多个 Listen 配置项来指定要监听的TCP端口号,每个虚拟Web 主机的VirtualHost 配置中应同时指定 IP 地址和端口号

配置文件
vi /usr/local/httpd/conf/extra/httpd-vhosts.conf

#内容如下
#设置 sdgy 虚拟站点区域端口虚拟主机
<VirtualHost 192.168.78.129:81>
#网站根目录
DocumentRoot "/var/www/html/sdgycom" 
#网站域名
ServerName www.sdgy.com
#日志文件
ErrorLog "logs/www.ggg.com.error_log"
CustomLog "logs/www.ggg.com.access_log" common
#设置目录访问权限Require all granted
<Directory "/var/www/html">	
</Directory>
</VirtualHost>

#设置 ggg 虚拟站点区域端口虚拟主机
<VirtualHost 192.168.78.129:82>
#网站根目录
DocumentRoot "/var/www/html/gggcom" 
#网站域名
ServerName www.ggg.com
#日志文件
ErrorLog "logs/www.ggg.com.error_log"
CustomLog "logs/www.ggg.com.access_log" common
#设置目录访问权限Require all granted
<Directory "/var/www/html">
</Directory>
</VirtualHost>


添加监听的端口
vi /usr/local/httpd/conf/httpd.conf
#大约52行左右
Listen 81
Listen 82

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值