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