UbuntuにApacheをインストール

UbuntuにApacheを入れたメモ。

パッケージを更新

sudo apt update

Apacheをインストール

sudo apt install apache2

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

状態の確認

sudo systemctl status apache2

常時起動

sudo systemctl enable apache2

設定ファイルの編集

モジュールを有効化

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

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

sudo mkdir public_html

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

# 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フォルダ以外にも置けるようにする

sudo apt install apache2-suexec-custom

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

sudo a2enmod suexec

Apacheを再起動

sudo systemctl restart apache2

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

ログの保存期間を変更

デフォルトは14日

sudo vi /etc/logrotate.d/apache2

##下記を変更
daily(monthlyなど)
rotate 14

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

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

cat /lib/systemd/system/apache2.service

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

[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

開いて編集、保存

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

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

sudo systemctl daemon-reload
sudo systemctl start apache2

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