OSX10.8サーバ その17 ~(チルダ)なしにする

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/ を書き加えることにした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください