個人ホームページ用Webサーバの情報
概要
SFC-CNSではアカウントを持っている利用者であればWebページを公開できます。
個人ホームページのURL | http://web.sfc.keio.ac.jp/~ログイン名/ |
---|
暗号化が必要な場合は https プロトコルも利用できます。
個人ホームページのURL(暗号化) | https://web.sfc.keio.ac.jp/~ログイン名/ |
---|
Webページを設置するには
- ホームディレクトリに公開用ディレクトリの public_html ディレクトリを作成します。
-
public_html内で公開したいファイルをサーバ上のエディタ (Emacs, vi など) で編集するかSFTPソフトウェアを使ってアップロードします。
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 |
データベースユーザ名 |
ログイン名と同じ |
データベース名 |
ログイン名と同じ |
接続ポート |
PostgreSQL | 5432 |
MySQL |
3306 |
標準のデータベース文字コード |
PostgreSQL | EUC_JP |
MySQL |
UTF-8 |
- データベースの文字コードの変更を希望される方は湘南藤沢情報センターまでご連絡ください。
接続方法
- PostgreSQL
- 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認証よりも安全性の高い仕組みです。
- webedit.sfc.keio.ac.jp にリモートログインします。
リモートログインの方法については リモートログインについて をご覧ください。
- パスワードファイルを作成します。ここにアクセスできるユーザ名は taro とし、領域名をsecret 1としています。
% htdigest -c ~/.htdigest "secret 1" taro
Adding password for taro in realm secret 1.
New password: (パスワードを入力する)
Re-type new password: (再度パスワードを入力する)
- /home/z00000tk/public_html/secret/ に次のような内容のファイルを .htaccess という名前で設置します。AuthNameにはパスワードファイルを作成した時の領域名を指定して一致させます。
AuthName "secret 1"
AuthType Digest
AuthUserFile /home/z00000tk/.htdigest
require user taro
- ブラウザで http://web.sfc.keio.ac.jp/~z00000tk/secret/ を開くとユーザ名とパスワードの入力を促すダイアログが表示されます。
2. パスワードによる制限(Basic認証)
- http://web.sfc.keio.ac.jp/~z00000tk/secret/ というディレクトリ内のコンテンツをパスワードが知っている人のみアクセスできるようにします。
- webedit.sfc.keio.ac.jp にリモートログインします。
リモートログインの方法については リモートログインについて をご覧ください。
- パスワードファイルを作成します。ここにアクセスできるユーザ名は taro としています。
% htpasswd -c ~/.htpasswd taro
New password: (パスワードを入力する)
Re-type new password: (再度パスワードを入力する)
Adding password for user taro
- /home/z00000tk/public_html/secret/ に次のような内容のファイルを .htaccess という名前で設置します。
AuthUserFile /home/z00000tk/.htpasswd
AuthGroupFile /dev/null
AuthName "Members Only"
AuthType Basic
require user taro
- ブラウザで 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として実行する。
URLの転送
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日 |
試験運用を開始 |
webedit でコンパイルしてください