UbuntuにApacheをインストール

UbuntuにApacheを入れたメモ。

パッケージを更新

Terminal window
sudo apt update

Apacheをインストール

Terminal window
sudo apt install apache2

(ファイアーウォールの設定はさくらのパケットフィルターで設定したので今回は省いた)

状態の確認

Terminal window
sudo systemctl status apache2

常時起動

Terminal window
sudo systemctl enable apache2

設定ファイルの編集

モジュールを有効化

Terminal window
sudo a2enmod userdir
sudo a2enmod include
sudo a2enmod cgid
sudo a2enmod rewrite
sudo systemctl restart apache2

ユーザーホームに公開用ディレクトリを追加

Terminal window
sudo mkdir public_html

Ubuntuの設定ファイルは分かれているので注意

Terminal window
# sudo vi /etc/apache2/conf-enabled/security.conf
ServerTokens Prod ←変更
# sudo vi /etc/apache2/mods-enabled/dir.conf
DirectoryIndex index.html index.htm ←必要な分だけ追加
# sudo vi /etc/apache2/apache2.conf
ServerName [domain name] ←70行目「#ServerRoot "/etc/apache2"」のあとくらいに追加
ServerSignature Off ←追加
## htmlでvideoタグを使用する場合は状況に応じて下記を追加
AddType video/ogg .ogv
AddType video/mp4 .mp4
AddType video/webm .webm
# sudo vi /etc/apache2/sites-enabled/000-default.conf
ServerAdmin webmaster@mailaddress
## <VirtualHost *:80> </VirtualHost>内に記述
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/[username]/public_html>
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</IfModule>
<IfModule mod_mime.c>
AddHandler cgi-script .cgi
</IfModule>
# sudo vi /etc/apache2/envvars
# Apacheの実行ユーザーを変更
#export APACHE_RUN_USER=www-data
#export APACHE_RUN_GROUP=www-data
export APACHE_RUN_USER=[username]
export APACHE_RUN_GROUP=[username]

CGIファイルをcgi-binフォルダ以外にも置けるようにする

Terminal window
sudo apt install apache2-suexec-custom
# sudo vi /etc/apache2/suexec/www-data
2行目のpublic_html/cgi-binをドキュメントルートに変更
sudo a2enmod suexec

Apacheを再起動

Terminal window
sudo systemctl restart apache2

ブラウザでアクセスしてウェルカムページが表示されれば完了

ログの保存期間を変更

デフォルトは14日

Terminal window
sudo vi /etc/logrotate.d/apache2
##下記を変更
daily(monthlyなど)
rotate 14

SSH接続から抜けるとApacheが停止してしまう場合

ブラウザからアクセスできなくなる場合、下記を参照

Terminal window
cat /lib/systemd/system/apache2.service

下記設定内容のRestart=on-abortを書き換える

Terminal window
[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
Documentation=https://httpd.apache.org/docs/2.4/
[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
PrivateTmp=true
Restart=on-abort
[Install]
WantedBy=multi-user.target

開いて編集、保存

Terminal window
## sudo vi /lib/systemd/system/apache2.service
Restart=on-abort ←alwaysに変更

設定ファイル際読み込み、Apache再起動

Terminal window
sudo systemctl daemon-reload
sudo systemctl start apache2

SSH接続から抜けてもブラウザアクセスできることを確認