らをた広島

食べ歩きブログ

Debian wheezy から jessieへアップグレードしたらApache2が起動しなくなった。

でび - 1
自分は仕事で使うサーバーを自宅に設置している。
知り合いから貰った古いWindowsのノートPCにDebianというLinuxをインストールしてサーバーマシンとして使っているのだ。
今回そのDebianがコードネームwheezy(7.8) から jessie(8.0)へアップグレードしたのでその手順を健忘録として残しておく。
自分はMacなのでいつものように純正ソフトのターミナルを起動。
Windowsの場合は一般的にはTera Termなのかな?
terminal
SSHでアクセスして

既存のパッケージを更新。
# apt-get update; apt-get upgrade

wheezyからjessieへsourcelessを書き換える。
# sed -i 's/wheezy/jessie/g' /etc/apt/sources.list

更新・アップグレード
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade

再起動
# reboot

バージョンの確認
# hostnamectl
自分の場合は
「 Static hostname: debian
Icon name: computer-laptop
Chassis: laptop
Machine ID: 4d8fe6ef8c700ec037b0d556534243ae
Boot ID: 5fd0a33135b543a4a91a88a91dab46a7
Operating System: Debian GNU/Linux 8 (jessie)
Kernel: Linux 3.16.0-4-586
Architecture: x86
と表示されてアップグレード成功だ。
でび - 2
とここまではとんとん拍子で鼻歌まじりに快調にやっていたのだがここから地獄がまっていた。
Apache2が起動しないのだ。
当然Webサーバーが稼働しない。
あれこれやっても結局原因はわからなかったので最終的にはApache2を一旦削除して再インストールすることにした。

・Apache2削除
# apt-get remove --purge apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapache2-mod-dnssd libapache2-svn
これで設定ファイルを含めてApache2の全てを消せるようだ。

・再びインストール。
# apt-get install apache2
「apache2.conf envvars magic mods-enabled sites-available
conf.d httpd.conf mods-available ports.conf sites-enabled」が新規ファイルとしてインストールされるので全部設定をやり直す。

プロダクト名の変更
# vi /etc/apache2/conf-enabled/security.conf
26行目:ServerTokens Prod

Perl をインストール
# aptitude -y install perl

ディレクトリ名のみでアクセスできるファイル名を設定
# vi /etc/apache2/mods-enabled/dir.conf
2行目:DirectoryIndex index.html index.cgi

コメントアウトし、CGIとして扱う拡張子を設定
# vi /etc/apache2/mods-enabled/mime.conf
219行目:AddHandler cgi-script .cgi .pl

CGIの許可設定
# vi /etc/apache2/sites-enabled/000-default.conf
13行目あたりに追記
たぐ - 1 (1)

有効化
# a2enmod cgid

Apache2再起動
# systemctl restart apache2

CGIテストページを作成して動作確認。
# vi /var/www/html/index.cgi

#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "\n\n";
print "
\n";
print "CGI Test Page";
print "\n
\n";
print "\n\n";

# chmod 705 /var/www/html/index.cgi
以下のようなページが表示されればOK。
でびあ - 1
PHPインストール
# aptitude -y install php5 php5-cgi libapache2-mod-php5 php5-common php-pear

PHPとして扱う拡張子を設定
# vi /etc/apache2/mods-enabled/mime.conf
220行目に追記:AddHandler php5-script .php

コメントアウトタイムゾーン設定
# vi /etc/php5/apache2/php.ini
884行目:date.timezone = "Asia/Tokyo"

Apache2再起動
# systemctl restart apache2

・ユーザーディレクトリ設定
ユーザーディレクトリ有効化
# a2enmod userdir

# vi /etc/apache2/mods-enabled/userdir.conf
6,7行目:AllowOverride All
      Options ExecCGI

コメント化
# vi /etc/apache2/mods-enabled/php5.conf
23行目:# php_admin_flag engine Off

Apache2再起動
# systemctl restart apache2

ここまででいったんユーザーディレクトリのCGIは稼働したのを確認。

ここでsuEXECを有効にすべく
# aptitude -y install apache2-suexec-custom

suEXEC有効化
# a2enmod suexec

これでユーザーディレクトリのCGIが動かなくなった。
何度やっても駄目で500エラーを吐く。
仕方なく再度Apache2を削除し最初からやり直しても駄目。
a2enmod suexecを実行しなくてもPHPをインストしなくてもユーザーディレクトリのCGIのみ駄目。
でびあん - 1
OS全てをインストールしなおせば治るのかもしれなかったがさすがに心が折れたのでここで断念。
幸いにもユーザーディレクトリでPHPは動いたので自分のサイトのCGIコンテンツを全てPHPに切り替えることで対応することにした。
でび - 3
毎度の事ではあるが
Debian GNU/Linuxのアップグレードは一筋縄ではいかない。
ひどいめに合うこともしばしばだがいずれにせよアップグレードはしていかないといけない。
でびあんの - 1
サーバー運営の基本中の基本であるがバックアップ機の準備とコンテンツの保存はきちんとやっておかないと泣いても泣ききれない事態になりかねない。
今回に関しては怪我の功名ではあるがPHPの勉強になったので結果的には良かったのかもしれないがこれで暫くは Debian GNU/Linux8をこのまま使っていこうと考えている。
debian_jessie
後日談ではあるが他のPCにjessie版Debian GNU/Linux を新規インストールして全く同様の設定(a2enmod suexec のみ未実行)をしていくとユーザーティレクトリでも問題なくCGIが動いた。
と言うことは今回の自分の症状はグレードアップした場合の不具合なのかも知れない。
二進も三進も行かなくなった場合は自分のように悪あがきせずとっとと初期化して素直にjessieを新規インストールするのがベストだろう。