介绍
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