• Japanese

個人ホームページ用Webサーバの情報

概要

SFC-CNSではアカウントを持っている利用者であればWebページを公開できます。

個人ホームページのURLhttp://web.sfc.keio.ac.jp/~ログイン名/

暗号化が必要な場合は https プロトコルも利用できます。

個人ホームページのURL(暗号化)https://web.sfc.keio.ac.jp/~ログイン名/

Webページを設置するには

  1. ホームディレクトリに公開用ディレクトリの public_html ディレクトリを作成します。
  2. public_html内で公開したいファイルをサーバ上のエディタ (Emacs, vi など) で編集するかSFTPソフトウェアを使ってアップロードします。
    アップロード先サーバwebedit.sfc.keio.ac.jp
    公開用ディレクトリ(アップロード先)public_html
    使用可能容量ホームディレクトリの容量制限値まで

CGI/SSI/PHPついて

CGI/SSI

  • 動作仕様
    項目 説明
    CGIの実行ユーザ CGIスクリプトのファイルオーナー
    CGIスクリプトの保護モード確認 group および other に書き込み権限がないこと
    CGIスクリプトがあるディレクトリの保護モード確認 group および other に書き込み権限がないこと
  • SSI使用時の拡張子
    • 通常の.htmlファイルでSSIを実行させる場合は .htaccess に AddHandler server-parsed .html または AddOutputFilter INCLUDES .html を記述してください。

PHP

  • 動作仕様
    項目 説明
    PHPバージョン 8.2系
    PHP動作モード CGI + suPHP
    PHPの実行ユーザ PHPスクリプトのファイルオーナー
    PHPスクリプトの保護モード確認 group および other に書き込み権限がないこと
    PHPスクリプトがあるディレクトリの保護モード確認 group および other に書き込み権限がないこと
  • セーフモード
    • セーフモード は PHP 5.4 以降で機能が削除されており、新サーバでは設定していません。共用作業領域以外へのアクセスについては PHP の open_basedir で制限しています。アクセスを許可しているディレクトリは下記の通りです
      • /usr/bin
      • /usr/local/bin
      • /tmp
  • グローバル変数の扱い
    • グローバル変数の機能は無効(register_globals=off)です。入出力に使用する変数はスーパーグローバル変数($_GET,$_POSTなど)を利用してください。
  • PHPでのfopen()に使用について
    • fopenする対象のファイルポインタの参照先が存在することを確認するようにコーディングしてください。

注意事項

  • テンポラリファイルの使用について
    • テンポラリファイルを再利用したい場合はホームディレクトリ直下に作成してください。
  • シンボリックリンク
    • シンボリックリンクはリンクの所有者とユーザが同じ場合に限り、リンクを辿ります。
  • WikiやBlogの設置について
    • 設置後も定期的に配布元を確認し、脆弱性が発見された時は速やかにバージョンアップするなどしてください。
  • メール
    • メールプログラムのパスは /usr/sbin/sendmail です。
  • 利用するソフトウェアについて
    • 利用するソフトウェアの利用規約を確認し、ライセンス違反にならないようご注意ください。
    • 例えば、Movable Type のバージョン6以降はオープンソースソフトウェアではなくなっており、個人無償版をCNSの個人領域・共用作業領域で利用することはできません。

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

概要

  • 個人ホームページ用データベース利用申請 を行うことにより個人ホームページ用Webサーバで PostgreSQL と MySQL が利用可能になります。データベースのパスワードはPostgreSQL,MySQL共通の 個人ホームページDBパスワード が発行されます。

データベース情報

データベースサーバ名 webdb.sfc.keio.ac.jp
データベースユーザ名 ログイン名と同じ
データベース名 ログイン名と同じ
接続ポート PostgreSQL5432
MySQL 3306
標準のデータベース文字コード PostgreSQLEUC_JP
MySQL UTF-8
  • データベースの文字コードの変更を希望される方は湘南藤沢情報センターまでご連絡ください。

接続方法

  • PostgreSQL
    • 例1: webedit でコマンドラインから PostgreSQL に接続する
      webedit% psql -h webdb -U loginname -W
      
    • 例2: PHPで pg_connect関数を使って PostgreSQL に接続する
      $con = pg_connect("host=webdb.sfc.keio.ac.jp port=5432 dbname=ログイン名 user=ログイン名 password=DBパスワード");
  • MySQL
    • 例1: webedit でコマンドラインから MySQL に接続する
      webedit% mysql -h webdb -u ログイン名 -p
      
    • 例2: PHPで mysql_connect関数を使って MySQLに接続する
      $con = mysql_connect("webdb:3306","ログイン名","DBパスワード");

注意事項

  • MySQL のコマンドラインでDBパスワードを変更した場合、PostgreSQL のパスワードと異なりますので注意してください。
    変更したパスワードを忘れた際は 個人ホームページ用データベース利用申請 から個人ホームページDBパスワードを再発行してください。
    DBパスワードを再発行すると MySQL と PostgreSQL のDBパスワードが同一になります。

応用

アクセス制限

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

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

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

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

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

  • 制限したいコンテンツを保存しているディレクトリに以下を書いた .htaccess というファイルを設置します。
    • 例2: 特定のホストと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 /home/z00000tk/.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 /home/z00000tk/.htpasswd
AuthName "Members Only"
AuthType Basic
order deny,allow
deny from all
require user himitsu
allow from 133.27.0.0/16
Satisfy any

mime-typesの設定

  • 例: Rubyで書いた.rbを拡張子に持つファイルをCGIとして実行する。
    • rbファイルがあるディレクトリに以下の内容の .htaccess を設置します。
      AddHandler cgi-script .rb

URLの転送

  • 例: 3秒経過したら指定したページに自動でジャンプします。
    <META HTTP-EQUIV="refresh" content="3; URL=http://example.jp/">

FAQ

サーバ仕様


OS構成
OS Ubuntu 20.04 LTS
CGI利用可能言語
Perl, Ruby, PHP, Python, C/C++*1
実行パス
Perl 5.30.0 /usr/local/bin/perl
Ruby 3.2.2 /usr/local/bin/ruby
Python 3.8系 /usr/local/bin/python
PHP 8.2系 + suPHP CGI: /usr/local/bin/php
C/C++ 9.4.0 /usr/local/bin/gcc
sendmail /usr/sbin/sendmail
nkf /usr/local/bin/nkf
利用可能データベース
PostgreSQL, MySQL
HTTPサーバ仕様
HTTPサーバ Apache 2.4.41
セキュリティ CGI/SSI: suEXEC有効
PHP: suPHP有効

変更履歴

日時 内容
2024年04月01日 OSをUbuntu 20.04 LTSに更新しました
2020年03月16日 OSをUbuntu 18.04 LTSに更新しました
2014年09月09日 本運用を開始しました
2014年09月09日 セキュリティアップデート
2014年08月28日 セキュリティアップデート
2014年07月11日 chasen,mecab,cabocha,emacs,JDK7,a2ps,bison,cvs,expect,gdb,jless,lynx,quota,zsh を導入しました。
2014年07月09日 新Webサーバと同等のWebページ編集/動作確認用サーバ(webedit2)の試験運用を開始
2014年07月01日 試験運用を開始
*1 webedit でコンパイルしてください

最終更新日: 2024年4月1日

内容はここまでです。