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にする
广告
将在 10 秒后关闭
bannerAds