15 WWWサーバーが壊れた。仕立て直す。(Mac での apache の設定)

あれ、なんかこのホスト遅いなあ。なぜだろう。


あれれれ?おかしいなあ。再起動してみるか (これが実は大失敗だった。 激遅でも動いているうちにバックアップを取っておくべきだった。)。 起動しない???あららら。あー。


WWWサーバーが死んだ。 どうもストレージがおかしかったけれど、 リトライしているうちに何とかなったので、深刻になるまで気が付かず、 突然死が訪れた模様。 以上は想像だけれど、もう目を覚さないので、 本当のところはもう (ちょっとやそっとでは) 分からない。


まあ、バックアップはしてあるはずだし、実はサーバーは二重制で、 今ではもう一方の方を前面に出しているので、授業対応とかには問題がないはず。


代替機種をWWWサーバーに仕立てないといけない。

という訳で久しぶりに Apache の相手だ。

Apache のバージョンの確認
httpd -v
macOS sonoma に付属しているのは Apache/2.4.56 だとか。

which httpd とすると /usr/sbin/httpd と返ってくる。 これが実体のパス名だ。

この/usr/sbin/httpdにフルディスクアクセスの権限を与えておく、 のがおまじない。
[システム設定] [プライバシーとセキュリティ] [プライバシー] フルディスクアクセスを /usr/sbin/httpd に与える。

アクセスしやすいように、ターミナルで open /usr として Finder で /usr を開いて、サイドバーに追加しておいた。


Apache の起動、終了、再起動の仕方
sudo apachectl start

sudo apachectl stop

sudo apachectl restart

こうして Apache をスタートすれば、すぐに使えるはず。 確かめるには http://localhost/ にアクセスすると良い。 It works! とか能天気なことを言ってくる。よしよし。


つねに Apache を起動しておくように設定するには
sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

それから、WWWサーバーにする機械はスリープしないように設定する。 今回はこれは必要なかった (すでにやってあった)。


さて、バックアップしておいた Apache の設定ファイルを戻そう。 以下の3つだ。

これら3つのファイル、 今回はこれまで(ダウンしたサーバーで)使っていたファイルを無修正のままで使って、 特に問題なく動いた。だから実際には必要なかったが、 設定ファイルをいじったときは、 文法チェックをするのが良いとされている (以前これでひどい目にあったのだ。 つまらないスペルミスで時間を損した。)。

文法チェックをする
apachectl configtest

設定を変えたら再起動
sudo apachectl restart

さて、設定は一段落したので、 現在元気に動いているWWWサーバーからファイルをコピーする。
rsync -avuz どこか:www/ ~/Sites
少し時間がかかったが無事終了。これでバックアップありの状態に戻って一安心。


さて、これで外からアクセスしてちゃんと見えるかな?

あれ? http://ほすと のドメイン名/~吾輩のユーザー名Sites にアクセスできない。

しばらく迷走………結局はエラー・ログを見て解決した。

macOS で OS 付属の Apache を使う場合、ログは /var/log/apache2/access_log, /var/log/apache2/error_log に出力される。後者がエラー・ログだ。

新WWWサーバーの吾輩のホームディレクトリィは検索不可になっていたのが原因だった。 パーミッションのミス。よくあるやつね。

やれやれ。
chmod o+x ~
見えた、見えた。


さて、 http://ほすとのドメイン名/ で、 /Library/WebServer/Documents/ に置かれたデータが見えるはずなのだが、 それは古いバックアップしかなかった。 幸いほとんどは make で自動転送しているものなので、 色々 make しなおす。

毎回 /Library/WebServer/Documents/ と打つのは面倒なので、 シンボリック・リンクを張っておくか。
cd
ln -s /Library/WebServer/Documents htdocs

これで…大体OKかな。後はルーターの設定だけだ。


そうそう、忘れないうちに。
次回のために Apache の設定ファイルのバックアップを取っておく
cd /etc
sudo tar cfz ~吾輩/etc.apache2.tar.gz apache2
cd
upload etc.apache2.tar.gz

今回、過去の記録が役立った。それら記録へのリンクをまとめておく。 (主な内容はまとめてここに書いたことになる。)

あー、ログのローテートもあったね。しばらく放っておく。

(2024/6/29) 二日ぶりの研究室。ルーターに触れた。 久しぶりのルーターの設定なので結構手こずった。 (MacBook は Ethernet インターフェイスがないので、 USB←→Ethernet のアダプタを探さなくてはいけなくて、ちょっと面倒だった。) ともあれ、やっと WWWサーバーが復活した。結構日数がかかったね。

ついでにログのローテートの設定もやっておく。 ログを見ていると、色々なページが見られていることが分かって、 ちょっと楽しい。 おーい、そんな古いの読むなよ、とか。 素朴な疑問、2つあるWWWサーバーのうち、 それぞれどれくらいアクセスされているのかな。 自分としては古い方は予備サーバーのつもりなのだけど (だから今回はダウンしても、 そんなにシャカリキになって復旧作業をしなかったのだけど)、 検索エンジンでそちらが紹介されることが多いので、 もしかすると今でもアクセス多いのかな。

(2024/6/30) WWWサーバーと書いてきたけれど、WWW以外にもサービスを提供していて、 そちらの方のサービスも引き継いだら、 (速い Mac に変わったせいで) 大変快適になった。 なんとなく古いコンピューターを使い続けてしまうけれど (もったいない精神で壊れないと10年選手ということもあった)、 時々「古いから新しいのに交代」をさせないとダメだね。

(2024/7/2) あれ、インターナル・サーバー・エラー。 .htaccess の中のパス名が違うせいか (FreeBSD と Mac、OS が違うので、フルパスが違ってしまうのは仕方ない)。 パス名を抽出する。
find . -name .htaccess -exec grep -l パターン {} \;
うわー、たくさんある。


(2024/9/23追記) 魔がさして、 副 WWW サーバー (Mac) の macOS を、 Sequoia (macOS 15) にアップグレードしてしまった。 案の上、WWW サーバーがアクセス不可になった。 あろうことか、2日ほどそのことに気づかずにいた。 やれやれ。 まあ、ここに書いたことの記憶は新ただったので、割と早く復旧できた。

桂田 祐史