Mの更新(Mountain Lion OSX10.8サーバ) その17 ~(チルダ)なしにする
2019.3.22 加筆。#######以下のことをまとめて短く記載する。
新規ユーザにWebページを提供する。
/Users/[ユーザ名]/ に
Sites というdirectory を作り、 test と1行エディタで書いて、index.html というファイル名にしてファイルを保存する。
sh-3.2# cd /Library/Server/Web/Data/Sites
で
sh-3.2# ln -s /Users/[ユーザ名]/Sites [ユーザ名]
としてエイリアスを作成する
lrwxr-xr-x 1 root wheel 19 3 22 14:28 [ユーザ名] -> Users/[ユーザ名]/Sites
というリンクができる
sh-3.2# cd /private/etc/apache2/extra に移動し
sh-3.2# cat httpd-userdir.conf を確認する。
httpd-userdir.conf に
Alias /[ユーザ名] /Users/[ユーザ名]/Sites/
の行を加える
apache2 を再起動
sh-3.2# /usr/sbin/apachectl restart
http://[ドメイン名]/[ユーザ名]
で index.html が開くことを確認する。
チルダ入でも同様であることを確認する。
##########################################
各ユーザのページのURLには~(チルダ)をつける必要がある。この~がなくても良いようにするためには;
1) .conf に加筆する
2) デフォルトのトップページのあるdirectory にエイリアスを置く(シンボリックリンクを張る)
という2つの方法がある。
1)は;
/private/etc/apache2/extra/httpd-userdir.conf
の
#
UserDir Sites のあとに
#Could be accessed to Sites without ~.
AliasMatch ^/([^/]+)/(.*) /Users/$1/Sites/$2
AliasMatch ^/([^/]+) /Users/$1/Sites/
を書き加える。加筆の3行目はURLの最後に / が付いていなくてもOKとするためだ。これだとすべてのユーザに対応できる。
しかし、このままだ とhttp://[ドメイン名] でデフォルトのページが開かない。Forbiddenとなる。
デフォルトのトップページを有効にするためには、これに代わってエイリアスの設定をするのがいいようだ。
Alias /[ユーザ名] Users/[ユーザ名]/Sites/
の行を書き加えるとと可能になる。この場合、ユーザ毎の行を加筆する必要がある。ユーザの数が少なければこちらがいい。この場合、URL の最後に / がなくても問題ない。
したがって、hoge というユーザのためには /private/etc/apache2/extra/httpd-userdir.conf に
#Could be accessed to Sites without ~.
Alias/hoge Users/hoge/Sites/
を書き加える。これだとURL の末尾に / がなくてもかまわない。これは以下の2)と同じことだ。
2)は;
サーバのデフォルトのページが /Library/Server/Web/Data/Sites/Default 内のページだからここにエイリアスファイルを置く方法だ。このDefault dirctory で;
$ ln -s Users/[ユーザ名]/Sites [ユーザ名]
とする。ユーザ毎にエイリアスを作成する必要がある。
確認すると、hoge というユーザについては;
$ pwd
/Library/server/web/data/sites/default
$ ls -al
lrwxr-xr-x 1 root wheel 17 Sep 9 09:37 hoge -> /Users/hoge/Sites
と確認される。この場合も、URL の末尾に / がなくても構わない。~をつけても問題ない。owner はroot のままで構わない。
どっちにしろ、ユーザ毎の.conf を作る必要があるので、2)の方法でいいのではないだろうか。場合によっては同一ユーザのSites内のファイルにシンボリックリンクを張ることもできるからな。ユーザの数が少ないので2)でやることにする。これまでと、同じだからだ。管理者は「じじい」だから保守的なのだ。
追記: 2)はうまくいかないときがある。なぜかCGIが~があるといいのだが~がないと、Internal server errorとなりlog をみると、このdirectoryはExecCGIが有効でないとなる。したがって1)の
/private/etc/apache2/extra/httpd-userdir.conf にユーザ毎に
Alias/hoge Users/[ユーザ名]/Sites/ を書き加えることにした。