Apache基础入门


介绍

在这里插入图片描述

Apache是一个开源的Web服务器软件,全称为Apache HTTP Server,由Apache软件基金会开发和维护。Apache是世界上使用最广泛的一种Web服务器,支持基于HTTP、HTTPS的请求处理,是开发网站和Web应用程序的重要工具。

一、主要特点

  • 开源免费:阿帕奇服务器以开源的方式发布,任何人都可以免费获取和使用。

  • 跨平台:可在多个操作系统上运行,包括Windows、Linux、UNIX等,为不同平台的用户提供了便利。

  • 功能强大:采用模块化设计,用户可以根据需要选择和配置不同的模块,以满足特定的需求。同时,它支持多种编程语言,为开发者提供了丰富的功能和扩展性。

  • 高性能:阿帕奇服务器采用了多种优化技术,如多线程、事件驱动等,以确保高性能和高并发处理能力。

  • 安全可靠:具有良好的安全性,支持SSL/TLS加密通信,可以有效保护数据传输的安全。

二、应用场景与功能

  • 作为Web服务器,处理Web浏览器发来的请求,并将网页等资源返回给Web浏览器。

  • 可以用作反向代理,将客户端的请求转发到后端服务器。

  • 实现负载均衡,将请求分发到多个服务器,提高系统的可用性和性能。

三、社区与支持

  • 阿帕奇服务器拥有庞大的用户社区和丰富的文档资源,用户可以方便地获取帮助和支持。综上所述,阿帕奇服务器是一款功能强大、稳定可靠的Web服务器软件,适用于各种规模的项目和场景。其开源性、跨平台性和模块化设计使得它具有很强的灵活性和可定制性,能够满足不同用户的需求。

四、Apache 服务器的主要配置文件有哪些?

  • Apache服务器的主要配置文件包括httpd.conf,它是Apache配置的核心文件,包含了全局设置和各种模块的加载指令。
  • 通过编辑httpd.conf文件,可以对服务器的基本行为进行设置。此外,Apache还提供了虚拟主机配置文件,允许在同一台物理服务器上运行多个网站,每个网站有自己的域名和IP地址。
  • 虚拟主机配置文件通常包括针对每个虚拟主机的设置,如ServerName、ServerAlias、DocumentRoot等指令。

Web服务器的基本知识

Web服务器的基本知识可以归纳为以下几个方面:

1.Web服务器定义:

  • Web服务器是一个重要的基础设施,它通过互联网提供Web页面和其他文件,以便用户浏览。这些文件可以包括HTML、CSS、JavaScript、图片等。

2.Web服务器的工作原理:

  • Web服务器使用HTTP协议来传输客户端和服务器之间的数据。 当用户在浏览器中输入URL或点击链接时,浏览器会向Web服务器发送HTTP请求。

  • Web服务器接收请求,处理请求,并将所请求的内容(如HTML页面、图片等)返回给浏览器。

  • 浏览器解析返回的文件并呈现给用户。

3.Web服务器的组成部分:

  • Web服务器软件:如Apache、Nginx、IIS等,用于运行Web服务器。 配置文件:包含Web服务器的所有配置信息,例如监听端口、虚拟主机设置等。

  • 文档根目录:存储Web页面和其他文件的目录。 日志文件:记录服务器活动的文件,便于管理员进行访问分析和问题排查。

4.Web服务器的工作模式:

  • 串行模式:依次处理客户端的请求,直到一个请求处理完毕后再处理下一个。
  • 并行模式:同时处理多个请求,提高服务器的请求处理效率。

5.Web服务器的安全问题:

  • 常见的安全问题包括跨站脚本攻击(XSS)、SQL注入攻击、拒绝服务攻击等。
  • 提高安全性的措施包括定期漏洞扫描、修复漏洞、使用安全插件等。

6.Web服务器的优化:

  • 性能优化是一个持续的过程,可以通过多种方式进行,如使用缓存、压缩传输数据、调整并发连接数等。

7.Web服务器的类型:

  • IIS:微软主推的Web服务器产品,适用于Windows系统。
  • Apache:开源免费的Web服务器,支持跨平台应用,尤其对Linux支持良好。
  • Nginx:高性能的Web服务器,支持高并发和负载均衡。
  • 还有其他类型的Web服务器,如Tomcat、Kangle、WebSphere、WebLogic等。

安装配置Apache

1.安装

1.1 确保系统更新

在安装Apache之前,我们需要确保系统已经更新到版本。可以通过以下命令来更新系统:

sudo apt update
sudo apt upgrade

1.2 确保系统没有其他Web服务器

在安装Apache之前,我们需要确保系统上没有其他的Web服务器软件。可以通过以下命令来检查系统上是否已经安装了其他Web服务器:

sudo netstat -tlnp | grep :80

如果输出为空,则表示系统上没有其他Web服务器。

1.3 使用apt命令安装Apache

在Ubuntu上,我们可以使用apt命令来安装Apache。可以通过以下命令来安装Apache:

sudo apt install apache2

在安装过程中,系统会提示你输入密码以确认安装。

1.4 启动Apache服务

安装完成后,我们需要启动Apache服务。可以通过以下命令来启动Apache:

sudo systemctl start apache2

1.5 验证Apache是否安装成功

安装完成后,我们可以通过浏览器来验证Apache是否安装成功。可以在浏览器中输入以下服务器地址,如果看到Apache的默认页面,则表示Apache安装成功。

2. 配置


2.1 HTTP 和 HTTPS 端口

Apache 监听了端口80(HTTP)和443(HTTPS)。你需要在防火墙打开那些端口,以便网站服务器从互联网上是可以访问的。

假设你正在使用UFW,你可以通过启用Apache Full配置,它包含了这两个端口的规则:

sudo ufw allow 'Apache Full'
2.2 apache2 默认的几个配置文件:
  • /etc/apache2/apache2.conf :是主要配置文件(这个文件的末尾可以看到,include了其它所有的配置文件)。
  • /etc/apache2/ports.conf :始终包含在主配置文件中。它用于确定传入连接的侦听端口,默认为80,我们一般都会重新配置新的端口。
  • /etc/apache2/sites-enabled,/etc/apache2/conf-enabled,/etc/apache2/mods-enabled其它配置文件目录。
  • /var/www/html :apache2的默认web目录:(在/etc/apache2/sites-enabled/000-default.conf 里可以看到这个 DocumentRoot /var/www/html 配置)
  • /etc/apache2/envvars :apache2 的默认客户是 www-data,定义在该文件中。
  • /etc/apache2/mods-enabled/dir.conf :设置默认主页的配置文件
2.3 修改或增加默认端口
sudo vim /etc/apache2/ports.conf

找到如下内容:

Listen 80
# 增加8080端口,稍后会用到
Listen 8080  
<IfModule ssl_module>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>
2.4 修改默认的网站根目录

apache2为了安全起见,只允许/var/www、/usr/share下面的文件夹被访问,假如要指定其它目录为网站根目录,需要修改配置文件 /etc/apache2/apache2.conf

sudo vim /etc/apache2/apache2.conf

找到下面的配置片段,它们表示目录权限。

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all denied
</Directory>

<Directory /usr/share>
    AllowOverride None
    Require all granted
</Directory>

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

在配置下面增加指定的目录,比方 /opt/www

<Directory /opt/www/>
   Options Indexes FollowSymLinks 
   AllowOverride None  
   Require all granted
</Directory>
## 配置含义
Options Indexes FollowSymLinks:
  Indexes:如果没有默认的索引文件(如 index.html),则显示目录列表。
  FollowSymLinks:允许服务器跟随符号链接到达其目标文件。


AllowOverride None:这个指令指定了哪些 .htaccess 文件中的配置指令可以覆盖服务器的全局配置。None 表示不允许任何 .htaccess 文件覆盖全局配置,这意味着所有的配置都必须在主配置文件中设置。

Require all granted:这表示允许所有用户访问该目录,不限制访问权限。相当于对该目录中的内容开放了访问权限。

重启服务使修改生效

sudo systemctl reload apache2
2.5 配置一个虚拟主机

Apache 默认启动了一个虚拟主机。所有域名都指向服务器 IP 地址,匹配了默认的虚拟主机。假如你只托管一个简单的网站,你需要将网站内容上传到/var/www/html,并且编辑虚拟主机配置文件 /etc/apache2/sites-enabled/000-default.conf

假如想搭建更多网站,需要为每一个网站创立一个虚拟主机配置。

test.com 为例,第一步就是创立根目录文件夹:

# 指定网站根目录为 /opt/www/test.com , -p 参数的作用为递归创立目录,即便上级目录不存在,会按目录层级自动创立目录

sudo mkdir -p /opt/www/test.com

在网站根目录下创立一个index.html文件来测试站点:

vim /opt/www/test.com/index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>测试站点</title>
</head>

<body>
    <h1>恭喜!假如看到这个页面,说明访问成功啦!</h1>
</body>

</html>

apache2 的默认客户为 www-data ,修改网站根文件夹的客户归属,避免权限问题:

sudo chown -R www-data: /opt/www/test.com

下一步就是为 test.com 创立一个虚拟主机配置(最佳实践就是将每一个虚拟主机配置存储成一个独立的文件)。

Apache虚拟主机配置文件存储在/etc/apache2/sites-available目录, 标准命名是使用域名来命名配置文件。

sudo vim /etc/apache2/sites-available/test.com.conf

编辑配置,增加以下内容,将ip地址换成你自己的:

<VirtualHost *:8080>
    ServerName 192.168.8.30
    ServerAlias www.test.com
    ServerAdmin webmaster@test.com
    DocumentRoot /opt/www/test.com

    <Directory /opt/www/test.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/test.com-error.log
    CustomLog ${APACHE_LOG_DIR}/test.com-access.log combined
</VirtualHost>

Apache 默认不会读取/etc/apache2/sites-available文件夹下的配置文件,需要将它们链接到/etc/apache2/sites-enabled文件夹,使用a2ensite创立一个链接,激活虚拟主机配置:

sudo a2ensite test.com

测试配置文件,能否有语法错误:

sudo apachectl configtest

假如没有任何错误,你将会看到下面的输出:

Syntax OK 重启 Apache 服务,使修改生效:

sudo systemctl reload apache2

最终,在浏览中打开 http://192.168.8.30:8080,看看能否已经可以成功访问。

3. 常用命令

# 启动 apache2 服务
sudo systemctl start apache2
# 关闭 apache2 服务
sudo systemctl stop apache2
# 重启 apache2 服务
sudo systemctl reload apache2
# 查看 apache2 状态
sudo systemctl status apache2