Raspbian上的Apache2配置
以下是在Raspberry Pi 3上安装Apache2和PHP时的配置备忘录。
由于树莓派的操作系统是Raspbian,它是Debian系列的,因此在Debian或Ubuntu上搜索通常都能找到大部分解决方案。
安裝
$ sudo apt-get install apache2
Apache的启动、停止、重启
# 起動
$ sudo service apache2 start
# 停止
$ sudo service apache2 stop
# 再起動
$ sudo service apache2 restart
必须重新启动才能应用配置文件更改。
关于设置文件
设置文件将被创建在/etc/apache2目录下。
最初,首先加载/etc/apache2/apache2.conf配置文件。
下一步会附加读取/etc/apache2/conf.d目录下的配置文件。
虚拟主机的配置文件位于/etc/apache2/sites-available目录中。
模块的配置文件位于/etc/apache2/mods-available目录中。
虚拟主机和模块的设置实际上是通过*-enabled目录中的符号链接来加载的,而不是*-available目录。要使设置生效,只需创建所需设置的符号链接即可。
配置文件的结构
在每一行中描述称为指令(Directives)的配置内容。在部分容器(Section Container)内编写的配置将仅在该部分容器内有效。
<Directory "/var/www/html"> # セクションコンテナ
#Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
设置端口号
可以通过以下方法来设置Apache监听的端口号。
Listen 80 # Apacheが待ち受けるポート番号
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
<VirtualHost *:80>
# (略)
</VirtualHost>
管理者的电子邮件地址设置
<VirtualHost *:80>
ServerAdmin hoge@gmail.com
# (略)
</VirtualHost>
设置服务器名称
在/etc/apache2/conf.d目录下创建一个新的服务器名专用的设置文件,命名为servername。
ServerName www.hoge.jp:80 # エラー時に表示されるサーバ名とポート番号
UseCanonicalName On # Onにするとサーバ名としてServerNameの値を使う
编写一个配置以读取已创建的配置文件。
Include conf.d/servername
设置文档根目录
网络服务器拥有独立的根目录,可在其中放置HTML文件等。该网络服务器的根目录被称为文档根目录。
<VirtualHost *:80>
# /var/www/htmlディレクトリをドキュメントルートとする設定
DocumentRoot /var/www/html
</VirtualHost>
错误日志设置
Apache2系的错误默认输出到/var/log/apache2/error.log文件中。
如果想要更改文件名等内容,请修改以下设置。
ErrorLog ${APACHE_LOG_DIR}/error.log
${APACHE_LOG_DIR} 的配置写在 /etc/apache2/envvars 文件中。
设置索引文件
当在Web浏览器的URL栏中键入目录并打开页面时,我想要打开预设的文件。
例如,若要打开index.html文件,需要添加如下指令。
DirectoryIndex index.html index.htm # 左のものが優先される
不显示文件列表
当在WEB浏览器的URL栏中指定目录并打开页面时,会显示文件列表。我想要禁用这个功能。
如果/var/www/html是根目录的话,并且在根目录下的所有页面都想要做到这一点,可以添加以下指令。
<Directory /var/www/html>
Options Indexes FollowSymLinks
</Directory>
設置錯誤頁
当发生404错误时,希望显示一个专用的特殊页面。请按照以下方式添加指令:
<Directory /var/www/html>
# 404エラーのとき、/error/404.htmlを表示する
ErrorDocument 404 /error/404.html
ErrorDocument 403 /error/403.html
<Directory>
我想要引用根目录以外的文件。
当我不想将所有文件放在根目录时,可以通过设置别名将目录显示为存在于根目录中。
# /etc/jquery/ディレクトリを、/jquery/と書いてアクセスできる。
Alias /jquery/ "/etc/jquery/"
<Directory /etc/jquery/>
Require all granted
</Directory>
通过这样做,就可以在HTML文件中写出如下内容。
<script type="text/javascript" src="/jquery/jquery-3.1.1.min.js"></script>
设置摘要认证
首先,使用htdigest命令创建摘要文件。
如果将文件名设置为.htdigest,RealmName设置为领域名称,用户名设置为Aoba,密码设置为zoizoizoi的话,
$ sudo htdigest -c /var/www/html/.htdigest 'RealmName' Aoba
Adding password for Aoba in realm RealmName.
New password:zoizoizoi
Re-type new password:zoizoizoi
下一步,启用摘要认证模块。
$ sudo a2enmod auth_digest # 有効化する
$ sudo a2dismod auth_digest # 無効化する
写下启用摘要认证的目录配置。
<Directory /var/www/html>
AuthType Digest
AuthName "RealmName" # レルム名
AuthUserFile /var/www/html/.htdigest
Require valid-user
</Directory>
文字编码的设置
通常情况下,应根据HTTP请求和响应的标头信息来确定应该使用哪种字符编码进行解码,因为在Apache配置中指定可能会导致乱码问题,所以最好不要指定。
# AddDefaultCharset UTF-8 # コメントアウトするか
AddDefaultCharset off # offにする