vlambda博客
学习文章列表

U015-【Ubuntu】WEB服务器的安装部署

学习目标

  • 了解WEB服务的工作原理

  • 掌握WEB服务的相关参数

  • 掌握WEB客户端的工具的用法

  • 掌握WEB服务的安装部署方法

一、服务名称及功能

1、Web服务概述

  • 相比于传统应用程序,Web应用程序不需要安装,只需要一个小小的Web浏览器,您便可以畅享各种各样的应用。这个理念相比于传统应用程序简直是一个革命性的进步。因为您将省去了安装、升级等等的烦恼,只需要一个网址,您便可以方便的享受基于Web的应用带来的便利。

  • Web服务器也称为WWW服务器,主要功能是提供网上信息浏览服务。

  • WWW代表万维网,WWW是Internet的多媒体信息查询工具。起源于1989年3月,由欧洲量子物理实验室CERN(the European Laboratory for Particle Physics)发展出来的主从结构分布式超媒体系统。通过万维网,人们只要使用简单的方法,就可以很迅速、方便取得丰富的信息资料。

  • 目前的常用的WEB服务器有以下几种

    • Apache

    • Nginx

    • Tomcat

    • Microsoft IIS

2、HTTP协议

  • 超文本传输协议(HTTP,Hypertext Tranfer Protocol)是用来发布和接收HTML页面的网络协议。

  • 所谓超文本(Hypertext)是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。

  • 超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。

  • 超文本的格式有很多,目前最常使用的是超文本标记语言(HTML,Hypertext Markup Language)。

3、HTTPS协议

(1)客户端/服务端

  • 所谓客户端,通常是指我们的浏览器,比如谷歌浏览器、火狐浏览器、IE等,浏览器安装在客户使用的电脑上,所以,在描述http时,客户端通常也代指那些安装了浏览器的电脑。

  • 服务端,通常是指那些安装了web服务软件的计算机,如httpd apache,nginx,lighttpd,这些服务端的计算机被称为服务器。

  • 当我们从客户端到服务端拉取文件时,这些服务器就会根据你的请求命令给你返回你所需要的资源。而这些资源在传输过程中都会以静态的html格式文件传输,同时它的传输方式是明文的。这样的传输方式就会使你的一些重要信息被一些有心人截取下来,所以基于http的传输方式并不是安全的。这就使HTTPS得以出现。

(2)HTTPS

  • HTTPS(全称:httpover ssl,Hyper Text Transfer Protocol over Secure Socket Layer),HTTPS简单来说就是http+ssl,基于安全套接字层的超文本传输协议。

  • 它是以安全为目标的HTTP通道,简单讲就是HTTP的安全版。即在HTTP下加入了SSL子层,HTTPS的安全基础是SSL。SSL会使用各种对称加密算法、非对称加密算法来加密传送数据。

(3)HTTP与HTTPS

  • HTTP与HTTPS区别就是在于https这个多出来的s。SSL及其继任者传输层安全是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

  • 其他的区别还包括http默认端口是80,而https是443。

4、Apache

  • Apache是较早之前比较流行的一种开放源码的WEB服务器软件。

  • 因其具有良好的跨平台和安全特性,几乎是主流UNIX、Linux和BSD系统(如FreeBSD)选用的常用WEB服务器软件。

  • 与微软公司的IIS(Internet Information Server)相比,它具有开放源代码的特点。

  • 与Linux系统,PHP动态网页实现技术,以及MySQL数据库结合,构成了著名LAMP组合,是构建低成本Web服务器的首选平台。

  • Apache服务器具有下列功能特性

    • 简单、速度快、性能稳定、可配置。

    • 静态与动态内容支持。

    • 提供功能模块支持。

    • 支持SSL和虚拟主机。

    • 日志完整,可定义日志格式。

    • 支持个人网站功能。

    • 支持网站认证功能。

  • 官方站点:https://apache.org/

5、Nginx

  • Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。

  • Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

  • 因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。

  • 其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

  • 中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

  • 官方站点:https://nginx.org/

6、Tomcat

  • Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。

  • 由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。

  • 因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

  • Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。

  • 对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

  • 当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。

  • 另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。

  • 不过,Tomcat处理静态HTML的能力不如Apache服务器。Tomcat最新版本为10.0.5。

  • 官方站点:https://tomcat.apache.org/

7、Microsoft IIS

  • 互联网信息服务(英语:Internet Information Services,简称IIS),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。

二、服务工作原理

1、HTTP协议的工作过程

  • HTTP协议是基于浏览器/服务器(B/S,Browser/Server)模式的。HTTP协议的工作过程如下:

  • 步骤1:Web浏览器使用Get命令或Post命令向服务器发出Web请求。步骤2:服务器接收到Web请求后发送应答信息并在Web浏览器和服务器之间建立连接。步骤3:Web服务器查找客户端所需文档,如果服务器查找到所请求的文档,则将该文档传给Web浏览器。否则,如果文档不存在就发送一个错误提示文档给Web浏览器。步骤4:Web浏览器接收到文档后解释并显示它。步骤5:结束浏览,断开与Web服务器的连接。

2、HTTPS协议的工作过程

三、服务参数

1、服务软件包

  • apache2

2、服务进程

  • /usr/sbin/apache2

3、服务管理脚本

  • /lib/systemd/system/apache2.service

4、服务端口

  • 默认:TCP port=80

5、配置文件

 /etc/apache2/ 
 ├── apache2.conf
 ├── conf-available
 │   ├── charset.conf
 │   ├── localized-error-pages.conf
 │   ├── other-vhosts-access-log.conf
 │   ├── security.conf
 │   └── serve-cgi-bin.conf
 ├── conf-enabled
 │   ├── charset.conf -> ../conf-available/charset.conf
 │   ├── localized-error-pages.conf -> ../conf-available/localized-error-pages.conf
 │   ├── other-vhosts-access-log.conf -> ../conf-available/other-vhosts-access-log.conf
 │   ├── security.conf -> ../conf-available/security.conf
 │   └── serve-cgi-bin.conf -> ../conf-available/serve-cgi-bin.conf
 ├── envvars
 ├── magic
 ├── mods-available
 │   ├── access_compat.load
 │   ├── actions.conf
 │   ├── actions.load
 │   ├── alias.conf
 │   ├── alias.load
 │   ├── allowmethods.load
 │   ├── asis.load
 │   ├── auth_basic.load
 │   ├── auth_digest.load
 │   ├── auth_form.load
 │   ├── authn_anon.load
 │   ├── authn_core.load
 │   ├── authn_dbd.load
 │   ├── authn_dbm.load
 │   ├── authn_file.load
 │   ├── authn_socache.load
 │   ├── authnz_fcgi.load
 │   ├── authnz_ldap.load
 │   ├── authz_core.load
 │   ├── authz_dbd.load
 │   ├── authz_dbm.load
 │   ├── authz_groupfile.load
 │   ├── authz_host.load
 │   ├── authz_owner.load
 │   ├── authz_user.load
 │   ├── autoindex.conf
 │   ├── autoindex.load
 │   ├── buffer.load
 │   ├── cache_disk.conf
 │   ├── cache_disk.load
 │   ├── cache.load
 │   ├── cache_socache.load
 │   ├── cern_meta.load
 │   ├── cgid.conf
 │   ├── cgid.load
 │   ├── cgi.load
 │   ├── charset_lite.load
 │   ├── data.load
 │   ├── dav_fs.conf
 │   ├── dav_fs.load
 │   ├── dav.load
 │   ├── dav_lock.load
 │   ├── dbd.load
 │   ├── deflate.conf
 │   ├── deflate.load
 │   ├── dialup.load
 │   ├── dir.conf
 │   ├── dir.load
 │   ├── dump_io.load
 │   ├── echo.load
 │   ├── env.load
 │   ├── expires.load
 │   ├── ext_filter.load
 │   ├── file_cache.load
 │   ├── filter.load
 │   ├── headers.load
 │   ├── heartbeat.load
 │   ├── heartmonitor.load
 │   ├── http2.load
 │   ├── ident.load
 │   ├── imagemap.load
 │   ├── include.load
 │   ├── info.conf
 │   ├── info.load
 │   ├── lbmethod_bybusyness.load
 │   ├── lbmethod_byrequests.load
 │   ├── lbmethod_bytraffic.load
 │   ├── lbmethod_heartbeat.load
 │   ├── ldap.conf
 │   ├── ldap.load
 │   ├── log_debug.load
 │   ├── log_forensic.load
 │   ├── lua.load
 │   ├── macro.load
 │   ├── mime.conf
 │   ├── mime.load
 │   ├── mime_magic.conf
 │   ├── mime_magic.load
 │   ├── mpm_event.conf
 │   ├── mpm_event.load
 │   ├── mpm_prefork.conf
 │   ├── mpm_prefork.load
 │   ├── mpm_worker.conf
 │   ├── mpm_worker.load
 │   ├── negotiation.conf
 │   ├── negotiation.load
 │   ├── proxy_ajp.load
 │   ├── proxy_balancer.conf
 │   ├── proxy_balancer.load
 │   ├── proxy.conf
 │   ├── proxy_connect.load
 │   ├── proxy_express.load
 │   ├── proxy_fcgi.load
 │   ├── proxy_fdpass.load
 │   ├── proxy_ftp.conf
 │   ├── proxy_ftp.load
 │   ├── proxy_hcheck.load
 │   ├── proxy_html.conf
 │   ├── proxy_html.load
 │   ├── proxy_http2.load
 │   ├── proxy_http.load
 │   ├── proxy.load
 │   ├── proxy_scgi.load
 │   ├── proxy_wstunnel.load
 │   ├── ratelimit.load
 │   ├── reflector.load
 │   ├── remoteip.load
 │   ├── reqtimeout.conf
 │   ├── reqtimeout.load
 │   ├── request.load
 │   ├── rewrite.load
 │   ├── sed.load
 │   ├── session_cookie.load
 │   ├── session_crypto.load
 │   ├── session_dbd.load
 │   ├── session.load
 │   ├── setenvif.conf
 │   ├── setenvif.load
 │   ├── slotmem_plain.load
 │   ├── slotmem_shm.load
 │   ├── socache_dbm.load
 │   ├── socache_memcache.load
 │   ├── socache_shmcb.load
 │   ├── speling.load
 │   ├── ssl.conf
 │   ├── ssl.load
 │   ├── status.conf
 │   ├── status.load
 │   ├── substitute.load
 │   ├── suexec.load
 │   ├── unique_id.load
 │   ├── userdir.conf
 │   ├── userdir.load
 │   ├── usertrack.load
 │   ├── vhost_alias.load
 │   └── xml2enc.load
 ├── mods-enabled
 │   ├── access_compat.load -> ../mods-available/access_compat.load
 │   ├── alias.conf -> ../mods-available/alias.conf
 │   ├── alias.load -> ../mods-available/alias.load
 │   ├── auth_basic.load -> ../mods-available/auth_basic.load
 │   ├── authn_core.load -> ../mods-available/authn_core.load
 │   ├── authn_file.load -> ../mods-available/authn_file.load
 │   ├── authz_core.load -> ../mods-available/authz_core.load
 │   ├── authz_host.load -> ../mods-available/authz_host.load
 │   ├── authz_user.load -> ../mods-available/authz_user.load
 │   ├── autoindex.conf -> ../mods-available/autoindex.conf
 │   ├── autoindex.load -> ../mods-available/autoindex.load
 │   ├── deflate.conf -> ../mods-available/deflate.conf
 │   ├── deflate.load -> ../mods-available/deflate.load
 │   ├── dir.conf -> ../mods-available/dir.conf
 │   ├── dir.load -> ../mods-available/dir.load
 │   ├── env.load -> ../mods-available/env.load
 │   ├── filter.load -> ../mods-available/filter.load
 │   ├── mime.conf -> ../mods-available/mime.conf
 │   ├── mime.load -> ../mods-available/mime.load
 │   ├── mpm_event.conf -> ../mods-available/mpm_event.conf
 │   ├── mpm_event.load -> ../mods-available/mpm_event.load
 │   ├── negotiation.conf -> ../mods-available/negotiation.conf
 │   ├── negotiation.load -> ../mods-available/negotiation.load
 │   ├── reqtimeout.conf -> ../mods-available/reqtimeout.conf
 │   ├── reqtimeout.load -> ../mods-available/reqtimeout.load
 │   ├── setenvif.conf -> ../mods-available/setenvif.conf
 │   ├── setenvif.load -> ../mods-available/setenvif.load
 │   ├── status.conf -> ../mods-available/status.conf
 │   └── status.load -> ../mods-available/status.load
 ├── ports.conf
 ├── sites-available
 │   ├── 000-default.conf
 │   └── default-ssl.conf
 └── sites-enabled
    └── 000-default.conf -> ../sites-available/000-default.conf

四、客户端工具

1、Windows客户端

图标 浏览器 介绍

U015-【Ubuntu】WEB服务器的安装部署

谷歌 浏览器 谷歌浏览器是一款快速、安全且免费的网络浏览器,能很好地满足新型网站对浏览器的要求。Google Chrome的特点是简洁、快速。Google Chrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。此外,Google Chrome基于更强大的JavaScript V8引擎,这是当前Web浏览器所无法实现的。

U015-【Ubuntu】WEB服务器的安装部署

火狐 浏览器 火狐浏览器(Firefox)是一个自由的,开放源码的浏览器。火狐浏览器(Firefox)使用开放源代码的网页排版引擎Gecko,Gecko 能够让浏览器尽可能按标准来显示网页内容。火狐浏览器(Firefox)适用于Windows,Linux和MacOS X平台。火狐浏览器(Firefox)采取了小而精的核心,并允许用户根据个人需要去添加各种扩展插件来完成更多的,更个性化的功能。

U015-【Ubuntu】WEB服务器的安装部署

Microsoft Edge Microsoft Edge(简称ME浏览器)是由微软开发的基于 Chromium 开源项目及其他 开源软件的网页浏览器。

360极速 浏览器 360极速浏览器是一款极速、安全的无缝双核浏览器。它基于Chromium开源项目,具有闪电般的浏览速度、完备的安全特性及海量丰富的实用工具扩展。它继承了Chromium开源项目超级精简的页面和创新布局,并创新性地融入国内用户喜爱的新浪微博。

IE 浏览器 IE浏览器是美国微软公司推出的一款浏览器,提供安全的网页服务,支持快速打开网页,可提供网络互动新体验。对于开发者来说,IE浏览器支持最新的网络标准和技术。

2、Linux客户端

指令 功能
elinks elinks指令是一个纯文本格式的浏览器,支持颜色、表格、鼠标、菜单操作。此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。
curl curl是一个利用URL语法在命令行下工作的文件传输工具,支持的通信协议有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3、SMTP和RTSP。curl还支持SSL认证、HTTP POST、HTTP PUT、FTP上传, HTTP form based upload、proxies、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, CRAM-MD5, NTLM, Negotiate and Kerberos)、file transfer resume、proxy tunneling。

五、安装部署

1、环境参数

(1)主机名

 root@webserver:~# hostname
 webserver

(2)主机IP地址

 root@webserver:~# ifconfig ens32
 ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 10.0.0.16 netmask 255.255.255.0 broadcast 10.0.0.255
        inet6 fe80::20c:29ff:feb9:63e6 prefixlen 64 scopeid 0x20<link>
        ether 00:0c:29:b9:63:e6 txqueuelen 1000 (Ethernet)
        RX packets 562 bytes 317212 (317.2 KB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 372 bytes 58199 (58.1 KB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

(3)防火墙状态

 root@webserver:~# ufw status
 Status: inactive

(4)时区时间

 root@webserver:~# timedatectl status
                      Local time: Wed 2021-12-22 12:55:11 CST
                  Universal time: Wed 2021-12-22 04:55:11 UTC
                        RTC time: Wed 2021-12-22 04:55:11
                        Time zone: Asia/Shanghai (CST, +0800)
        System clock synchronized: yes
 systemd-timesyncd.service active: yes
                  RTC in local TZ: no

(5)更新软件源

 root@webserver:~# apt update
 Hit:1 http://mirrors.aliyun.com/ubuntu bionic InRelease
 Hit:2 http://mirrors.aliyun.com/ubuntu bionic-updates InRelease
 Hit:3 http://mirrors.aliyun.com/ubuntu bionic-backports InRelease
 Hit:4 http://mirrors.aliyun.com/ubuntu bionic-security InRelease
 Reading package lists... Done
 Building dependency tree      
 Reading state information... Done
 14 packages can be upgraded. Run 'apt list --upgradable' to see them.

2、安装过程

(1)搜索软件包

 root@webserver:~# apt search apache2

(2)安装软件包

 root@webserver:~# apt install -y apache2

3、验证过程

(1)验证安装

root@webserver:~# dpkg -l apache2
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================================================================================
ii apache2 2.4.29-1ubuntu4.20 amd64 Apache HTTP Server

(2)验证文件列表

root@webserver:~# dpkg -L apache2
/.
/etc
/etc/apache2
/etc/apache2/apache2.conf
/etc/apache2/conf-available
/etc/apache2/conf-available/charset.conf
/etc/apache2/conf-available/localized-error-pages.conf
/etc/apache2/conf-available/other-vhosts-access-log.conf
/etc/apache2/conf-available/security.conf
/etc/apache2/conf-available/serve-cgi-bin.conf
/etc/apache2/conf-enabled
/etc/apache2/envvars
/etc/apache2/magic
/etc/apache2/mods-available
/etc/apache2/mods-available/access_compat.load
/etc/apache2/mods-available/actions.conf
/etc/apache2/mods-available/actions.load
/etc/apache2/mods-available/alias.conf
/etc/apache2/mods-available/alias.load
/etc/apache2/mods-available/allowmethods.load
/etc/apache2/mods-available/asis.load
/etc/apache2/mods-available/auth_basic.load
/etc/apache2/mods-available/auth_digest.load
/etc/apache2/mods-available/auth_form.load
/etc/apache2/mods-available/authn_anon.load
/etc/apache2/mods-available/authn_core.load
/etc/apache2/mods-available/authn_dbd.load
/etc/apache2/mods-available/authn_dbm.load
/etc/apache2/mods-available/authn_file.load
/etc/apache2/mods-available/authn_socache.load
/etc/apache2/mods-available/authnz_fcgi.load
/etc/apache2/mods-available/authnz_ldap.load
/etc/apache2/mods-available/authz_core.load
/etc/apache2/mods-available/authz_dbd.load
/etc/apache2/mods-available/authz_dbm.load
/etc/apache2/mods-available/authz_groupfile.load
/etc/apache2/mods-available/authz_host.load
/etc/apache2/mods-available/authz_owner.load
/etc/apache2/mods-available/authz_user.load
/etc/apache2/mods-available/autoindex.conf
/etc/apache2/mods-available/autoindex.load
/etc/apache2/mods-available/buffer.load
/etc/apache2/mods-available/cache.load
/etc/apache2/mods-available/cache_disk.conf
/etc/apache2/mods-available/cache_disk.load
/etc/apache2/mods-available/cache_socache.load
/etc/apache2/mods-available/cern_meta.load
/etc/apache2/mods-available/cgi.load
/etc/apache2/mods-available/cgid.conf
/etc/apache2/mods-available/cgid.load
/etc/apache2/mods-available/charset_lite.load
/etc/apache2/mods-available/data.load
/etc/apache2/mods-available/dav.load
/etc/apache2/mods-available/dav_fs.conf
/etc/apache2/mods-available/dav_fs.load
/etc/apache2/mods-available/dav_lock.load
/etc/apache2/mods-available/dbd.load
/etc/apache2/mods-available/deflate.conf
/etc/apache2/mods-available/deflate.load
/etc/apache2/mods-available/dialup.load
/etc/apache2/mods-available/dir.conf
/etc/apache2/mods-available/dir.load
/etc/apache2/mods-available/dump_io.load
/etc/apache2/mods-available/echo.load
/etc/apache2/mods-available/env.load
/etc/apache2/mods-available/expires.load
/etc/apache2/mods-available/ext_filter.load
/etc/apache2/mods-available/file_cache.load
/etc/apache2/mods-available/filter.load
/etc/apache2/mods-available/headers.load
/etc/apache2/mods-available/heartbeat.load
/etc/apache2/mods-available/heartmonitor.load
/etc/apache2/mods-available/http2.load
/etc/apache2/mods-available/ident.load
/etc/apache2/mods-available/imagemap.load
/etc/apache2/mods-available/include.load
/etc/apache2/mods-available/info.conf
/etc/apache2/mods-available/info.load
/etc/apache2/mods-available/lbmethod_bybusyness.load
/etc/apache2/mods-available/lbmethod_byrequests.load
/etc/apache2/mods-available/lbmethod_bytraffic.load
/etc/apache2/mods-available/lbmethod_heartbeat.load
/etc/apache2/mods-available/ldap.conf
/etc/apache2/mods-available/ldap.load
/etc/apache2/mods-available/log_debug.load
/etc/apache2/mods-available/log_forensic.load
/etc/apache2/mods-available/lua.load
/etc/apache2/mods-available/macro.load
/etc/apache2/mods-available/mime.conf
/etc/apache2/mods-available/mime.load
/etc/apache2/mods-available/mime_magic.conf
/etc/apache2/mods-available/mime_magic.load
/etc/apache2/mods-available/mpm_event.conf
/etc/apache2/mods-available/mpm_event.load
/etc/apache2/mods-available/mpm_prefork.conf
/etc/apache2/mods-available/mpm_prefork.load
/etc/apache2/mods-available/mpm_worker.conf
/etc/apache2/mods-available/mpm_worker.load
/etc/apache2/mods-available/negotiation.conf
/etc/apache2/mods-available/negotiation.load
/etc/apache2/mods-available/proxy.conf
/etc/apache2/mods-available/proxy.load
/etc/apache2/mods-available/proxy_ajp.load
/etc/apache2/mods-available/proxy_balancer.conf
/etc/apache2/mods-available/proxy_balancer.load
/etc/apache2/mods-available/proxy_connect.load
/etc/apache2/mods-available/proxy_express.load
/etc/apache2/mods-available/proxy_fcgi.load
/etc/apache2/mods-available/proxy_fdpass.load
/etc/apache2/mods-available/proxy_ftp.conf
/etc/apache2/mods-available/proxy_ftp.load
/etc/apache2/mods-available/proxy_hcheck.load
/etc/apache2/mods-available/proxy_html.conf
/etc/apache2/mods-available/proxy_html.load
/etc/apache2/mods-available/proxy_http.load
/etc/apache2/mods-available/proxy_http2.load
/etc/apache2/mods-available/proxy_scgi.load
/etc/apache2/mods-available/proxy_wstunnel.load
/etc/apache2/mods-available/ratelimit.load
/etc/apache2/mods-available/reflector.load
/etc/apache2/mods-available/remoteip.load
/etc/apache2/mods-available/reqtimeout.conf
/etc/apache2/mods-available/reqtimeout.load
/etc/apache2/mods-available/request.load
/etc/apache2/mods-available/rewrite.load
/etc/apache2/mods-available/sed.load
/etc/apache2/mods-available/session.load
/etc/apache2/mods-available/session_cookie.load
/etc/apache2/mods-available/session_crypto.load
/etc/apache2/mods-available/session_dbd.load
/etc/apache2/mods-available/setenvif.conf
/etc/apache2/mods-available/setenvif.load
/etc/apache2/mods-available/slotmem_plain.load
/etc/apache2/mods-available/slotmem_shm.load
/etc/apache2/mods-available/socache_dbm.load
/etc/apache2/mods-available/socache_memcache.load
/etc/apache2/mods-available/socache_shmcb.load
/etc/apache2/mods-available/speling.load
/etc/apache2/mods-available/ssl.conf
/etc/apache2/mods-available/ssl.load
/etc/apache2/mods-available/status.conf
/etc/apache2/mods-available/status.load
/etc/apache2/mods-available/substitute.load
/etc/apache2/mods-available/suexec.load
/etc/apache2/mods-available/unique_id.load
/etc/apache2/mods-available/userdir.conf
/etc/apache2/mods-available/userdir.load
/etc/apache2/mods-available/usertrack.load
/etc/apache2/mods-available/vhost_alias.load
/etc/apache2/mods-available/xml2enc.load
/etc/apache2/mods-enabled
/etc/apache2/ports.conf
/etc/apache2/sites-available
/etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/default-ssl.conf
/etc/apache2/sites-enabled
/etc/cron.daily
/etc/cron.daily/apache2
/etc/default
/etc/default/apache-htcacheclean
/etc/init.d
/etc/init.d/apache-htcacheclean
/etc/init.d/apache2
/etc/logrotate.d
/etc/logrotate.d/apache2
/etc/ufw
/etc/ufw/applications.d
/etc/ufw/applications.d/apache2
/etc/ufw/applications.d/apache2-utils.ufw.profile
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/apache-htcacheclean.service
/lib/systemd/system/[email protected]
/lib/systemd/system/apache2.service
/lib/systemd/system/apache2.service.d
/lib/systemd/system/apache2.service.d/apache2-systemd.conf
/lib/systemd/system/[email protected]
/usr
/usr/lib
/usr/lib/cgi-bin
/usr/sbin
/usr/sbin/a2enmod
/usr/sbin/a2query
/usr/sbin/apache2ctl
/usr/share
/usr/share/apache2
/usr/share/apache2/apache2-maintscript-helper
/usr/share/apache2/ask-for-passphrase
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/a2enmod
/usr/share/bug
/usr/share/bug/apache2
/usr/share/doc
/usr/share/doc/apache2
/usr/share/doc/apache2/NEWS.Debian.gz
/usr/share/doc/apache2/PACKAGING.gz
/usr/share/doc/apache2/README.Debian.gz
/usr/share/doc/apache2/README.backtrace
/usr/share/doc/apache2/README.multiple-instances
/usr/share/doc/apache2/copyright
/usr/share/doc/apache2/examples
/usr/share/doc/apache2/examples/apache2.monit
/usr/share/doc/apache2/examples/secondary-init-script
/usr/share/doc/apache2/examples/setup-instance
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/apache2
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/a2query.1.gz
/usr/share/man/man8
/usr/share/man/man8/a2enconf.8.gz
/usr/share/man/man8/a2enmod.8.gz
/usr/share/man/man8/a2ensite.8.gz
/usr/share/man/man8/apache2ctl.8.gz
/var
/var/cache
/var/cache/apache2
/var/cache/apache2/mod_cache_disk
/var/lib
/var/lib/apache2
/var/log
/var/log/apache2
/var/www
/var/www/html
/usr/sbin/a2disconf
/usr/sbin/a2dismod
/usr/sbin/a2dissite
/usr/sbin/a2enconf
/usr/sbin/a2ensite
/usr/sbin/apachectl
/usr/share/bash-completion/completions/a2disconf
/usr/share/bash-completion/completions/a2dismod
/usr/share/bash-completion/completions/a2dissite
/usr/share/bash-completion/completions/a2enconf
/usr/share/bash-completion/completions/a2ensite
/usr/share/bug/apache2/control
/usr/share/bug/apache2/script
/usr/share/doc/apache2/changelog.Debian.gz
/usr/share/man/man8/a2disconf.8.gz
/usr/share/man/man8/a2dismod.8.gz
/usr/share/man/man8/a2dissite.8.gz
/usr/share/man/man8/apachectl.8.gz

4、服务管理

(1)服务状态

root@webserver:~# systemctl status apache2.service

(2)服务启动

root@webserver:~# systemctl start apache2.service

(3)服务停止

root@webserver:~# systemctl stop apache2.service

(4)服务重启

root@webserver:~# systemctl restart apache2.service

(5)启用服务开机自启动

root@webserver:~# systemctl enable apache2.service

(6)禁用服务开机自启动

root@webserver:~# systemctl disable apache2.service

5、配置文件解析

(1)/etc/apache2/apache2.conf

# 它被分成几个文件,形成如下所示的配置层次结构,都位于/etc/apache2/目录中:
#
# /etc/apache2/
# |-- apache2.conf ##主配置文件
# | `-- ports.conf ##服务端口控制
# |-- mods-enabled ##启用的服务功能模块
# | |-- *.load
# | `-- *.conf
# |-- conf-enabled ##启用的服务配置
# | `-- *.conf
# `-- sites-enabled ##启用的站点配置
# `-- *.conf
#
# 全局配置
#
# ServerRoot: 目录树的顶部,保存服务器的配置、错误和日志文件。

# 不要在目录路径的末尾添加斜杠。
#
#ServerRoot "/etc/apache2"

# 所有配置文件中的变量值,可通过/etc/apache2/envvars文件查询或设置
#
# 接受的序列化锁文件必须存储在本地磁盘上。
#
#Mutex file:${APACHE_LOCK_DIR} default

# 存放shm和其他运行时文件的目录。
#
DefaultRuntimeDir ${APACHE_RUN_DIR}

# PidFile: 服务器启动时应该在其中记录进程标识号的文件。
# This needs to be set in /etc/apache2/envvars
#
PidFile ${APACHE_PID_FILE}

# Timeout: 接收和发送超时之前的秒数。
#
Timeout 300

# KeepAlive: 是否允许持久连接(每个连接有多个请求)。设置为“Off”禁用。
#
KeepAlive On

# MaxKeepAliveRequests: 在一个持久连接期间允许的最大请求数。
# 设置为0,允许无限数量。我们建议您将这个数字保持在较高的位置,以获得最大的性能。
#
MaxKeepAliveRequests 100

# KeepAliveTimeout: 同一客户端在同一连接上等待下一个请求的秒数。
#
KeepAliveTimeout 5

# These need to be set in /etc/apache2/envvars
# 启用服务进程时的用户和用户组
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

# HostnameLookups: 记录客户的名字或只是他们的IP地址,例如,www.apache.org (on)或204.62.129.132 (off)。默认值是关闭的,因为如果人们在知道的情况下打开这个功能,对网络来说会更好,因为启用它意味着每个客户端请求都会导致至少一个到命名服务器的查找请求。
#
HostnameLookups Off

# ErrorLog: 错误日志文件的位置。如果你没有在VirtualHost中指定一个ErrorLog指令容器中,与该虚拟主机相关的错误消息将被记录在这里。如果你为虚拟主机定义了一个错误日志文件容器,该主机的错误将记录在那里,而不是这里。
#
ErrorLog ${APACHE_LOG_DIR}/error.log

# LogLevel: 控制记录到error_log的消息的严重性。可选值:trace8,…, trace1, debug, info, notice, warn, error, crit, alert, emerg。也可以为特定的模块配置日志级别,例如。“LogLevel info ssl:warn”
#
LogLevel warn

# 包括模块配置:
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf

# 包括要监听的端口列表
Include ports.conf

# 设置Apache2 HTTPD服务器的默认安全模型。它不允许访问/usr/share和/var/www之外的根文件系统,前者用于在Debian中打包的web应用程序,后者可用于web服务器提供的本地目录。如果您的系统从/srv中的子目录提供内容,您必须允许访问这里或任何相关的虚拟主机。
<Directory />
Options FollowSymLinks ##跟随系统链接(符号连接)
AllowOverride None ##是否允许.htacess文件的配置,none表示被忽略
Require all denied ##禁止所有访问
</Directory>

<Directory /usr/share>
AllowOverride None ##是否允许.htacess文件的配置,none表示被忽略
Require all granted ##允许所有访问
</Directory>

<Directory /var/www/>
Options Indexes FollowSymLinks ##显示目录结构列表,跟随系统链接(符号连接)
AllowOverride None ##是否允许.htacess文件的配置,none表示被忽略
Require all granted ##允许所有访问
</Directory>

#<Directory /srv/>
# Options Indexes FollowSymLinks
# AllowOverride None
# Require all granted
#</Directory>

# AccessFileName: 要在每个目录中查找附加配置指令的文件名。参见AllowOverride指令。
#
AccessFileName .htaccess

# 禁止客户端查看服务器端所有以.ht开头的文件
#
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>

# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
# Use mod_remoteip instead.
#
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

# Include of directories ignores editors' and dpkg's backup files,
# see README.Debian for details.

# 包括通用的语句片段
IncludeOptional conf-enabled/*.conf

# 包括虚拟主机配置:
IncludeOptional sites-enabled/*.conf

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

(2)/etc/apache2/ports.conf

# 如果您只是改变端口或添加更多的端口,您可能还必须更改的VirtualHost语句
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
Listen 443
</IfModule>

<IfModule mod_gnutls.c>
Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

(3)/etc/apache2/conf-enabled/charset.conf

# 启用AddDefaultCharset前请阅读文档。一般来说,如果您知道您的所有文件都具有这种编码,那么这是一个好主意。它将覆盖在meta http-equiv或xml编码标签文件中给定的任何编码。

#AddDefaultCharset UTF-8

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

(4)/etc/apache2/conf-enabled/other-vhosts-access-log.conf

# 为没有定义自己日志文件的VirtualHosts定义一个访问日志
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

(5)/etc/apache2/sites-enabled/000-default.conf

<VirtualHost *:80>
# ServerName指令设置服务器用来标识自己的请求方案、主机名和端口。这在创建重定向url时使用。在虚拟主机的上下文中,ServerName指定在请求的Host:报头中必须出现的主机名来匹配这个虚拟主机。对于默认的虚拟主机(这个文件),这个值不是决定性的,因为它被用作最后的主机。但是,必须为任何进一步的虚拟主机显式地设置它。
#ServerName www.example.com

ServerAdmin webmaster@localhost
DocumentRoot /var/www/html

# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet