TOP / 10.6 / 10.5 / 10.4

MAC OSXでwebサーバーを構築する, ftpサーバーのパーミションの設定

MAC OSXでwebサーバーを構築する。

MacOSXにはapacheというwebサーバーが内蔵されています。

これを起動するのは、基本的に環境設定から「web共有」をクリックするだけなんですけど、実際、運営してみるといろいろと細かいところもありましたので自分のメモ的にまとめてみました。

■基本
MacintoshHDの直下のディレクトリの
MacintoshHD/ライブラリ/WebServer/Documents/
がルート(ブラウザからアクセスできる一番上の階層)の場所になります。

MACOSXでwebサーバーを公開する手順

(1)
myfolder
というフォルダーを作り、そのなかにホームページのデータを入れます。
フォルダー名は自由です。

当然、フォルダーのディレクトリは以下になります。
MacintoshHD/ライブラリ/WebServer/Documents/myfolder/

(2)アクセス権を設定する

myfolderを選択して
「情報を見る」
「▽共有とアクセス権」
鍵アイコンをクリックしてロックを外して
「everyone」に「読み出しのみ」を与え
歯車のアイコンをクリックして「内包している項目に適用」
とします。
これをしておかないと、ブラウザから表示できません。

(3)web共有を開始する。

「システム環境設定」から「web共有」をONにします。

これでOKです。

 

 

このとき自分のMACのIPアドレスが192.168.0.3

とすると、

別のPCのブラウザから
http://192.168.0.3/myfolder/index.html
とすれば、自分のホームページが表示されます。

 

MAC OSX10.5のftpサーバーのパーミションを設定する手順

 

10.5で「ファイル共有」で簡単にftpサーバーを公開できるのはいいのですが
困ったことに、クライアントからアップロードしたファイルやフォルダーの属性が
「everybody」に対して「読み書き不可」になってしまうのです。
そのままではwebサーバーのメンテには使えません。

そこで、ftpサーバーの設定を変えるのが以下の手順です。

■基本
MacintoshHD/etc/
のディレクトリに
ftpd.conf
というファイルを/etc/
につくり
umask all 022
と一行いれるだけ。

でも、まずetc自体は不可視フォルダーになってるし
UNIXの知識がないものだから非常にめんどくさかった。

■操作手順
(1)rootの権限のパスワードを設定する。

10.5の場合は、アプリケーション/ユティリティ
のなかの
ディレクトリユティリティ.app
を起動します。
メニューバーから[編集]→[ルートユーザを有効にする]を選択して、rootのパスワードを登録します。
UNIXがわかる人は簡単なことですが、わからない人はなにも考えずにやってください。

(2)ftpd.confをつくる

まずターミナルを起動します。
su
と入力して先のパスワードを入力しsuになります。

つぎに
cd ../../etc
と入力してetcのディレクトリにいきます。

つぎに
touch ftpd.conf

echo "umask all 022" >> ftpd.conf

と入力します。
これでftpd.confの作成はOKです。

(3)チェック
cat ftpd.conf
と入力して中身を確認しておきましょう。
まちがっていたら
rm ftpd.conf
で削除して(3)をやり直してください。
正しければターミナルを終了します。

(4)ftpサーバーを再起動

ftpサーバーのMACのシステム環境設定から「ファイル共有」を「切り」にして、しばらくして「入り」にします。

これでOKです。

 

これでftpでアップロードしたファイルは「evrybody」に読み出し可能になっているはずです。

■apacheでのログ管理

webサーバーを起動したら次に気になるのがログ管理です。

apacheはUNIXベースのwebサーバーなのでUNIXがわからないとちょっと敷居が高いのです。

とりあえずこんなのがありました。

++++++++++++++++

自動分割の仕方はApacheのマニュアルに書いてあったので、簡単でした。
httpd.confに以下のコードを追加(/path/to/apacheは適宜読み替えてください)
TransferLog "| /path/to/apache/bin/rotatelogs /path/to/apache/logs/access_log 604800"
これで自動的に1週間=7*24*60*60=604800[sec]ごとにログの自動分割(ローテート)をしてくれます。604800をすきな分割時間間隔にかえればそれに従うようです。ついでにデフォルトではUserAgentやRefererのログは取り込まないようでしたので、それも修正しました。同じくhttpd.confで
CustomLog /path/to/apache/logs/access_log common
をコメントアウトして、そのすぐそばにある
#CustomLog /path/to/apache/logs/access_log combined
を有効にしました。こうすればUserAgentやRefererのログもとってくれるようになります。最後に
$ sudo apachectl graceful
を忘れないよう!!(これでhttpd.confの設定が反映されます)

++++++++++++

まだ実施してないのですが実施したらレポートします。2010.3

出展は以下です。

http://fenrir.naruoka.org/cgi/mt4i/mt4i.cgi?mode=individual&eid=99