ubuntu系统安装apache

一、Apache简介

1、Apache是什么?

Apache是一个开源的、免费的Web服务器软件,最初由美国国家超级计算应用中心(NCSA)开发。它可以在多种操作系统上运行,包括Windows、Unix、Linux和其他操作系统。Apache被广泛用于搭建和管理个人网站、企业网站以及大型应用程序的Web服务器。除了作为Web服务器,Apache还可以用作代理服务器和反向代理服务器,以及提供一系列功能强大的模块,如SSL加密、URL重写、安全权限控制等。Apache因其稳定性、可靠性和灵活性而备受开发者和用户的青睐。

2、Apache的优势有哪些?

Apache Web服务器有以下一些主要优势:

  1. 开源免费:Apache是开源项目,因此可以免费使用,没有使用费用和许可证费用。
  2. 跨平台性:Apache可以在多种操作系统上运行,包括Windows、Unix、Linux和其他操作系统,具有很好的跨平台性。
  3. 扩展性:Apache提供了丰富的模块和插件,可以根据需要进行扩展和定制,以满足不同应用场景的需求。
  4. 稳定可靠:Apache经过长时间的发展和改进,具有良好的稳定性和可靠性,广泛应用于各种规模的网站和应用程序。
  5. 安全性:Apache提供了多种安全功能和模块,如SSL加密、安全权限控制等,可以保护Web服务器和网站的安全性。
  6. 支持广泛:Apache支持多种Web技术和语言,如PHP、Perl、Python等,可以灵活地支持不同的Web应用程序。
  7. 大型社区支持:Apache拥有庞大的开发者和用户社区,提供各种文档、教程、插件等资源,能够获得较好的支持和帮助。

综上所述,Apache具有开源免费、跨平台性、扩展性、稳定可靠、安全性、广泛支持和大型社区支持等优势。

3、apache和nginx相比优劣势在哪?

Apache和Nginx是两种常见的Web服务器软件,它们有不同的优缺点。以下是它们之间的比较:

Apache的优势:

  1. 模块化和可扩展性:Apache具有丰富的模块和插件,能够完成各种Web服务器和应用程序的需求。
  2. 强大的社区支持:Apache拥有庞大的开发者和用户社区,提供各种文档、教程、插件等资源,能够获得较好的支持和帮助。
  3. 老牌Web服务器:Apache是最早的Web服务器之一,具有较长历史和丰富的经验,具有广泛的应用和稳定性。

Nginx的优势:

  1. 高性能和低内存消耗:Nginx设计上更加注重性能,能够处理大量并发连接,并且在同等硬件上消耗的内存更少。
  2. 高并发支持:Nginx对并发连接的处理能力更强,尤其在高并发情况下表现更为出色。
  3. 事件驱动架构:Nginx采用事件驱动的架构设计,能够更好地应对高负载情况,提供更快的响应速度。

总的来说,Apache更加灵活和成熟,适用于需要大量模块和功能的复杂环境,而Nginx则更注重性能和高并发连接的处理,适用于高负载的Web服务器环境。选择使用哪种Web服务器取决于具体的应用场景和需求。

二、Apache的安装

apt包管理工具安装

sudo apt install -y apache2

安装最新版

# 添加源与密钥
sudo add-apt-repository ppa:ondrej/apache2
# 更新源
sudo apt update
# 安装最新版
sudo apt install -y apache2

编译安装

三、Apache的配置

ubuntu系列默认配置文件在/etc/apache2中,rhel系列在/etc/httpd中

  • apache2.conf:Apache 的主要配置文件,全局的一些配置都会在这里面。
  • envvars:Apache 环境变量的配置文件。
  • magic:在 Apache 加载了 mod_mime_magic 模块之后,用户辅助判断文件的 MIME 类型的配置文件。
  • ports.conf:Apache 监听端口的配置文件,由主配置文件所包含读取。

其他文件

  • conf:单独的指令配置文件。
    • conf-available:可用的指令配置文件。
    • conf-enabled:生效的指令配置文件。
  • mods:模块的加载与相关参数的配置文件。
    • mods-available:可用的模块配置文件。
    • mods-enabled:生效的模块配置文件。
  • sites:站点的配置文件。
    • sites-available:可用的站点配置文件。
    • sites-enables:生效的站点配置文件。

看着有非常多的配置文件,但其结构很清晰,主要起作用的是 apache2.conf 主配置,其它的配置文件都是在主配置文件中通过 Include 指令包含读取。

通过包含的方式来读取其它的配置,是因为将这些配置放置在一个配置文件中,会非常的大、较混乱,不好维护,所以将其拆分成多个子配置文件、能够清楚的理清各个配置文件的作用,方便维护。

在主配置文件中只会读取 enable 中的配置文件,而 enable 中的配置文件是我们确认并加载 available 中配置文件的一个软链接。

主配置文件

  • 注释信息:以 # 开头的为注释部分。
  • 配置指令:例如 IncludeServerRootLogFormat 等等。
  • 指令配置块(在书籍中称为指令上下文):例如以 <xxxx> </xxxx> 这样的方式包括配置指令的部分。
    • 虚拟主机上下文:<VirtualHost></VirtualHost>
    • 局部上下文:针对目录或者 URI 的配置块,例如 <Directory> 等等。
    • 条件上下文:针对只在特殊情况下起作用的指令,例如 <ifModule> 等等。
  1. 配置指令。

可以看到配置文件的开头即为多个配置命令,如 DefaultRuntimeDir、PidFile、Timeout 等等,而其中配置值中的变量配置(例如 ${APACHE_RUN_DIR})在 /etc/apache2/envvars 中。

  1. 指令上下文。

在配置命令之后就是一段局部上下文的配置内容,如 <Directory> 和 <FilesMatch>。在全局中的配置指令应用于全局,而在上下文会继承全局中的指令值,其中特定配置的指令只在上下文中生效,若是配置了与全局中相同的配置项则会覆盖。

其中 <Directory> 的作用是配置某个目录或路径的一个访问权限和展示情况等等,例如:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

其配置的是 /var/www/ 的目录,Options 指令的完整语法为:Options [+|-]option [[+|-]option] ...,可以附加指定多种服务器特性,特性选项之间以空格分隔。

  • Indexes:表示在访问目录时,若是没有 index.html 这样的文件就以列表的方式展示该目录中的文件与子目录。
  • FollowSymLinks:表示的是允许读取目录中的符号链接方式。
  • AllowOverride:表示在使用 Apache 的 rewrite 模块重写的时候能否读取 .htaccess 中的重写规则,None 表示的是不能读取。
  • Require:是利用 mod_authz_host 模块来实现访问控制的一个指令,Require all granted 表示允许所有来源的一个访问,而拒绝所有来源的方式便是 Require all denied,若是开放某个 IP 段的访问 Require ip 172.10 192.168,多个 IP 段之间使用空格分割。还有可以指定域名等等用法。

在配置目录或者文件的时候不仅可以明确的指定路径(如上文中的例子),还可以使用正则表达式。例如:

<Directory ~ "^/www/[0-9]{2}">
.......
</Directory>

配置 www 目录中包含两个数字的特殊权限,如果使用正则表达式我们需要添加 ~ 符号,若是怕忘记添加该符号可以直接使用 DirectoryMatch 指令块,例如:

<DirectoryMatch "^/www/[0-9]{2}">
.......
</Directory>

与之类似的还有 File 指令块。

端口配置文件

在主配置文件中我们有看到其包含了 ports.conf 配置文件,查看该配置文件:

less /etc/apache2/ports.conf

通过 Listen 指令指定了默认 Apache 启动时监听的端口是 80 端口。

通过 <IfModule> 指令块,判断当前是否加载了 ssl_module 模块,若是加载了便同时监听 443 端口。

站点配置文件

接下来查看我们最为常用的站点配置文件:

less /etc/apache2/sites-available/000-default.conf

所有的站点信息都是通过 <VirtualHost> 来包含。配置多个 <VirtualHost> 即可创建多个虚拟主机,访问多个虚拟主机可以通过这样的方式来区分:

  • IP 地址。
  • 监听的端口号。
  • 访问的 Servername

基于端口的方式配置

其中默认配置文件中就是通过基于端口的方式来配置,配置 <VirtualHost *:80> 表示无论访问的是哪个 IP 地址的 80 端口(这里所说的无论哪个 IP,是因为一台机器上一般有多个地址,有内网网卡地址、外网网卡地址、环回地址等等),都会给予配置,然后以该上下文中的配置为准,我们可以来验证:

  1. 修改 ports.conf 文件
$ sudo vim /etc/apache2/ports.conf

# 添加如下内容
Listen 8080

修改站点配置文件。

$ sudo vim /etc/apache2/sites-available/000-default.conf

# 添加如下内容
<VirtualHost *:8080>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/
</VirtualHost>

新增加一个 VirtualHost,匹配所有访问 8080 端口的请求,为了看出区别我们修改了其 DocumentRoot 目录,该配置项的作用就是指定访问该 VirtualHost 时对应文件系统的目录(为了看到完整的配置项,我们通过 grep 不显示注释内容):

发表评论

后才能评论