Apache的基本配置
简要概述
我对Apache进行了各种调查,只是简单地做了一下笔记。
我会写一些关于安装、配置和模块的内容。
由于我的知识还不够充分,如果有错误,请指正。
安装
安装有以下两种方法。
1. 从源代码编译安装。
2. 使用软件包进行安装。
从源代码进行编译
配置→编译→安装
例)
$ ./configure --prefix=/usr/local/apache --enable-module=ssl
以下是对上述内容的中文本地化解释:
–prefix=通过指定路径来设置安装目录。
–enable-module=ssl在编译中包含了一个名为ssl的标准模块。
详细信息请查看此处,Apache HTTP 服务器版本 2.0 的编译和安装。
使用包装
红帽公司的系列产品
# yum install httpd
Debian家族
# apt-get install apache2
Apache的配置
我主要会写关于设置文件和设置方法的内容。
设定文件
从源代码进行编译
这是主要的配置文件。还有其他的配置文件。
/usr/local/apache2/conf/httpd.conf
红帽公司
主要配置文件
/etc/httpd/conf/httpd.conf
包含辅助配置文件的目录
/etc/httpd/conf.d
Debian系统
主要配置文件
/etc/apache2/apache2.conf
辅助配置文件目录
/etc/apache2/
端口配置
/etc/apache2/ports.conf
设置步骤
书本的格式
以下是以以下形式进行描述的。
设定项目
ディレクティブ名 設定値
适用范围
<Files ファイル名> ... </Files>
<Directory ディレクトリ名> ... </Directory>
<Location URL> ... </Location>
由于设置指令非常冗长,建议参考此链接进行设置:
httpd.conf文件的设置
httpd.conf文件的设置指令
阿帕奇的控制
关于CLI系统控制方法。
SysVinit 系统。
# /etc/init.d/httpd start //Debianではapache2
systemd系统
# systemctl start httpd.service //Debianではapache2
apachectl 可执行控制 Apache HTTP 服务器
# apachectl start
以下是 apachectl 的子命令:
・start:启动
・stop:停止
・restart:重新启动
・graceful:安全重启
・reload:重新加载配置文件
・configtest:配置文件语法检查
模块
我正在编写关于模块集成、显示等方面的内容。
模块列表
非常多,所以可以参考外部网站。
模块列表 – Apache HTTP 服务器版本 2.4
模块将被安装在/usr/lib/httpd/modules等位置。
要加载模块,请在httpd.conf中使用LoadModule指令进行指定。
例)
LoadModule ssl_module modules/mod_ssl.so
正在加载ssl模块。
嵌入方式 ɡrù ɡshì)
在安装Apache后,要将模块集成进去,可以使用apxs命令。
以下是将mod_hoge模块作为DSO编译并安装的步骤。
有关apxs命令的选项,请参考此链接。
$ sudo apxs -i -a -c mod_hoge.c
随后,在httpd.conf中添加LoadModule指令。
LoadModule hoge_module modules/mod_hoge.so
在编译Apache时,也可以通过使用–configure选项将模块静态地集成。
显示模块
已嵌入模块
# httpd -l //RedHat
$ sudo apache2 -l //Debian
有效无效 – wú
# httpd -M // 組み込みモジュールとDSOモジュールの一覧。設定ファイルの文法チェック
$ sudo a2enmod //利用可能なモジュールを表示し、対話的にモジュールを有効化する
$ sudo a2dismod //モジュールの無効化
需要重新启动Apache才能应用更改。
访问认证
可以使用基本认证(BASIC认证)和摘要认证,还可以通过IP地址和主机名进行访问控制。
基本认证
<Directory "/var/www/html/hoge">
AuthType Basic
AuthName "ダイアログに出力されるメッセージ"
AuthUserFile /etc/httpd/conf/htpasswd
Require valid-user
</Directory>
当指定为 require valid-user 时,所有列在密码文件中的用户都将被允许访问。
当列出用户名时,仅指定用户将被允许访问。
要设置用户名和密码,请使用htpasswd命令。
手册页:htpasswd
另外,也可以进行团队认证。
摘要认证
<Directory "/var/www/html/digest-hoge">
AuthType Digest
AuthName "digest-hoge"
AuthUserFile /etc/httpd/conf/htdigestfile
Require valid-user
</Directory>
※AuthName用于指定验证领域。如果这个不正确,就无法进行验证。
使用htdigest命令来设置摘要认证的用户名和密码。
htdigest – 管理摘要认证的用户文件
基于主机的访问
使用Require指令进行访问控制。
由authz_host_module模块提供。
※通过Order、Allow和Deny进行访问控制已不再推荐使用。
文件格式
Require エンティティ [値...]
由于易于阅读,虽然不是Apache官方的推荐,但可以参考此Require指令。
虚拟主机
通过使用虚拟主机,可以在一台服务器上管理多个网站。
有基于名称和基于 IP 的虚拟主机。
基于名称的虚拟主机
设置一个IP地址和多个域名。
//1つ目
<VirtualHost *:80>
ServerName web.hoge.jp
ServerAdmin web@web.hoge.jp
DocumentRoot /var/www/hoge
</VirtualHost>
//2つ目
<VirtualHost *:80>
ServerName www.example.net
ServerAdmin web@example.net
DocumentRoot /var/www/example
</VirtualHost>
基於IP的虛擬主機
設置多個IP位址和多個域名。
在Listen指令中指定IP位址。
Listen 192.168.1.10:80
Listen 192.168.1.11:80
===省略===
//1つ目
<VirtualHost 192.168.1.10:80>
ServerName web.hoge.jp
ServerAdmin web@web.hoge.jp
DocumentRoot /var/www/hoge
</VirtualHost>
//2つ目
<VirtualHost 192.168.1.11:80>
ServerName www.example.net
ServerAdmin web@example.net
DocumentRoot /var/www/example
</VirtualHost>
其他
SSL/TLS 可以被理解为“安全套接层/传输层安全协议”。
SSL/TLS强加密
搭建Apache2.4以进行HTTPS通信的环境配置步骤和注意事项
代理服务器
尝试将Squid用作反向代理