Web服务搭建 - Apache

  • Web服务器搭建
    • Web服务介绍
      • 服务器与浏览器利用HTTP协议进行交互的过程
      • 统一资源定位符URL
    • Apache服务器
    • 配置Apache服务
      • 搭建基础web服务
      • 建立虚拟目录
      • 建立基于用户认证的虚拟目录
      • 建立访问权限的虚拟目录
      • 配置个人主页功能
      • 配置基于不同端口的虚拟主机
      • 配置基于IP地址的虚拟主机

Web服务器搭建

Web服务介绍

服务器与浏览器利用HTTP协议进行交互的过程

  1. 浏览器确定web页面的URL
  2. 浏览器请求域名服务器解析的IP地址
  3. 浏览器向主机的80端口请求一个TCP链接
  4. 服务器对连接请求进行确认,建立连接的过程完成
  5. 浏览器发出请求页面报文
  6. 服务器以index.html页面的具体内容响应浏览器
  7. WWW服务器关闭TCP连接
  8. 浏览器将页面index.html的文本信息显示在屏幕上
    如果index.html页面包含图像等非文本信息,则浏览器需要为每个图像建立一个新的TCP连接,从服务器获得图像并显示

统一资源定位符URL

URL是对可以从因特网上得到的资源的位置和访问方法的一种简洁的表示。URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。即用户可以利用URL指明使用什么协议访问哪台服务器上的什么文件。
URL的格式如下:
<协议类型>://<主机>:<端口>/<路径>
协议类型:即URL的访问方式,常用的协议类型由超文本传输协议(HTTP)、文件传输协议(FTP)和新闻(NEWS)
端口和路径有时可以省略。当HTTP的端口是80,通常可以省略,如果使用非80端口,则需要指明端口号
例: http://www.fudan.edu.cn/student/index.html http://www.fudan.edu.cn:8080/student/index.html

Apache服务器

Apache来自"a patchy server"的读音,意思是充满补丁的服务器,经过多次修改,Apache已经成为世界上最流行的Web服务器软件之一
Apache的特点:简单、速度快、性能稳定,并可以作为代理服务器来使用
Apache的主要特征:

  • 可以运行在所有的计算机平台
  • 支持最新的HTTP协议
  • 支持虚拟主机
  • 简单而强有力的基于文件的配置
  • 支持通用网关接口CGI
  • 支持Java Servlets
  • 集成Perl脚本编程语言

配置Apache服务

搭建基础web服务

安装Apache软件包
准备工作:配置IP地址、配置本地yum源

yum -y install httpd
rpm -qa | grep httpd   #查看Apache版本

启动服务并设置开机自启

systemctl enable --now httpd

在web浏览器中输入http://ip地址,出现测试网页

利用HTML语言编写网页index.html,并存放在路径/var/www/html下

<!--编写在/var/www/html/index.html文件中 -->
<html>
<title>homepage</title>
<body><h2>This is my firse homepage</h2>
</body>
</html>

重启httpd服务

systemctl restart httpd

利用ip地址访问网站

使用域名访问网站
准备工作:配置DNS服务器,在DNS服务器中设置相应的记录,在此不再赘述。

# 修改DNS全局配置文件 named.conf
listen-on port 53 { any; };
allow-query     { any; };# 主配置文件 named.rfc1912.zones
zone "hz.com" IN {type master;file "hz.com.zone";allow-update { none; };
};# 创建正向解析区域文件 hz.com.zone
$TTL 1D
@       IN SOA  @ dns.lnjd.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      @A       127.0.0.1AAAA    ::1
dns     IN      A       192.168.176.139
www     IN      A       192.168.176.139  # 修改配置文件 /etc/resolv.conf
nameserver 192.168.176.139

重启DNS服务

systemctl restart named

使用域名www.hz.com访问网页


建立虚拟目录

虚拟目录是一个位于Apache服务器主目录之外的目录,它不包含在Apache服务器的主目录中,但从客户机看来,它与位于主目录的子目录是一样的。每个虚拟目录都有一个别名,客户端通过这个别名来访问虚拟目录

在Apache服务器的主配置文件httpd.conf中,通过Alias指令设置虚拟目录。默认情况下,该文件已经建立了/icons和/manual两个虚拟目录,它们对应的物理路径是/var/www/icons和/var/www/manual

创建物理目录和网页内容

mkdir -p /xuni
echo This is news site > /xuni/index.html
chmod 705 /xuni/index.html   # 使其它用户具有读和执行权限

配置主配置文件httpd.conf

# 添加语句 -- 在<ifModule dir_module>标签中添加,在任意位置添加也可以成功
# apache2.4版本配置
Alias /news "/xuni"
<Directory /xuni>Options AllAllowOverride NoneRequire all granted
</Directory># 如果是2.2版本
Alias /news "/xuni"
<Directory /xuni>Order allow,denyAllow from all
</Directory>

DirectoryIndex index.html index.php
表示只输入IP地址或域名,默认显示的页面,用空格间隔多个参数

重启httpd服务

systemctl restart httpd

在浏览器中输入http://www.hz.com/news访问虚拟目录


建立基于用户认证的虚拟目录

创建物理目录和网页内容

mkdir -p /authentication
echo This is authentication homepage > /authentication/index.html

配置主配置文件httpd.conf

# 添加虚拟目录
Alias /rz "/authentication"
<Directory "/authentication">Options Indexes          AllowOverride AuthconfigAuthType basicAuthName "Input user and password"AuthUserFile /var/www/html/htpasswdRequire valid-user
</Directory>
  • Options :设置特定目录中的服务器特性,参数Indexes表示允许目录浏览,当访问的目录中没有DirectoryIndex参数指定的网页文件时,会列出目录中的目录清单
  • AllowOverride:设置如何使用访问控制文件.htpasswd,该文件是用来配置相应目录的访问方法,如果设置为None,表示禁止使用所有指令,即忽略.htpasswd,如果设置为Authconfig,则表示开启认证、授权以及安全的相关指令;
  • AuthType :baisc为基本身份认证
  • AuthName:表示当浏览器弹出认证对话框时出现的提示信息
  • AuthUserFile:指定了用户密码文件
  • Require:设置允许访问虚拟目录的用户,valid-user表示该密码文件中所有用户都可以访问,如果只允许user1用户访问,可以设置为 Require User user1

生成认证文件

[root@localhost conf]# htpasswd -c /var/www/html/htpasswd user1
New password:
Re-type new password:
Adding password for user user1

参数 -c 表示新创建一个密码文件,再添加用户时就不需要加该参数了

重启httpd服务

systemctl restart httpd

测试
在浏览器中输入http://www.hz.com/rz访问虚拟目录,需要输入用户名和密码

输入正确的用户和密码后,成功访问网页


建立访问权限的虚拟目录

创建物理目录和网页内容

mkdir -p /power
echo This is power homepage > /power/index.html

配置主配置文件

# Apache2.4配置
# 允许所有访问请求,但拒绝来自特定IP或IP网段的访问请求
Alias /qx "/power"
<Directory /power>Options IndexesAllowOverride None<RequireAll>Require all granted   # Require all denied 拒绝所有访问请求Require not ip 192.168.176.154</RequireAll>
</Directory>
# 只允许特定IP或IP端的访问请求
Alias /qx "/power"
<Directory /power>Options IndexesAllowOverride NoneRequire ip 192.168.176.154 192.168.1
</Directory># Apache2.2配置
Alias /qx "/power"
<Directory /power>Options IndexesAllowOverride NoneOrder deny,allowDeny from 192.168.176.154
</Directory>

Apache2.4中开始使用mod_authz_host这个新的模块来进行访问控制和其他的授权检查。原来在Apache2.2版本下用以实现网站访问控制的Order,Allow,Deny指令需要替换为新的Require访问控制指令。

使用require指令时,需要在指令外添加标签对,否则重启Apache2.4加载规则时将出现错误:" negative Require directive has no effect in directive "。

在ip地址为192.168.176.154主机上使用浏览器访问虚拟目录,拒绝访问
(因为没有配置DNS服务,所以使用了ip访问虚拟目录)

在apache服务器(ip为192.168.176.139)上访问虚拟目录,成功访问


配置个人主页功能

创建用户和家目录

useradd user1   # 默认自动创建用户家目录/home/user1

修改配置文件 /etc/httpd/conf.d/userdir.conf

#UserDir disabled     #注释该命令,表示开启个人主页功能
UserDir public_html   指定个人主页的主目录为public_html

创建目录和网页内容

mkdir /home/user1/public_html
echo This is user1 homepage > /home/user1/public_html/index.html
chmod 705 /home/user1   # 使其它用户具有读和执行权限

重启httpd服务

systemctl restart httpd

在apache服务器(ip为192.168.176.139)上访问user1个人目录,成功访问


配置基于不同端口的虚拟主机

基于端口号的虚拟主机技术可以在一个IP地址上建立多个站点,只需要服务器有一个IP地址即可,所有的虚拟主机共享同一个IP,各虚拟主机之间通过不同的端口号进行区分。
在设置基于端口号的虚拟主机的配置时,需要利用Listen语句设置所监听的接口。

虚拟主机概述
虚拟主机是在网络服务器上划分出一定的磁盘空间供用户放置站点,应用组件等,提供必要的站点功能、数据存放和传输功能。虚拟主机,也叫网站空间

使用虚拟主机技术架设多个站点有三种方法,分别是基于端口的虚拟主机技术、基于IP地址的虚拟主机技术和基于名称的虚拟主机技术

修改主配置文件 httpd.conf

Listen 8080
Listen 8000
<VirtualHost 192.168.176.139:8000>DocumentRoot /var/www/port8000DirectoryIndex index.htmlServeradmin root@hz.comErrorLog logs/port8000-error_logCustomLog logs/port8000-access_log commom
</VirtualHost>
<VirtualHost 192.168.176.139:8080>DocumentRoot /var/www/port8080DirectoryIndex index.htmlServeradmin root@hz.comErrorLog logs/port8080-error_logCustomLog logs/port8080-access_log commom
</VirtualHost>

也可以在 /etc/httpd/conf.d目录下创建以 .conf结尾的文件,添加相应内容
系统在读取httpd.conf主配置文件后,会继续读取conf.d目录中以 .conf结尾的文件

创建目录和网页内容

mkdir -p /var/www/port8000
mkdir -p /var/www/port8080
echo This is site of port 8000 > /var/www/port8000/index.html
echo This is site of port 8080 > /var/www/port8080/index.html

重启httpd服务

systemctl restart httpd

访问网站
访问网站8000端口

访问网站8080端口


配置基于IP地址的虚拟主机

设置服务器的IP地址

方法一: 添加一张网卡
方法二: 使用ip addr add 192.168.176.140 dev ens160 临时添加一个IP地址

配置主配置文件 httpd.conf

Listen 80   # 如果配置在conf.d目录下,不要重复监听一个端口,否则报错
<VirtualHost 192.168.176.139>DocumentRoot /var/www/ip1DirectoryIndex index.htmlServeradmin root@hz.comErrorLog logs/port8000-error_logCustomLog logs/port8000-access_log commom
</VirtualHost>
<VirtualHost 192.168.176.140>DocumentRoot /var/www/ip2DirectoryIndex index.htmlServeradmin root@hz.comErrorLog logs/port8080-error_log
</VirtualHost>
~

创建目录和网页文件

mkdir -p /var/www/ip1
mkdir -p /var/www/ip2
echo This is site of ip1 > /var/www/ip1/index.html
echo This is site of ip2 > /var/www/ip2/index.html

重启httpd服务

systemctl restart httpd

访问站点
在浏览器中输入http://192.168.176.139访问站点

输入http://192.168.176.140访问站点


配置基于名称的虚拟主机
基于名称的虚拟主机技术可以在不同的域名上建立的多个站点,服务器只有一个IP地址即可,需要为服务器配置多个域名,各虚拟主机之间通过不同的域名进行区分

在DNS服务器中设置域名

$TTL 1D
@       IN SOA  @ dns.lnjd.com. (0       ; serial1D      ; refresh1H      ; retry1W      ; expire3H )    ; minimumNS      @A       127.0.0.1AAAA    ::1
dns     IN      A       192.168.176.139
www     IN      A       192.168.176.139
web1    IN      A       192.168.176.139
web2    IN      A       192.168.176.139

修改配置文件 /etc/resolv.conf

nameserver 192.168.176.139   #指定DNS服务器地址

配置主配置文件httpd.conf

NameVirtualHost 192.168.139:80
<VirtualHost 192.168.176.139>ServerName web1.hz.comDocumentRoot /var/www/web1DirectoryIndex index.htmlServeradmin root@hz.comErrorLog logs/port8000-error_logCustomLog logs/port8000-access_log commom
</VirtualHost>
<VirtualHost 192.168.176.139>ServerName web2.hz.comDocumentRoot /var/www/web2DirectoryIndex index.htmlServeradmin root@hz.comErrorLog logs/port8080-error_logCustomLog logs/port8080-access_log commom
</VirtualHost>
~

创建目录和网页内容

mkdir -p /var/www/web1
mkdir -p /var/www/web2
echo This is site of web1 > /var/www/web1/index.html
echo This is site of web2 > /var/www/web2/index.html

重启named服务和httpd服务

systemctl restart named
systemctl restart httpd

访问站点
在浏览器中输入http://web1.hz.com,访问第一个网站

输入http://web2.hz.com访问第二个网站

Web服务搭建 - Apache相关推荐

  1. 玩转CVM:Web服务搭建

    本教程将讲解如何依托腾讯云主机(CVM),搭建前沿的安全高性能Web服务.具体将包括:配置域名解析.SSL证书申请等Web服务的前置依赖,以及安装部署最新版Nginx Web服务器,并支持当前最新的T ...

  2. Linux web服务安装apache 思路 (源码编译,自己定义服务)

    1. 首先卸载系统里本身自带的httpd服务 2. 然后下载源码包 解压缩到src 源码包程序目录 3. 进入源码包(解压缩后的) 4. 配置 5. 编译 6. 安装 7.做成系统启动服务 直接解决依 ...

  3. Web服务之Apache的配置和应用

    Apache的配置和应用 构建虚拟web主机 基于域名的虚拟主机 为虚拟主机提供域名解析 方法一:部署DNs域名解析服务器来提供域名解析 方法二:在/etc/hosts 文件中临时配置域名与IP地址的 ...

  4. 【script】python3使用http.server搭建简易web服务

    ''' 更详细的web服务搭建可参考django: https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial01/ '''from http. ...

  5. python——Web服务开发(二)分布式缓存

    上一篇博客写了flask模块实现web服务搭建的基本方法以及简单的缓存功能,但是这种缓存随着服务重启便会丢失,也无法满足多个服务共享缓存的需求,因此,我们通过redis来实现web服务的分布式缓存. ...

  6. java web 教程_Java Web服务教程

    java web 教程 Welcome to the Java Web Services Tutorial. Here we will learn about web services, useful ...

  7. RHEL 5服务篇—使用Apache搭建Web服务(一)

    安装Apache服务以及了解相关的配置文件 在当今的互联网中常用的搭建web服务器的方法有两种,一种是IIS.一种是Apache.大家都知道IIS是微软的产品,只支持在windows系统上使用.那么我 ...

  8. Linux之apache服务搭建以及浅析web安全

    WEB服务器的架设,在linux有一个很著名的架构叫lamp:linux+apache+mysql+php,就知道apache的分量了.   在搭建apache服务钱需要做DNS服务器 DNS的搭建h ...

  9. Docker安装Apache与运行简单的web服务——httpd helloworld

    Docker运行简单的web服务--httpd helloworld目录[阅读时间:约5分钟] 一.Docker简介 二.Docker的安装与配置[CentOS环境] 三.Docker运行简单的web ...

最新文章

  1. Android 清单文件 详解
  2. Java™ 教程(Set接口)
  3. Java多线程知识小抄集(一)
  4. 关于Linux线程的线程栈以及TLS
  5. 【嵌入式工程师面试高频问题】你知道SPI吗
  6. sde在DBMS中的存储表结构
  7. css,html走的坑:(1.2)
  8. 模拟新浪新闻在线聊天功能
  9. Swoole 结合TP5创建http服务
  10. windows黑客编程系列(二):DLL延迟加载和资源释放
  11. mysql修复表命令_mysql命令修复数据库表
  12. Java支付宝第三方登陆开发过程
  13. 超酷HTML5 3D动画精选
  14. 基于5g的交通运输_一种基于5G的智慧交通基础服务平台
  15. flash player 11.2 64位 linux,Flash Player 11.2新版发布
  16. python简易版爬虫
  17. opencv-python使用cv2.resize()函数批量放大图片
  18. 致初级软件开发人员并自勉
  19. 线程,进程,线程安全的理解
  20. 4、Arduino_esp32 ADC使用

热门文章

  1. rabbitmq报错Failed to start RabbitMQ broker解决
  2. selenium基础教程_弹性Selenium基础设施
  3. 函数的驻点一定是极值点对吗?原因是什么?
  4. 企业中堡垒机兼跳板机使用谷歌动态验证构建实战-蔡超-专题视频课程
  5. 认识计算机活动记录,信息技术兴趣小组活动记录
  6. 锁相环工作原理,比如我们8MHZ晶振如何让MCU工作在48MHZ或者72MHZ呢
  7. 看着他起高楼,看着他宴宾客,看着他楼塌了……
  8. 关于人工智能或者数据科学,学生应该知道什么
  9. iText+freemarker 生成PDF 使用ftl模板
  10. php如何启动内置web服务器