• Japanese

仮想ホスト名を用いたWWW空間提供サービスについて

概要

共用作業領域名を仮想ホスト名としてWWW空間を提供するサービスです。

URLhttp://仮想ホスト名.sfc.keio.ac.jp/

Webページを設置するには

  • 指定の公開用ディレクトリに公開したいファイルをサーバ上のエディタ(Emacs,viなど)で編集するかSFTPソフトウェアを使ってアップロードします。
    
    アップロード先サーバwebedit.sfc.keio.ac.jp
    公開用ディレクトリ(アップロード先)/pub/WWW/仮想ホスト名/
    ユーザ名CNSログイン名
    パスワードCNSログインパスワード

CGI/SSI/PHP/メール について

  • CGI/SSI
    • 実行権限
      • CGI/SSIはHTTPDソフトウェアの権限(wwwユーザ,wwwグループ)で実行されます。
  • PHP
    • セーフモード
    • グローバル変数の扱い
      • グローバル変数の機能は無効(register_globals=off)です。入出力に使用する変数はスーパーグローバル変数($_GET,$_POSTなど)を利用してください。
    • PHPの実行ユーザ
      • wwwユーザ,wwwグループで動作します。
    • mb_send_mail(),mail()の第5引数によるReturn-Pathの設定
      • PHPの仕様変更によりsafe_modeが有効なCNSでは使用できなくなっています。
    • PHP4互換モード
      • PHP4互換モードを使用する場合はPHPスクリプト設置ディレクトリに以下の内容を書いた .htaccess を置いてください。
        php_flag zend.ze1_compatibility_mode On
  • メール
    • メールプログラムのパスは /usr/sbin/sendmail です。

データベースの連携について

概要

  • 仮想ホスト名を用いたWWW空間提供サービスからデータベースが利用できるようになりました。
  • PostgreSQL と MySQL が利用可能です。

利用方法

データベース情報

データベースサーバ名webpubdb.sfc.keio.ac.jp
接続ポートPostgreSQL5432
MySQL3306

接続方法

  • PostgreSQL
    • 例1: webeditでcommandでPostgreSQLに接続する
      webedit% psql -h webpubdb -U PostgresSQL用ユーザ名 -W
      
    • 例2: PHPでPostgreSQLに接続する
      $con = pg_connect("host=webpubdb.sfc.keio.ac.jp port=5432 dbname=DB名 user=DBユーザ名 password=DBパスワード");
  • MySQL
    • 例1: webedit でcommandで MySQL に接続する
      webedit% mysql -h webpubdb -u MySQL用ユーザ名 -p
      
    • 例2: PHPでMySQLに接続する
      $con = mysql_connect("webpubdb:3306","DBユーザ名","DBパスワード");

応用

アクセス制限

1. パスワードによる制限(Digest認証)

  • http://仮想ホスト名.sfc.keio.ac.jp/secret/ というディレクトリ内のコンテンツをパスワードが知っている人のみアクセスできるようにします。Digest認証はBasic認証よりも安全性の高い仕組みです。
  1. webedit.sfc.keio.ac.jp にリモートログインします。
    リモートログインの方法については リモートログインについて をご覧ください。
  2. パスワードファイル用ディレクトリ(secdir)を作成し、アクセス権を変更します。
    % cd /pub/WWW/仮想ホスト名
    % mkdir secdir
    % chmod o-r secdir
    
  3. パスワードファイルを作成します。ここにアクセスできるユーザ名は taro とし、領域名をsecret 1としています。
    % htdigest -c /pub/WWW/仮想ホスト名/secdir/.htdigest "secret 1" taro
    New password:  (パスワードを入力する)
    Re-type new password: (再度パスワードを入力する)
    Adding password for user taro
    
  4. /pub/WWW/仮想ホスト名/secret/ に次のような内容のファイルを .htaccess という名前で設置します。AuthNameにはパスワードファイルを作成した時の領域名を指定して一致させます。
    AuthName "secret 1"
    AuthType Digest
    AuthUserFile /pub/WWW/仮想ホスト名/secdir/.htdigest
    require user taro
    
  5. ブラウザで http://仮想ホスト名.sfc.keio.ac.jp/secret/ を開くとユーザ名とパスワードの入力を促すダイアログが表示されます。

2. パスワードによる制限(Basic認証)

  • http://仮想ホスト名.sfc.keio.ac.jp/secret/ というディレクトリ内のコンテンツをパスワードが知っている人のみアクセスできるようにします。
  1. webedit.sfc.keio.ac.jp にリモートログインします。
    リモートログインの方法については リモートログインについて をご覧ください。
  2. パスワードファイル用ディレクトリ(secdir)を作成し、アクセス権を変更します。
    % cd /pub/WWW/仮想ホスト名
    % mkdir secdir
    % chmod o-r secdir
    
  3. パスワードファイルを作成します。ここにアクセスできるユーザ名は taro としています。
    % htpasswd -c /pub/WWW/仮想ホスト名/secdir/.htpasswd taro
    New password:  (パスワードを入力する)
    Re-type new password: (再度パスワードを入力する)
    Adding password for user taro
    
  4. /pub/WWW/仮想ホスト名/secret/ に次のような内容のファイルを .htaccess という名前で設置します。
    AuthUserFile /pub/WWW/仮想ホスト名/secdir/.htpasswd
    AuthGroupFile /dev/null
    AuthName "Members Only"
    AuthType Basic
    require user taro
    
  5. ブラウザで http://仮想ホスト名.sfc.keio.ac.jp/secret/ を開くとユーザ名とパスワードの入力を促すダイアログが表示されます。

3. 指定したホスト/IPアドレスで制限

  • 制限したいコンテンツを保存しているディレクトリに以下を書いた .htaccess というファイルを設置します。
    • 例1: 特定のホストとSFC内からのアクセスのみ許可 (IPアドレスの場合)
      order deny,allow
      deny from all
      allow from hoge.example.com
      allow from 133.27.0.0/16
      
    • 例2: SFC内からのアクセスのみ許可。(サーバの処理が増えるため例1のIPアドレスでの制限を推奨)
      order deny,allow
      deny from all
      allow from .sfc.keio.ac.jp
      

1.と3.の組み合わせ

AuthDigestFile /pub/WWW/仮想ホスト名/secdir/.htdigest
AuthName "secret 1"
AuthType Digest
order deny,allow
deny from all
require user himitsu
allow from 133.27.0.0/16
Satisfy any

2.と3.の組み合わせ

AuthUserFile /pub/WWW/仮想ホスト名/secdir/.htpasswd
AuthName "Members Only"
AuthType Basic
order deny,allow
deny from all
require user himitsu
allow from 133.27.0.0/16
Satisfy any

注意事項

  • 管理グループについて
    • 管理グループメンバー内でファイルやディレクトリ操作を行えるようにするためには、ファイルやディレクトリのグループに対して書き込み権限を設定してください。
  • テンポラリファイルの使用について
    • テンポラリファイルを再利用したい場合は各領域の指定されたディレクトリ以下に作成してください。
  • WikiやBlogの設置について
    • 設置後も定期的に配布元を確認し、脆弱性が発見された時は速やかにバージョンアップするなどしてください。
      特にトラックバックスパムやコメントスパムはサーバ資源を浪費し、共用作業領域全体に影響が及びますので対策を確実に行なってください。
  • Return-Pathの設定
    • CGIなどからsendmail によりメール送信を行なう場合は、エラーメールの返送先である Return-Path: を設定してください。
      • perlでの例

        $from にはエラーメールの送信先のメールアドレスを指定します。

        $from = 'z00000tk@sfc.keio.ac.jp'
        open(MAIL,/usr/sbin/sendmail -f $from -t $to)
        
  • PHPでのfopen()に使用について
    • fopenする対象のファイルポインタの参照先が存在することを確認するようにコーディングしてください。

FAQ

サーバ仕様

OS・ハードウェア構成
機種名 Dell PowerEdge M1000e + M610
CPU Intel(R) Xeon(R) CPU L5640 @ 2.27GHz
ディスク SAS RAID1
メモリ 12GB
OS Debian GNU/Linux 6.0.4 (Squeese)
CGI利用可能言語
Perl, Ruby, PHP5, Python, C/C++*1
実行パス
Perl 5.10.1 /usr/local/bin/perl
Ruby 1.8.7 /usr/local/bin/ruby
Python 2.6.6 /usr/local/bin/python
PHP 5.2.17 CLI: /usr/local/bin/php
CGI: /usr/local/bin/php5
C/C++ 4.4.5 /usr/local/bin/gcc
sendmail /usr/sbin/sendmail
nkf /usr/local/bin/nkf
利用可能データベース
PostgreSQL, MySQL
httpd仕様
httpd Apache 2.2.22
セキュリティ CGI/SSI:個人ホームページ用WebサーバはSuEXEC有効
PHP: safe_mode=On, register_globals=Off
導入済みPEARパッケージ
PHP5 Archive_Tar 1.3.7
Auth 1.6.4
Auth_RADIUS 1.0.7
Auth_SASL 1.0.6
Cache_Lite 1.7.12
Calendar 0.5.5
Console_Getopt 1.2.3
Crypt_CHAP 1.5.0
DB 1.7.14
Date 1.4.7
File_Passwd 1.1.7
File_SMBPasswd 1.0.3
HTTP 1.4.1
HTTP_Client 1.2.1
HTTP_Download 1.1.4
HTTP_Header 1.2.1
HTTP_OAuth 0.2.3
HTTP_Request 1.4.4
HTTP_Request2 2.0.0
Log 1.12.7
MDB 1.3.0
MDB2 2.4.1
MIME_Type 1.3.0
Mail 1.2.0
Mail_Mime 1.8.2
Net_DIME 1.0.2
Net_POP3 1.3.8
Net_SMTP 1.6.1
Net_Socket 1.0.10
Net_URL 1.0.15
Net_URL2 2.0.0
Net_Vpopmaild 0.3.2
OLE 1.0.0RC1
PEAR 1.9.1
Pager 2.4.8
SOAP 0.12.0
Spreadsheet_Excel_Writer 0.9.2
Structures_Graph 1.0.3
System_Command 1.0.7
XML_Parser 1.3.4
XML_Util 1.2.1

変更履歴


2012年03月12日 機器置き換えに伴い、OS を Debian GNU/Linux 5.0.4(lenny) から 6.0.4(squeeze) に更新しました。
Apache 2.2.22 に更新しました。
PHP 5.2.17 に更新しました。
2011年08月25日 Apache 2.0.64 に更新しました。
2010年09月03日 Digest認証に対応しました。
2010年08月18日 PHP 5.2.14 に更新しました。
2010年03月15日 OS を Debian GNU/Linux 4.0(etch) から 5.0.4(lenny) に更新しました。
PHP 5.2.13 に更新しました。
2010年02月19日 Microsoft Office 2007 ドキュメントファイル (.docx, .xlsx, .pptx) をダウンロードした際に zip ファイルとして扱われる不具合を修正しました。
2009年06月29日 PHP 5.2.10 に更新しました。PDO-MySQL, PDO-PgSQL を有効にしました。
2009年03月03日 PHP 5.2.9 に更新しました。
2009年01月16日 PHP 5.2.8 に更新しました。
2008年09月10日 PHP のファイルアップロードサイズを 2M -> 10M に変更しました。
2008年07月10日 cURL(Client URL Library)を導入しました。
2008年06月30日 機器置き換えに伴い、Debian GNU/Linux 4.0(Etch), Apache 2.0.63, PHP 5.2.6 に更新しました。PHP5への移行に伴いPHP4はサービス停止しました。
2008年06月16日 データベース (PostgreSQL 8.3.1, MySQL 5.0.51b) が利用可能になりました。
2007年12月19日 Apache 2.0.61 に更新しました。
2006年9月7日 Apache 2.0.59, PHP 4.4.4, PHP 5.1.6 に更新しました。
2006年6月19日 OS を Debian GNU/Linux 3.0(Woody) から 3.1(Sarge) に更新しました。
Apache 2.0.58 に更新しました。
2006年4月7日PHP のセキュリティ強化のためグローバル変数の登録機能を無効(register_globals=off)としました。入出力に使用する変数にはスーパーグローバル変数($_GET、$_POSTなど)を利用してください。
2006年1月16日PHP 4.4.2 正式バージョンに更新しました。
2005年12月19日PHP 4.4.2RC1 に更新しました。bug fix優先のため。
2005年11月24日PHP 4.4.1 に更新しました。PHP 4.4.0 以下に致命的な脆弱性が発見されたため。
2005年10月19日Apache 2.0.55 に更新しました。
2005年6月10日PHP5(CGI/CLI版のみ)をインストールしました。(個人用Webサーバのみ: /usr/local/bin/php5)
2005年5月13日Apache 2.0.54 に更新しました。
2005年4月5日PHP 4.3.11 に更新しました。security/bug fixです。
2005年2月22日Apache 2.0.53 に更新しました。
2005年1月27日Ruby 1.8.2 をインストールしました。(/usr/local/bin/ruby)
2004年12月17日各CGIやSSIのメモリ使用量が200MB〜333MBを越えた場合、その処理を 強制終了するように設定を変更しました。(個人用サーバのみ)
2004年12月16日PHP 4.3.9 -> 4.3.10 に更新しました。security fixです。
2004年11月4日各CGIやSSIのメモリ使用量が256MB〜512MBを越えた場合、その処理を 強制終了するように設定を変更しました。(個人用サーバのみ)
2004年10月5日PHP 4.3.8 -> 4.3.9 に更新しました。GIF Create Supportが復活しています。
2004年10月5日Apache 2.0.52 に更新しました。
2004年8月25日ImageMagick, perlmagickパッケージをインストールしました。
2004年8月17日ruby-dev, libuconv-rubyパッケージをインストールしました。
2004年7月28日PHPのJPG SUPPORTが有効になるよう修正しました。
2004年7月27日Perlモジュールの一部を修正しました。
2004年7月26日本運用を開始しました。
2004年7月26日PHPのオプション mbstring.encoding_translation をOnからOffに修正しました。
2004年7月15日PHP 4.3.7のバグ修正バージョン 4.3.8 に更新しました。
2004年7月1日Apache 2.0.49の脆弱性の修正バージョン 2.0.50 に更新しました。
2004年6月28日試験運用開始
*1 webedit でコンパイルしてください

最終更新日: 2014年8月6日

内容はここまでです。