年末から再構築を開始していた ubuntu18.04LTS server に、とうとう apache をインストールしました。目的は、LANの内部で sftp や samba に頼らずにブラウザでファイルを参照することです。これが上手くゆけば、バックグラウンドジョブの進捗状況をスマホやタブレットのブラウザで確認することができるようになります。
まずは sudo apt install apache2 でパッケージをインストールしました。この時点で、ブラウザにサーバーのIPアドレスを入力すると、元々apacheが準備してくれていたindex.html が表示されるようになります。
続いて、/etc/apache2/sites-available/000-default.conf を編集します。そのまま編集して動かなくなったら困るので、コピーをとります。sambaの支配下のディレクトリに 001-www.conf という名前でコピーしてから、
ln -s ${SAMBA_DIR}/apache_ctl/001-www.conf /etc/apache2/sites-available/001-www.conf
と長いシンボリックリンクを作成しました。これにより、外部のテキストエディターでも作業ができるようになります。そもそも/etc の下だと sudo でないと作業できないし、server だから vi みたいなエディターしか使えないし、色々大変です。
その後、
sudo a2dissite 000-default.conf
sudo a2ensite 001-www.conf
sudo systemctl reload apache2
として、元々の000-default のリンクを切って、001-wwwのリンクを形成しました。変更箇所ですが、いろいろ試したのですが、結局
<virtualhost :*.80> DocumentRoot /home/user/work_dir <Directory "/home/user/work_dir"> Require all granted Options all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </virtualhost>
と、virtualhost タグの中でDocumentRootを変更したのと、 Directory タグを付け加えただけとなりました。ServerAdmin とかは結局指定しなくても良いみたいです。
これで work_dir 下のファイルにアクセスできるようになったのですが、
1)正常に表示されるファイル
2)文字化けするファイル
3)「403 Forbidden」エラーが発生するファイル
が混在するようになりました。
3)のファイルに共通することを調べてみると、パーミッションが -rwxrwx--- みたいに、その他ユーザーに対してアクセス権限が与えられていないものばかりでした。新旧のファイル全てのアクセス権限を書き換えるのも手間なので、APACHE_RUN_USER であるところの www-data というシステムユーザーを自分のグループに追加することにしました。APACHE_RUN_USER を自ユーザーに変更することもできるのだそうですが、少し気持ち悪いので...。
adduser www-data user-group
ubuntu では adduser というコマンドが使えます。一般的には usermod コマンドを使うようです。
これで3)の問題は解消されました。あとは2)の文字化けの問題です。
HTML文書で<meta>タグにcharsetをちゃんと指定してあるものは正常に表示されているようです。これは想定内。
しかし<meta>タグを付加していないHTMLのうち、奇妙なことにShiftJISやEUCを使用しているものの方が正常に表示されているのでした。まぁ面倒くさいけどHTML文書なら全て<meta>タグを付けて回ることにしましょう。ルールですから。
しかし、プレーンテキストの方が困っています。いまどき、わざわざUTF(-8)以外のロケールで書き込みするわけにも行きません。インプリシットにUTF-8を正常に表示する方法を探して envvars や charset.conf を色々変更してみましたが上手くゆきませんでした。仕方がないので crontab で数分おきに nkf でコード変換してやろうかと考えているところです。