初学者的Apache阿帕奇教程

初学者的Apache阿帕奇教程

什么是Apache阿帕奇?

Apache 是一个非凡的应用软件。它是世界上最广泛使用的Web服务器应用程序,在商业Web服务器市场的份额超过50%。Apache 是 Unix 类操作系统中使用最广泛的 Web 服务器应用程序,但几乎可用于所有平台,如 Windows、OS X、OS/2 等。"阿帕奇"这个词取自美洲原住民部落"阿帕奇"的名字,以在战争和战略制定方面的技能而著名。7hR码友部落

它是一个模块化的、基于进程的 Web 服务器应用程序,可创建一个同时连接的新线程。它支持许多功能;其中许多模块是作为单独的模块编译的,并扩展其核心功能,可以提供从服务器端编程语言支持到身份验证机制的所有内容。虚拟托管是允许单个 Apache Web 服务器为多个不同网站服务的功能之一。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

您将学到什么: [显示]

如何安装Apache阿帕奇

安装包或应用程序的方法有很多种。下面登记 -7hR码友部落

  1. 此开源 Web 应用程序的功能之一是任何人都可以根据自己的环境进行安装。这使得各种供应商,如 Debian、红帽、FreeBSD、Suse 等,可以考虑到其他已安装的应用程序和基本操作系统,自定义 apache 的文件位置和配置。
  2. 除了从基于供应商的安装程序安装它之外,始终可以选择从源代码构建和安装它。从源文件安装 Apache 是独立于平台的,适用于所有操作系统。

apache Web 服务器是一个模块化应用程序,管理员可以根据其要求选择所需的功能并安装不同的模块。7hR码友部落

所有模块都可以编译为动态共享对象(DSO 是一个对象文件,可以在多个应用执行时共享),这些对象文件与主 apache 文件分开存在。强烈建议使用 DSO 方法,它使从服务器配置中添加/删除/更新模块的任务非常简单。7hR码友部落

安装 Apache:Linux 平台

在红帽或基于 rpm 的系统上7hR码友部落

如果您使用的是基于 Linux 发行版(即红帽、Fedora、CentOs、Suse)的 rpm(RedHat 包管理器是用于在 Linux 系统上安装应用程序的实用程序),则可以通过供应商特定的包管理器安装此应用程序,也可以直接从可用源 tarball 构建 rpm 文件。7hR码友部落

您可以通过默认的包管理器安装 Apache,该管理器可用于所有基于红帽的发行版,如 CentOs、红帽和 Fedora。7hR码友部落

[[email protected] ~]# yum install httpd

使用以下命令可以将 apache 源 tarball 转换为 rpm 文件。7hR码友部落

[[email protected] ~]# rpmbuild -tb httpd-2.4.x.tar.bz2

在服务器上安装 -devel 包,才能从源.rpm创建文件。7hR码友部落

将源文件转换为 rpm 安装程序后,可以使用以下命令安装 Apache。7hR码友部落

[[email protected] ~]# rpm –ivh httpd-2.4.4-3.1.x86_64.rpm

安装后,服务器不会自动启动,要启动服务,您必须在 Fedora、CentOs 或红帽上使用以下任何命令。7hR码友部落

[[email protected] ~]# /usr/sbin/apachectl start

[[email protected] ~]# service httpd start

[[email protected] ~]# /etc/init.d/httpd start

从源安装 Apache

从源安装 apache 需要在服务器上安装 +devel 包。.你可以找到最新的可用版本的Apache,你可以在这里下载它。下载源文件后,将它移动到 /usr/本地/src 文件夹。7hR码友部落

[[email protected] ~] cd /usr/local/src

[[email protected] ~] gzip -d httpd-2.2.26.tar.gz

[[email protected] ~] tar xvf httpd-2.2.26.tar

[[email protected] ~] httpd-2.2.26

若要查看 Apache 可用的所有配置选项,可以使用 ./配置 help 选项。最常见的配置选项是 [前缀][安装目录名称]。7hR码友部落

[[email protected] ~]./configure --help

[[email protected] ~]./configure –prefix=/usr/local/apache –enable-so

[[email protected] ~] make

[[email protected] ~] make install

上面的示例显示了具有 DSO 功能的 /usr/本地/apache 目录中的 Apache 编译。"启用"选项可以通过 DSO 机制在运行时加载所需的模块以 apache,而无需重新编译。7hR码友部落

安装完成后,您可以使用您喜爱的浏览器浏览 Web 服务器默认页面。如果在服务器上启用了防火墙,则必须对操作系统防火墙上的端口 80 进行异常。可以使用以下命令打开端口 80。7hR码友部落

iptables -I INPUT -p tcp --dport 80 -j ACCEPT

服务 iptable 保存7hR码友部落

您可以通过浏览服务器 IP 地址查看默认的 Apache2欢迎屏幕。7hR码友部落

 7hR码友部落

Apache Tutorials for Beginners7hR码友部落

什么是虚拟主机?

Apache Web 服务器可以在同一服务器上承载多个网站。您不需要为每个网站单独的服务器计算机和 apache 软件。这可以使用虚拟主机或VHost的概念实现。7hR码友部落

要在 Web 服务器上托管的任何域都将在 apache 配置文件中具有单独的条目。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

 7hR码友部落

Apache 虚拟主机的类型

  1. 基于名称的虚拟主机
  2. 基于地址或基于 IP 的虚拟主机和.

基于名称的虚拟主机

基于名称的虚拟主机用于在单个 IP 地址上承载多个虚拟站点。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

为了配置基于名称的虚拟托管,您必须设置要接收所有所需网站的 Apache 请求的 IP 地址。您可以在 apache 配置(即httpd.conf/apache2.conf 文件中)中通过 NameVirutalHost 指令进行此操作。7hR码友部落

Apache 虚拟主机示例:

NameVirtualHost *:80

<VirtualHost 192.168.0.108:80>

ServerAdmin [email protected]

DocumentRoot /var/www/html/example1.com      

ServerName www.example1.com

</VirtualHost>

<VirtualHost 192.168.0.108:80>

ServerAdmin [email protected]

DocumentRoot /var/www/html/example2.com

ServerName www.mayoublog.com

</VirtualHost>

您可以根据需要添加尽可能多的虚拟主机。您可以使用:7hR码友部落

[[email protected] ~]#httpd –t
Syntax OK

如果配置文件的语法错误,它将引发错误7hR码友部落

[[email protected] conf.d]# httpd -t

Syntax error on line 978 of /etc/httpd/conf/httpd.conf:

Invalid command '*', perhaps misspelled or defined by a module not included in the server configuration

基于 IP 的虚拟主机

为了设置基于 IP 的虚拟托管,您需要在服务器上配置多个 IP 地址。因此,vhost apache 的数量将取决于服务器上配置的 IP 地址数。如果您的服务器有 10 个 IP 地址,您可以创建 10 个基于 IP 的虚拟主机。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

 7hR码友部落

 7hR码友部落

在上图中,两example1.com example2.com分配了不同的 IP,并且正在使用基于 IP 的虚拟托管。7hR码友部落

Listen 192.168.0.100:80

<VirtualHost 192.168.10.108:80>

ServerAdmin [email protected]

DocumentRoot /var/www/html/example1.com      

ServerName www.mayoublog.com

</VirtualHost>

<VirtualHost 192.168.10.109:80>

ServerAdmin [email protected]

DocumentRoot /var/www/html/example2.com

ServerName www.example2.com

</VirtualHost>

 7hR码友部落

运行 Php 文件需要什么 Apache?

在 Apache 上运行 Php 文件mod_php服务器上启用。它允许阿帕奇解释。Php 文件。它有 Php 处理程序,用于解释 apache 中的 Php 代码,并将其 HTML 发送到 Web 服务器。7hR码友部落

如果在mod_php启用了该文件,您将在 /etc/httpd/conf.d/目录中有一个名为 php.conf 的文件。您也可以使用:7hR码友部落

httpd -M | grep "php5_module"

输出将类似于:7hR码友部落

Apache Tutorials for Beginners7hR码友部落

阿帕奇中的 Php 处理程序

  • mod_php
  • 盖瑞
  • 快速奇
  • 苏普

mod_php是最古老的PHP处理程序,它使PHP成为apache的一部分,并且不调用任何外部PHP进程。默认情况下,此模块在每个 Linux 发行版存储库中安装,因此启用/禁用此模块非常简单。7hR码友部落

如果使用FastCGI作为 PHP 处理程序,可以设置多个版本的 PHP,以由服务器上的不同帐户使用。7hR码友部落

FastCGI,即mod_fastcgimod_fcgid的延伸,mod_fcgid CGI的高性能替代,即mod_cgi。它启动足够数量的 CGI 实例来处理并发 Web 请求。它还使用 suexec 支持不同的用户使用他们自己的 PHP 实例,并提高 Web 安全性。7hR码友部落

在 Apache 上运行红宝石mod_ruby需要启用。Apache 也可以通过 FastCGI 处理红宝石文件。在快速卡奇的帮助下,可以使用mod_fcgid红宝石。7hR码友部落

您还可以安装 apache 乘客并配置 Apache 以将其用于提供红宝石页面。7hR码友部落

(Phusion 乘客也称为 "乘客" 是一个免费的 Web 服务器模块, 旨在与 Apache 和 Nginx 集成 )7hR码友部落

在服务器上mod_ruby安装操作的步骤 -7hR码友部落

cd /tmp

wget http://www.mayoublog.com/archive/mod_ruby-1.2.6.tar.gz

tar zxvf mod_ruby-1.2.6.tar.gz

cd mod_ruby-1.2.6/                    

./configure.rb --with-apr-includes=/usr/include/apr-1

make

make install

如何使用阿帕奇运行 Ruby

我们必须将该模块mod_ruby Apache 配置,即 /etc/httpd/conf.d/ruby.conf,并添加以下行。7hR码友部落

负载模块ruby_module模块/mod_ruby.so7hR码友部落

如果您希望启用或禁用这些模块,则必须编辑 apache 配置文件,如果 Web 服务器已使用这些模块编译,则必须编辑 apache 配置文件并注释或取消注释这些模块。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

如何保护 Apache Web 服务器

保护您的 Web 服务器非常重要,这意味着允许其他人仅查看预期信息并保护您的数据并限制访问。7hR码友部落

这些是增强 Apache Web 服务器安全性的常见功能。7hR码友部落

1) 隐藏 Apache 版本和操作系统信息:

Apache 显示其版本和操作系统的名称错误,如下图所示。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

黑客可以使用此信息使用服务器或操作系统的特定版本中的公开漏洞发起攻击。7hR码友部落

为了防止 Apache 网络服务器显示此信息,我们必须修改7hR码友部落

apache 配置文件中可用的"服务器签名"选项。默认情况下,它是"开",我们需要设置它"关闭"。7hR码友部落

vim /etc/httpd/conf/httpd.conf
ServerSignature Off

ServerTokens Prod

我们还设置了"服务器托肯产品",告诉 Web 服务器只返回 apache 并禁止 OS 主要和次要版本7hR码友部落

修改配置文件后,必须重新启动/重新加载 apache Web 服务器才能生效。7hR码友部落

service httpd restart

Apache Tutorials for Beginners7hR码友部落

2) 禁用目录列表

如果文档根目录没有索引文件,默认情况下,apache Web 服务器将显示文档根目录的所有内容。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

通过 Apache 配置文件中提供的"选项指令",可以关闭特定目录的此功能。7hR码友部落

<Directory /var/www/html>

    Options -Indexes

</Directory>

Apache Tutorials for Beginners7hR码友部落

 7hR码友部落

3) 禁用不必要的模块

禁用所有不使用的不必要的模块是一种好的做法。您可以查看 apache 配置文件中可用的已启用模块列表 -7hR码友部落

[[email protected] ~]#httpd –M

perl_module (shared)

php5_module (shared)

proxy_ajp_module (shared)

python_module (shared)

ssl_module (shared)

许多列出的模块可以禁用likemod_imap、mod_include mod_info mod_userdir、mod_autoindex,因为它们几乎不被任何生产 Web 服务器使用。7hR码友部落

vi /etc/httpd/conf/httpd.conf

#LoadModule auth_digest_module modules/mod_auth_digest.so

注释模块后,保存该文件。7hR码友部落

使用以下命令重新启动 apache 服务。7hR码友部落

/etc/init.d/httpd restart

4) 限制对 Web 根目录外文件的访问

如果希望确保 Web 根目录外部的文件无法访问,则必须确保该目录在 Web 服务器配置文件中受"允许"和"拒绝选项"的限制。7hR码友部落

<Directory/>

Options None

AllowOverride None

Order deny,allow

Deny from all

</Directory>

一旦限制 Web 根直接操作之外的访问,您将无法访问 Web 服务器上任何其他文件夹上的任何文件,您将获得 404 返回代码。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

5) mod_evasive反驳 DoS 攻击

如果您想保护您的 Web 服务器免受 Dos(即拒绝服务)的攻击,则必须启用该模块mod_evasive。它是第三方模块,可检测 Dos 攻击并防止攻击造成尽可能多的伤害,如果离开运行其路线,它会造成尽可能多的伤害。它可以在这里下载。7hR码友部落

下载上述文件7hR码友部落

6) 使用mod_security增强 apache 安全性

此模块可用作 Apache 的防火墙,并允许您实时监控流量。它还可防止 Web 服务器进行暴力攻击。该mod_security模块可以与分发的默认包管理器一起安装。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

7) 限制请求大小

Apache 对可能导致 DoS 攻击的 http 请求的总大小没有任何限制。您可以使用目录标记限制 Apache 指令"限制请求域"的请求大小。该值可以根据您的要求设置从 0 到 2 GB(即 2147483647 字节)的任何东西。7hR码友部落

<Directory "/var/www/html/uploads">

   LimitRequestBody 512000

</Directory>

 7hR码友部落

Apache 日志格式

Apache 日志提供详细信息,帮助检测服务器的常见问题。7hR码友部落

为了创建访问日志,mod_log_configmodule启用了该日志。7hR码友部落

apache 配置文件中可用的三个指令,即

  • 传输日志:创建日志文件。
  • 日志格式 :指定自定义格式。
  • 自定义日志 : 创建和格式化日志文件。

传输日志指令在 apache 配置文件中可用,它根据设置的参数旋转虚拟主机日志文件。7hR码友部落

<VirtualHost www.example.com>

  ServerAdmin [email protected]

  DocumentRoot /usr/www/example/httpd/htdocs/

  ServerName www.example.com

  ServerAlias example.com www.example

  ErrorLog /usr/www/example/httpd/logs/error_log

  TransferLog/usr/www/example/httpd/logs/accesslog

  CustomLog /usr/www/example/httpd/logs/accesslog combined

</VirtualHost>

两种类型的 Apache 日志格式

  • 常见日志格式
  • 组合日志格式。

您可以通过编辑 apache 配置文件(即 apache2.conf(Debian/ubuntu)或 httpd.conf(基于 rpm 的系统)文件来启用它们7hR码友部落

常见日志格式

LogFormat "%h %l %u %t "%r" %>s %b" common

CustomLog logs/access_log common

由 Apache 生成的通用日志7hR码友部落

[Wed Oct 11 14:32:52 2000] [error] 
[client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

组合日志格式

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"" combined

CustomLog log/access_log combined

这里7hR码友部落

  • %h 是远程主机
  • %l 是由标识确定的用户的标识
  • %u 是 HTTP 身份验证确定的用户名
  • %t 是服务器处理请求的时间。
  • %r 是来自客户端的请求行。("获取 / HTTP/1.0")
  • %>s 是从服务器发送到客户端的状态代码(500、404 等)
  • %b 是客户端响应的大小(以字节为单位)
  • 引用者是链接到此 URL 的页面。
  • 用户代理是浏览器标识字符串。

由 Apache 生成的组合日志:7hR码友部落

199.187.122.91 - - [06/Mar/2014:04:22:58 +0100] "GET /robots.txt HTTP/1.1" 404 1228 "-"7hR码友部落
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)"7hR码友部落
自定义日志为服务器上的每个虚拟主机创建单独的日志文件。需要在配置文件的虚拟主机部分中指定它。7hR码友部落

您可以看到下面提到的虚拟主机配置,生成的日志将为该虚拟主机进行自定义,并且格式将组合在一起。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

配置您的第一个生产 Web 服务器

1. 要有一个正在运行的生产 Web 服务器,您需要一个运行 Linux/Unix、Windows、MacOS 等的专用节点(物理/虚拟或云实例)。7hR码友部落

2. Web 服务器必须具有直接网络连接并配置了静态IP 地址。7hR码友部落

3. 它需要运行网页所需的所有模块。如果 Web 服务器处理 PHP 页面,它需要启用 PHP 模块。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

  1. 它还需要配置并运行良好的防病毒应用程序,以确保 Web 服务器免受恶意软件或病毒攻击。您还需要机制来定期更新配置的防病毒/反恶意软件应用程序,而无需任何手动干预,以便从它们获得最大的好处。
  2. 如果您的 Web 服务器上要托管数百个域,则必须为每个域实现对文件系统配额的限制、每个域可以创建的数据数据库数、每个域的电子邮件帐户数等。
  3. 如果您的 Web 服务器已设置为共享托管服务,则需要限制 Web 服务器上的用户。共享托管用户应具有最少的用户权限,这样他可能不会损坏重要文件并破坏整个服务器。Apache 不提供任何此类功能,需要不同的第三方应用程序,自定义操作系统来实现此目的。
  4. 如果要在 Web服务器上添加新域,它需要编辑数百个配置文件才能启用已添加域的所有功能。
  5. 如果其中一个托管域需要不同于其他域的 PHP 设置,则在核心 Apache Web 服务器中实现此设置非常复杂,并且在很大程度上需要自定义 Web 服务器。
  6. 生产 Web 服务器需要防火墙来阻止可能导致服务器负载过高的不需要的流量。使用命令行实现 IPTABLE 规则非常复杂。它需要核心 Linux/Unix 环境的专业知识来编写有效的防火墙规则来阻止不需要的流量。IPTABLE 基于网络过滤器模块;它是一个操作系统级防火墙,允许管理员为服务器上的传入/传出流量创建规则。
  7. 生产 Web 服务器需要几个不同的应用程序,如电子邮件,FTP文件上传,域名系统为停放的域。在核心 Linux/Unix 系统上管理所有这些应用程序需要有关相关技术的专业知识。

因此,可以说,管理多个域的 Web 服务器是一项非常复杂的任务,需要编辑数百个配置文件,自定义每个应用程序以满足所需的结果。对初学者来说,排除任何错过的配置都非常困难。7hR码友部落

使用 Cpanel 或类似软件的解决方案

Cpanel提供了一种图形化的方式来管理您的网络服务器。它旨在提供易于使用和配置的大规模托管服务。cPanel 减少了进入托管和 Web 服务器管理的技术障碍。它使复杂的任务更容易,它提供了许多有用和易于使用的Web界面,执行操作Web服务器所需的公共系统管理任务。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

cPanel 编译自己的软件版本。7hR码友部落

如果必须重新编译 Web 服务器(即普通 Linux 平台上的 apache,则必须手动选择/搜索所需的模块)。cPanel 提供 Easyapache 功能,这是一种基于脚本的 Web 服务器编译方法。7hR码友部落

Apache Tutorials for Beginners7hR码友部落

它不仅为您提供 Web 服务,还提供邮件、DNS、FTP 和 Web 应用程序所需的更多服务。7hR码友部落

需要基于核心 Linux/Unix 的托管专业知识的任务,如安装 SSL、使用不同的 PHP 模块重新编译 Apache、更新 Web Security、配置有效的 IPTABLE 规则、添加 ftp 用户、为每个域创建邮件帐户、使用防病毒扫描文档根目录和创建数据库,使用 cPanel 很容易完成。7hR码友部落

它提供了许多脚本来修复、安装和排除常见的管理任务。7hR码友部落

它提供了备份和还原功能,无需手动将文件复制到备份存储。如果要备份域,cPanel 将创建一个 tar 文件,其中包含文档根文件夹、电子邮件帐户和邮件、ftp 帐户、数据库、DNS 记录和其他应用程序。7hR码友部落

它还提供了一个健壮的文档,并且有一个非常大的用户社区,您可以在其中讨论和获得问题的解决方案。7hR码友部落

因此,可以说,cPanel 是使用所需功能管理 Web 服务器的最佳应用程序。它为您提供了易于使用的用于管理域的界面和避免管理核心 Web 服务器复杂性的机制。7hR码友部落

有许多竞争产品,如普莱斯克,ISPConfig,阿詹蒂,克洛索,开放面板,Zpanel等。7hR码友部落