あれ、なんかこのホスト遅いなあ。なぜだろう。
あれれれ?おかしいなあ。再起動してみるか (これが実は大失敗だった。 激遅でも動いているうちにバックアップを取っておくべきだった。)。 起動しない???あららら。あー。
WWWサーバーが死んだ。 どうもストレージがおかしかったけれど、 リトライしているうちに何とかなったので、深刻になるまで気が付かず、 突然死が訪れた模様。 以上は想像だけれど、もう目を覚さないので、 本当のところはもう (ちょっとやそっとでは) 分からない。
まあ、バックアップはしてあるはずだし、実はサーバーは二重制で、 今ではもう一方の方を前面に出しているので、授業対応とかには問題がないはず。
代替機種をWWWサーバーに仕立てないといけない。
という訳で久しぶりに Apache の相手だ。
Apache のバージョンの確認 |
httpd -v |
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つだ。
httpd.con をどう書き換えたか |
% diff httpd.conf.org httpd.conf 70a71,72 > # must uncomment (mk 2021/4/30) > LoadModule proxy_module libexec/apache2/mod_proxy.so 140a143,144 > # must uncommend (mk 2021/4/30) > LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so 184a189,191 > # must uncomment (2021/4/30, mk) > # https://sakura.ohhappy.jp/mac/1212 > LoadModule userdir_module libexec/apache2/mod_userdir.so 521a529,530 > # must uncomment (2021/4/30, mk) > Include /private/etc/apache2/extra/httpd-userdir.conf |
httpd-userdir.conf |
UserDir Sites Include /private/etc/apache2/users/*.conf <IfModule bonjour_module> RegisterUserSite customized-users </IfModule> |
<Directory "/Users/ユーザー名/Sites/"> Options Indexes MultiViews Require all granted </Directory> |
これら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日ほどそのことに気づかずにいた。
やれやれ。
まあ、ここに書いたことの記憶は新ただったので、割と早く復旧できた。
桂田 祐史