WEBサーバの構築 Edit

  • /Users/www/Sites/www
    本場所を、http://eggplant.ddo.jp/www/ でアクセスすることにする。
    (適当にやりすぎかも。汗);
    Macmini:~ user$ sudo mkdir -p /Users/www/Sites/www
    
    で、その中にファイルを用意して、オーナー、グループをapacheのものへ変更
    Macmini:~ user$ sudo chown -R www:www /Users/www
    

  • /etc/apache2/httpd.conf
    Mac OS XにはApacheとPHPが最初から入っているので、httpd.confを修正しそれらを有効にします。
    --- /etc/apache2/httpd.conf.orig	2008-08-10 12:17:07.000000000 +0900
    +++ /etc/apache2/httpd.conf	2008-08-10 12:21:32.000000000 +0900
    @@ -111,7 +111,7 @@ LoadModule userdir_module libexec/apache
     LoadModule alias_module libexec/apache2/mod_alias.so
     LoadModule rewrite_module libexec/apache2/mod_rewrite.so
     LoadModule bonjour_module     libexec/apache2/mod_bonjour.so
    -#LoadModule php5_module        libexec/apache2/libphp5.so
    +LoadModule php5_module        libexec/apache2/libphp5.so
     #LoadModule fastcgi_module     libexec/apache2/mod_fastcgi.so
     
     <IfModule !mpm_netware_module>
    @@ -285,13 +285,13 @@ LogLevel warn
         # define per-<VirtualHost> access logfiles, transactions will be
         # logged therein and *not* in this file.
         #
    -    CustomLog /private/var/log/apache2/access_log common
    +    #CustomLog /private/var/log/apache2/access_log common
     
         #
         # If you prefer a logfile with access, agent, and referer information
         # (Combined Logfile Format) you can use the following directive.
         #
    -    #CustomLog /private/var/log/apache2/access_log combined
    +    CustomLog /private/var/log/apache2/access_log combined
     </IfModule>
     
     <IfModule alias_module>
    @@ -388,7 +388,7 @@ DefaultType text/plain
         # To use CGI scripts outside of ScriptAliased directories:
         # (You will also need to add "ExecCGI" to the "Options" directive.)
         #
    -    #AddHandler cgi-script .cgi
    +    AddHandler cgi-script .cgi
     
         # For type maps (negotiated resources):
         #AddHandler type-map var
    
    
  • /etc/apache2/users/www.conf
    /Users/www/Sites/www (http://eggplant.ddo.jp/www/ ) の設定を行う。
    Alias /www/ "/Users/www/Sites/www/"
    <Directory "/Users/www/Sites/www">
        Options MultiViews FollowSymLinks ExecCGI     ←CGIが使えるように(邪道?)
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
    
  • /usr/local/bin/perl
    perlを/usr/local/bin へリンクしておく。
    Macmini:~ user$ sudo mkdir /usr/local/bin
    Macmini:~ user$ sudo ln -s /usr/bin/perl /usr/local/bin/
    
  • WEBサーバの起動
    まず、confファイルの文法チェックを行い、
    Macmini:~ user$ sudo apachectl configtest
    Processing config directory: /private/etc/httpd/users/*.conf
     Processing config file: /private/etc/httpd/users/www.conf
    Syntax OK
    
    そして、システム環境設定→共有の、パーソナルWEB共有をチェックしてWEBサーバを立ち上げます。

  • ルータのポートフォワード設定
    80番ポートをサーバへフォワードするのをお忘れなく。

Dynamic DNS 自動更新 Edit

  • What's up(フリーウェア)
    http://soft.macfeeling.com/What_s_Up.html
    このような便利なソフトウェアがあるのでご紹介しておきます。

    ケチな私は、CPU/メモリリソースを節約したかったので、LANDISKで使用していた、
    ddns更新スクリプトをcronで周期的に実行するように設定しました。

  • /usr/local/bin/ddns.sh
    ddo.jp専用、Dynamic DNS更新スクリプトの例です。
    過去200回分の更新ログが、/var/log/ddns.logへ出力されます。
    #!/bin/sh
     
    DATE=`date +"%Y/%m/%d %X"`
    PATH=/opt/local/bin:/bin:/usr/bin
     
    wget -q -O - 'http://free.ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード' | \
    awk '$0 ~ /SUCCESS/ || $0 ~ /FAIL/ { print date, $0;}' date="$DATE" >> /var/log/ddns.log
     
    tail -200 /var/log/ddns.log > /var/log/ddns.log.tmp
    cp /var/log/ddns.log.tmp /var/log/ddns.log
    rm /var/log/ddns.log.tmp
    実行属性とオーナの設定
    Macmini:~ user$ sudo mkdir /usr/local/bin   ← もし、無ければ
    Macmini:~ user$ sudo cp ddns更新スクリプト /usr/local/bin/ddns.sh
    Macmini:~ user$ sudo chmod +x   /usr/local/bin/ddns.sh
    Macmini:~ user$ sudo chown root /usr/local/bin/ddns.sh
    
  • cronの設定
    cronを使って1時間毎にDynamic DNSの登録を行います。
    MacOSXでは、GUIでcronの設定を行うcronniXというツールがあるようなので使ってみます。
    • CronniX
      http://www.abstracture.de/projects-en/cronnix/
      上記ページのDownloadから入手できます。
      (入手後、アイコンをアプリケーションフォルダにコピーします。)

    • 設定
      日本語化されてるんだね。らくちんです。
      • ボタン「開く」
        rootと入力して、rootのcrontabを指定します。
      • ボタン「新規」
        コマンドを起動する時間を指定して、かつ
        コマンド欄には、/usr/local/bin/ddns.shを入力
        そして、新規ボタンを押して設定完了。
      • ボタン「保存」
        設定内容を保存します。
      念のためターミナルで設定内容を確認してみます。
      Macmini:~ user$ sudo cat /var/at/tabs/root
      # DO NOT EDIT THIS FILE - edit the master and reinstall.
      # (- installed on Sun Jul 24 13:03:31 2005)
      # (Cron version -- $FreeBSD: … 省略
      5    *    *    *    *    /usr/local/bin/ddns.sh
      
  • host名の解決
    MacOSX上のsafariで自分内のHPをアクセスすると、ドメイン名が解決できないため、
    ページが正常に表示されません。
    ドメイン名をLAN内のローカルアドレスに見せかけることで、本問題を回避します。

    /etc/hosts への追加例
    192.168.1.xxx eggplant.ddo.jp 
    

AWStats 日本語バージョン Edit

  • AWStatsとは?
    Apacheのログ解析をして、アクセス履歴を視覚的に表示してくれるツールです。
    下記サイトから、日本語化されたAWStatsを入手し、使用してみることにします。
  • インストール&設定
    • /Users/www/Sites/awstats
      本場所へ一式コピーして、http://eggplant.ddo.jp/awstats/ でLAN内からのみ
      アクセス可能なよう設定を行いました。
      tar.gzを入手すると自動的にDesktopに展開されるので、それを上記場所へ一括コピー。
      Macmini:~ user$ cd /Users/www/Sites
      Macmini:~ user$ sudo cp -R ~/Desktop/awstats_ja-1.0/wwwroot awstats
      
    • /etc/httpd/users/www.conf
      ブラウザからアクセスできるよう、Apacheの設定ファイルに、awstatsの情報を追加します。
      なお、全ての人の閲覧権限を与えることは、セキュリティ上好ましくないため、
      ローカルネットワークからのみアクセスできるよう設定します。
      以下の記述を追加します。
      Alias /awstats /Users/www/Sites/awstats
      <Location /awstats>
          Options MultiViews FollowSymLinks ExecCGI
          AddHandler cgi-script .cgi .pl
          Order deny,allow
          Deny from all
          Allow from 127.0.0.1
         Allow from 192.168.0.0/24
         Allow from 192.168.1.0/24
      </Location>
      

    • /Users/www/Sites/awstats/cgi-bin/awstats.conf
      該当行を次のように編集します。
      LogFile="/Users/www/Sites/awstats/access_log.enc"
      SiteDomain="eggplant.ddo.jp"  各自の環境にあわせます。
      HostAliases="localhost 127.0.0.1 REGEX[^192.168.]"
      DirData="/Users/www/Sites/awstats"
      DirCgi="/awstats/cgi-bin"
      DirIcons="/awstats/icon"
      
    • /usr/local/bin/awstats
      次のスクリプトを/usr/local/bin/awstatsという名前で用意します。
      #!/bin/sh
      
      AWSTATS=/Users/www/Sites/awstats
      CGIBIN=$AWSTATS/cgi-bin
      ACCESSLOG=/var/log/apache2/access_log
      
      $CGIBIN/conv_weblog_to_utf8.pl < $ACCESSLOG > $AWSTATS/access_log.enc
      $CGIBIN/awstats.pl -config=awstats.conf -update > /dev/null
      $CGIBIN/awstats.pl -config=awstats.conf -output -staticlink > $AWSTATS/index.html
      
    • 各種実行属性のセット
      Macmini:~ user$ sudo chmod +x /usr/loca/bin/awstats
      Macmini:~ user$ sudo chmod +x /Users/www/Sites/awstats/cgi-bin/*.pl
      
    • WEBサーバの再起動
      まず、confファイルの文法チェックを行い、
      Macmini:~ user$ sudo apachectl configtest
      Processing config directory: /private/etc/httpd/users/*.conf
       Processing config file: /private/etc/httpd/users/www.conf
      Syntax OK
      
      システム環境設定→共有を開いて、パーソナルWEB共有をチェック外して再チェックを
      するとWEBサーバが再起動します。

  • 動作テスト
    Macmini:~ user$ sudo /usr/loca/bin/awstats
    
    ブラウザから集計結果を見る事ができます。
    http://IP_ADDRESS/awstats/
    
  • cron設定
    cronniXで/usr/local/bin/awstatsを周期的に実行するよう設定します。




トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-10 (日) 13:52:57 (5743d)