apache2

APACHE2

自分でホームページなどを構築するには必要な知識である。

1 configuration

/etc/apache2/apache2.confを編集して port number, document root, modules, log/files, virtual host などを構築する。httpd.confはもは や使われない。

1.1 conf-available

このディレクトリは利用可能な設定ファイルを含む。(以前に /etc/apache2/conf.dにあったファイル)

1.2 conf-enabled

/etc/apache2/conf-available内ファイルへのシンボリックリンクを保持

1.3 envvars

Apache2 環境変数が設定

1.4 mods-available

ロードモジュールと設定ファイル

1.5 mods-enabled

/etc/apache2/mods-available内ファイルへのシンボリックリンクを保持

1.6 ports.conf:

どのTCPポートをリッスンしているか

1.7 sites-available

仮想ホスト用の設定ファイル( 仮想ホストにより複数のサイトに設定できる)

1.8 sites-enabled:

/etc/apache2/sites-available directoryへのシンボリックリンク

1.9 magic:

MIMEタイプを決定するための指示(拡張子のようなもの)

2 Basic settings

2.1 VirtualHost directive(単一のホストとしてそのまま使える)

を追加の Virtual Host用 template として使える。

  • default virtual host を modify するには sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/yukito.conf(たとえば)としこれを編集する。
  • ServerAdmin directive はサーバーの管理者に知らせるためのe-mail addressでdefaultはwebmaster@localhostとなっている。これは自分のアド レスに変更しないとエラー通知がこない。
  • ServerName directiveはoptionalでどのFQDNに応答すべきかを特定する。 defaultのVirtualHostでは「無い」。  よって別のVirtualHostの serverName directive に match しない全てのリクエストに答える。

 

  • ouryouzi.myvncサーバーにhost したいなら virtual host  の構成ファイル 中の ServerName directiveは ouryouzi.myvnc.com とすべきで、この値を  /etc/apache2/sites-available/yukito に加える。
  • DocumentRoot directiveは site を作りあげているファイルの場所で defaultは /var/www/etc/apache2/sites-available/000-default.conf で 指定されているように、/var/www/html.
  • /etc/apache2/sites-enabled のシンボリックリンクがavailable sitesを指 し示す。
  • sudo a2ensite yukito で、サイトの構成ファイルが /etc/apache2/sites-available/yukito であるときリンクを生成する。
  • sudo systemctl restart apache2.service(or wajig restart apache2)
  • a2dissite でsites disableできる。

2.2 Default Settings:

  • virtual host setting で定義されていないものはdefault(以下)となる。
  • Directory Index(…./ とリクエストした時でる規定のページ。) http://www.???/this.directory/ をリクエストしたら directory index page が存在したらこれを出すがさもなければserver-generates directory list がでて、index-optionが特定される。両者ともなければ Permission Denied pageがでる。サーバーはdirectory index directive にリストされたファイルを見つけて最初のものを返す。何も見出せず options indexがセットされていたらHTMLformat でリストを作り、返す。 apache2.conf default値は"index.html index.cgi index.pl index.php index.xml"だからこれらとマッチしたファイルを見つけたらその最初が表 示される。
  • Error Document directiveを利用すると特定のエラーイベントに使用する ファイルを指定できる。例えば存在しないリソースにリクエストしたら4 04エラーがおこり/usr/share/apache2/error/HTTPNOTFOUND.html を表 示させる。サーバーのdocument root には無いがaliasが /etc/apache2/apache2.confにあり上記にredirectする。grep ErrorDocument /etc/apache2/apache2.confでdefault error documentを見 ることができる。
  • transfer logを /var/log/apache2/access.log に書く。 略
  • いくつかのオプションはサーバー毎でなくディレクトリー毎に決められる。
    <Directory /var/www/mynewsite>
     .........
    </Directory>
    

    Directory 内のoptionsは
       ExecCGI(危険)
       Includes(htmlに他ファイルを含める)
       IncludesNOEXEC
       Indexes
       Multiview
       SymlinksIfOwnerMatch

3 httpdデーモン構成

いじる必要は無さそう

  • LockFile :
  • PidFile:プロセスID(pid)を記録するファイル
  • User:デフォルト値は "www-data"(サーバーのアクセス権)
  • Group:デフォルト値は "www-data"

4 Apache2 Modules

  • モジュールの基本セットは、コンパイル時にapache2に含まれていて、 LoadModuleディレクティブを使っていつでも追加することができる。
  • 例えばMySQLの認証モジュールを
    sudo apt install libapache2-mod-auth-mysql
    sudo a2enmod auth_mysql
    sudo systemctl restartapache2.service(init.dではない)
    
  • Similarly, a2dismod will disable a module:
    sudo a2dismod auth_mysql
    sudo systemctl restart apache2.service
    

5 HTTPS設定

  • modsslモジュールはapache2-commonパッケージで利用可能
  • sudo a2enmod sslで moduleを有効にする。 /etc/apache2/sites-available/default-ssl.confに設定ファイル。 ssl-certパッケージによって生成された証明書とキーを使用
  • sudo a2ensite default-sslでHTTPS用にApache2を設定
  • sudo systemctl restart apache2.service で再起動

togawareによると

$ wajig install apache2 openssl
$ sudo mkdir /etc/apache2/ssl
$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf \
                     /etc/apache2/ssl/certificat.pem
$ sudo mv /etc/apache2/ssl/certificat.pem \
                     /etc/apache2/ssl/apache.pem
$ sudo a2enmod ssl
$ cd /etc/apache2/sites-available
$ sudo cp default ssl

sslを編集。

NameVirtualHost *:443
<VirtualHost *:443>
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/apache.pem
        ServerName host.name.specified.in.certificate.creation

Edit default to add *:80.

a2ensite ssl

Author: ouryouji

Created: 2019-07-29 月 16:27

Emacs 24.5.1 (Org mode 8.2.10)

Validate