Transcript 情報科学III
平成21年度 情報科学III (理系コア科目・2年生) サーバでのファイルの扱い、HTML 担当 岡村耕二 月曜日 2限 http://okaweb.ec.kyushu-u.ac.jp/lectures/jk3/ 本資料の一部は、堀良彰准教授、天野浩文准教授等による 1 以前の講義資料をもとにしています。 前回のおさらい(1) この講義の目標 – クライアントからのアクセスがあった時にサーバで実行され, ブラウザ画面での表示を動的に生成するようなプログラムを 作る. • クライアントからの情報に応じて,データベースを検索, 更新する. 作業環境の説明 – 端末室のPC – システム情報科学府のサーバ – 出席管理システム サーバサイドプログラミングとは 2 学外から課題などをする場合 ah.s.kyushu-u.ac.jp に TeraTerm Pro などでログインします。 – TeraTerm Pro のインストールについては http://hp.vector.co.jp/authors/VA002416/ を参考にしてください。ssh 拡張が必要です。 bossp.is.kyushu-u.ac.jp は、ah.s.kyushu-u.ac.jp から ssh コマン ドにてログインできます。 • ssh bossp.is.kyushu-u.ac.jp 3 注意 bossp.is.kyushu-u.ac.jp にログインする – ターミナル を使う • export LANG=C (表示言語を英語にする) • 一番最初だけ(httpd がアクセスできるようにする) – chmod 711 . – chmod 711 public_html – chcon user_u:object_r:httpd_user_content_t public_html 4 前回のおさらい(2) --基本的な作業環境 九州大学 教育用計算機システムのPC Windows XP サーバ システム情報のサーバ サーバ ファイル IDとパスワードはすでに発行済 み ファイル UNIX + webサーバ 他 IDとパスワードは 本日配布 このサーバには,webサーバの他に PHP言語処理系 データベース管理システム(MySQL) がインストールされている. 5 前回のおさらい(3) --最終課題で製作するもの SQL クエリ ブラウザ PHPプログラムは,クライア ントからのリクエストに応じ てデータベースにアクセス し,その結果を整形してブ ラウザに返す. また,データベースにアク セスする際には,SQL言語 によるクエリ(問い合わせ, query)を発行する. web サーバ PHP プログラム 検索・更新 の結果 データベース 管理システム (DBMS) データベース 6 本日やること 作業環境の説明(続き) – 各システムでの作業の概要 – サーバのアカウント・パスワードの配布 – ログインのしかた – UNIXコマンドの基礎 – HTML・PHPファイルの置き場所 文字コードの話 実習:簡単なwebページ作成 – PC上でHTMLファイル作成 – ファイルを適切なフォルダ(ディレクトリ)に複写 – ブラウザで確認 7 各システムでの作業の概要 九州大学 教育用計算機システムのPC システム情報のサーバ bossp Windows XP ファイル UNIX +webサーバ +PHP +SQL ファイル ファイルの編集 • TeraPad を使用 ファイルの転送 • WinSCP3 を使用 サーバ上のwebページ・PHPプログ ラムの確認 • Internet Explorerを使用 リモートサーバへのアクセス • Tera Term Pro を使用 (PCからリモートサーバのコマンドを実行) ログイン パスワードの変更 webページ・PHPプログラム用ディレクトリ の作成(初回のみ) • mkdir コマンド • chmod コマンド 8 PCのデスクトップ画面 このあたりに Tera Term Pro TeraPad のアイコンが ある. 残念ながら,WinSCP3のアイ コンはデスクトップ上には出て いない. 左下のスタートメニューから探 して起動すること. 9 リモートサーバへのアクセス -Tera Term Pro PCからリモートサーバへログインし,コマンド操作を行うための端末エミュ レータソフト(フリー) – http://hp.vector.co.jp/authors/VA002416/ もともとは,Telnet プロトコルによる端末接続をサポートしていた. – Telnetは通信データを暗号化しないため,悪意のある第三者が通信経 路上にいた場合,「盗み聞き」を防げない. • 最初に入力するIDやパスワードが盗まれる危険性も. – そこで,利用者認証の段階からすべての通信データを暗号化する SSH (Secure Shell)プロトコルが考案された. • 現在では,Telnet を禁止し,SSH によるアクセスのみを許可する サーバが増えた. – Tera Term Pro にも,SSH機能のための追加モジュールが提供されるよう になった. 教育用計算機システムの Tera Term Proでも SSH が利用できるので,今回 の講義でも必ず SSH を使用すること. 10 Tera Term Pro の操作(1) デスクトップのアイコンをダブルクリックして起動 この部分のホスト を下のものに変 更する. bossp.is.kyushu-u.ac.jp 11 Tera Term Pro の操作(2) セキュリティ警告が表示されるが,ホスト名を正しく入力できて いることが確認できたら,そのまま続行する. 12 Tera Term Pro の操作(3) 「SSH認証」ダイアログで,ユーザ名とパスワードを入力する. ユーザ名は,教育用システムのアカウント名と同じにしてある. パスワードは講義中 に別途伝達する. 13 リモートサーバでの操作 -UNIXのコマンド Telnet や SSH でアクセスする場合,サーバに仕事をさせるに は,キーボードからコマンド(文字列)をタイプして,Enter キーを 押す. – 実行した結果の出力も文字列で画面(端末エミュレータウィ ンドウ内)に表示される. 前回どこからアクセスしたか 画面上で次に文字が入力される位置 示すカーソル(点滅表示) Last login: Mon Apr 16 18:55:09 2007 from ... [te999999@bossp ~]$ サーバ(UNIX)が,利用者からのコマンドを待っている ことを示す表示(プロンプト,prompt) サーバへのアクセスを終了するときは,logout と入力して Enterキーを押す. 14 カレントディレクトリ ディレクトリ(directory) – Windows の「フォルダ」と同等のものだが, UNIXでは,伝統的に「ディレクトリ」と呼ん でいる. – 残念ながら,UNIXでは,Windowsのような グラフィカルな表示はできないことも多い. カレントディレクトリ – 現在自分が作業をしているディレクトリ – ある利用者がログインした直後のカレント ディレクトリは,その利用者の「ホームディレ クトリ」(略してホーム)と呼ばれる. – ホームは,通常,ユーザ名と同じ名前に なっている. また,「~」(ティルダ,tilde)とい う文字で表すことがある. te999999 + doc + fun - kogi file1 file2 15 UNIXコマンドの実行例(1) -パスワード変更 passwd コマンド – 現在のパスワードを新しいものに変更する. • 現在のパスワードを入力(1回) • 新しいパスワードを入力(2回) – 辞書にあるようなつづりや,元のパスワードに似たもの,など は拒絶される. [te999999@bossp ~]$ passwd Changing password for user te999999. Changing password for te999999 入力した内容は画面に表 (current) UNIX password: 示されず,カーソルも動か New UNIX password: ない. Retype new UNIX password: passwd: all authentication tokens updated successfully. [te999999@bossp ~]$ 16 忘れないうちに自分のパスワードを変更しておこう. 英数字を混ぜたもの(6文字以上8文字以下)がよ い. 当然のことだが,以下のようなパスワードは盗まれる 危険が高いので使うべきでない. 自分のユーザ名(ログイン名ともいう)と同じつづり 自分の姓または名と同じつづり 辞書に出ているような言葉と同じつづり 固有名詞でも,一般名詞でも タレント・有名人の名前と同じつづり アルファベットのみ,または,数字のみ “Password” 17 UNIXコマンドの実行例(2) -ディレクトリ作成 mkdir (make directory)コマンド – カレントディレクトリ配下に,新しいディレクトリを作成する. • ただし,カレントディレクトリ配下にすでにあるディレクトリ のさらに下など,カレントディレクトリ直下以外の場所に作 ることもできる. [te999999@bossp ~]$ mkdir public_html [te999999@bossp ~]$ 18 UNIXコマンドの実行例(3) -ディレクトリの移動・確認 cd (change directory)コマンド – カレントディレクトリを移動させる. – 1つ上のディレクトリに戻るには,「..」(ピリオド2つ) – 何も添えずに「cd」とだけタイプすると,ホームに戻る. pwd (print working directory)コマンド – カレントディレクトリを表示する. [te999999@bossp ~]$ cd public_html [te999999@bossp public_html]$ pwd /home/te999999/public_html [te999999@bossp public_html]$ cd .. [te999999@bossp ~]$ 19 ここで,次回以降の課題ファイルを置くためのディレ クトリ public_html を,自分のホームディレクトリに 直下に作成しておこう. 通常,各ユーザのwebページは,ホームディレクトリ 配下の public_html ディレクトリ配下に置かなけ ればならない. 20 UNIXコマンドの実行例(4) -ファイルの一覧表示 ls コマンド (アルファベット小文字のエルとエス.listから) – 単に ls とだけタイプして Enter キーを押すと,カレントディレクトリ配下 のファイルやディレクトリの名前だけを一覧表示する. – 「LANG=C ls –l」とタイプすると,名前の他に,様々な情報を表示す る. • LANG=Cは,端末エミュレータが日本語をうまく処理できないような場 合に日本語メッセージ出力を抑止して,画面上の文字化けを防ぐた めの「おまじない」 • そのような制約がない場合には,ls –l だけでよい. 日本語が正しく表示できる場合 [te999999@bossp ~]$ ls には,LANG=C を付ける必要は public_html ない. [te999999@bossp ~]$ LANG=C ls –l total 8 • drwxr-xr-x 2 te999999 student 4096 Apr 17 10:34 public_html [te999999@bossp ~]$ 21 UNIXコマンドの実行例(5) -ファイル等の削除 rm (remove)コマンド – ファイルを削除する. rmdir (remove directory) 日本語が正しく表示できる場合 には,LANG=C を付ける必要は ない. – ディレクトリを削除する. [te999999@bossp ~]$ mkdir test [te999999@bossp ~]$ LANG=C ls –l total 16 drwxr-xr-x 2 te999999 student 4096 drwxr-xr-x 2 te999999 student 4096 [te999999@bossp ~]$ rmdir test [te999999@bossp ~]$ LANG=C ls –l total 8 drwxr-xr-x 2 te999999 student 4096 [te999999@bossp ~]$ Apr 17 10:34 public_html Apr 17 10:35 test Apr 17 10:34 public_html 22 UNIXコマンドの実行例(6) -利用権設定 ファイルやディレクトリの利用権設定 – 自分自身・同じグループ内の他の利用者・それ以外の人が, 自分のファイルやディレクトリに対して,どのような操作をす ることを許可するか • 読み出し(Read)/書き込み(Write)/実行(eXecute) chmod (change mode)コマンド – 自分のファイルやディレクトリの利用権設定を変更する. [te999999@bossp ~]$ chmod 711 ~ [te999999@bossp ~]$ LANG=C ls –ld ~ total 8 drwxr-xr-x 2 te999999 student 4096 Apr 17 [te999999@bossp ~]$ 日本語が正しく表示できる場 合には,LANG=C を付ける必 要はない. 10:34 /home/te999999 23 ここで,webページがサーバの外からブラウザでアクセスで きるよう,自分のホームディレクトリの利用権設定を変更して おこう. ① 自分のホームディレクトリの利用権設定を「711」に変更する chmod 711 ~ ② ホームディレクトリの利用権がどうなっているかを確認する. (日本語が表示できないとき)LANG=C ls –ld ~ (日本語が表示できるとき) ls –ld ~ ③ 上記②のコマンドの出力の左端が以下のようになっていれ ばOK. drwx--x--x ここをよく見比べる 5 te999999 ... 実際は自分のIDになる 24 ファイルの編集 -TeraPad デスクトップのアイコンをダブルクリックして起動 「メモ帳」とたいして 変わらないので, 操作法の説明は省 略する. 25 ファイルの転送 -WinSCP3 Telnet と同様に,暗号化を行わないファイル転送プロトコルとし て,FTP(file transfer protocol)があった. – やはり,ファイルのアップロード・ダウンロードに際し,悪意の ある第三者による「盗み聞き」の危険性が… そこで,暗号化を行うファイル転送方式が考案された. – SCP(secure copy protocol) – SFTP(SSH file transfer protocol) WinSCP3は,SCP/SFTP 両方の機能を持つファイル転送ソフト – http://winscp.net/eng/docs/lang:jp 26 WinSCP3の操作(1) 起動直後のウィンドウ – 教育用計算機のUNIXホストしか登録されていないので, 「新規」ボタンをクリックする. 27 WinSCP3の操作(2) 「ホスト名」のところに bossp.is.kyushu-u.ac.jp を入力 ユーザ名・パスワードも入力して,「ログイン」ボタンをクリックす る. 「秘密鍵」は空白の ままでよい 28 WinSCP3の操作(3) 警告が表示されるが,ホスト名を正しく入力できていることが確 認できたら,そのまま続行する. – ホスト名は,下に隠れているウィンドウの上部に表示されて いる. 29 WinSCP3の操作(4) 接続に成功すると,左右に分かれたエクスプローラ型のウィンド ウが現れる.あとはドラッグアンドドロップでOK. ローカル (PC)側の ファイル一覧 リモート (サーバ)側の ファイル一覧 アップロード ダウンロード 30 文字コードの話 なぜ,LANG=C などという「おまじない」を付ける 必要があるのか… 31 計算機は文字をどのように扱うか? 計算機のメモリ・ディスク(ファイル)の中に格納されているデー タでも,通信でやりとりされるデータでも,すべての文字 (character)は「番号」(code)で表されている. H e l l o ! 72 101 108 108 111 33 – ただし,実際には,十進数ではなく二進数である. どの文字をどの番号に対応させるか,というルールを,「文字 コード」という. 32 むかしむかし… メーカごとに計算機内部で使用する文字コードがまちまちだっ た. – これでは,計算機間でデータのやり取りができない. – そこで,標準化の動きが始まった. 1963年,ASCII(American Standard Code for Information Interchange,アスキーと読む)規格が誕生 – アメリカで日常使われる文字は100未満. • アルファベット26文字×2(大文字・小文字) • 数字 0~9 • その他の印刷可能文字(#,$など) – これに30程度の制御文字(delete,carriage return,line feed など)を加えても7ビット(27=128)で十分. – パリティ検査のために1ビット余計に付けても8ビット(1バイト). 33 非米語圏はどうなるの? $の代わりにポンド記号を必要とする英国の英語 アルファベットにウムラウトなどの記号のつくヨーロッパ系言語 アルファベット以外の文字を基礎とする言語 – 「子音・母音・子音」の組み合わせが1文字となる韓国語 – それぞれ数万の漢字を持つ日本語・中国語 などなど オリジナルのASCIIコードのままでは表現できないため,ASCII コードの微妙な拡張や,各言語用の文字コードが多数考案さ れた. 34 日本でよく利用される文字コードのいろいろ JISコード(ISO 2022-JP) – インターネット上でメールやwebページを送受信するときの標準的な外部コード (外部とのやり取りに使用する文字コード).2バイト=全角1文字. Shift_JISコード – Microsoft系のOSを載せたPCでよく用いられる,日本独特の内部コード(計算機 内部で使用するコード). 2バイト=全角1文字. EUCコード(EUC-JP) – 日本では,UNIX機でよく用いられてきた内部コード. 2バイト=全角1文字. • 中国・韓国では,同様のコード(EUC-CN,EUC-KR)がPCの標準的な内部 コードにもなった. UNICODE – 言語ごとに文字コードを用意するのではなく,世界の文字を統一的に表そうとす る方式.16ビットではなく21ビットで1文字を表す. • 日本・中国・韓国の漢字を無理に統合して文字数を抑えたことなどから,不 満・反発も起きている. – ネットワーク上でやり取りするときには,これをさらに UTF-8 と呼ばれる形式に変 換 – これを内部コードに採用する UNIX(Linux)も増えつつある. 35 実習に用いるサーバでは... PC では – Shift_JIS が普通 – テキストファイルの改行コードは 「CR+LF」 CR(Carriage Return) LF(Line Feed) テレタイプの行頭復帰・行送 り文字に由来する制御文字 コードの名称. サーバでは – CentOSの標準文字コードが UTF-8 – テキストファイルの改行コードは「LF」のみ – MySQLも,データベースに非ASCII文字を格納する際に, データを UTF-8 形式で表現する. – PHPで作成するプログラムも,同じ文字コードに合わせたほ うが都合がよいので,UTF-8 にしたい. 36 作業の際に使用する文字コード 九州大学 教育用計算機システムのPC システム情報のサーバ bossp Windows XP UTF-8 UNIX +webサーバ +PHP +SQL UTF-8 TeraPad でファイルを作成するとき • UTF-8形式で保存すること • 改行コードは「LF」にすること Tera Term Pro でサーバにアクセ スするとき • 送受信に用いるコードを UTF-8に設定できないと,画面 表示が一部文字化けすること がある. (標準の文字コードが UTF-8) (改行コードは「LF」) (PCからリモートサーバ のコマンドを実行する) (コマンドの実行結果がPC のウィンドウ内に表示される) 37 日本語がうまく表示できないときの「文字化け」 [amano@bossp ~]$ ls -l 合計 16 drwxr-xr-x 2 amano teacher 4096 drwxr-xr-x 2 amano teacher 4096 [amano@bossp ~]$ 4月 17 17:26 public_html 4月 17 17:27 test サーバはこんな風に表示しているつもりなのに… Tera Term Pro の画面ではこんな風になってしまう… [amano@bossp ~]$ ls -l ┗6 drwxr-xr-x 2 amano teacher 4096 drwxr-xr-x 2 amano teacher 4096 [amano@bossp ~]$ 羆7 17:26 public_html 羆7 17:27 test 38 HTMLについて • 簡単なチュートリアル「初心者向けHTMLガイド1.1」 (http://itslab.csce.kyushu-u.ac.jp/~hori/lecture/cs3/2007/ncsa-j.html) • 全体の構造 <html> <head> <meta http-equiv=“CONTENT-TYPE” CONTENT=“text/html; CHARSET=UTF-8”> <title>(ページのタイトルをここにかく)</title> </head> <body> (ページ本体を記述する HTML を書く) </body> </html> 39 本日の実習課題の説明 40 本日の課題 -作業環境の確認 TeraPad で簡単な HTML ファイル(コンテンツは自由:自己紹介など、ただし、 個人・プライバシー情報は含めないようにしてください。)を作成して,UTF-8 形式で保存する. – 保存する際には,「ファイル」メニューの中の,「文字/改行コード指定保 存」を選択する. • 文字コード:UTF-8 • 改行コード:LF WinSCP3 を用いて,そのファイルをサーバ bossp のディレクトリ public_html に転送する. Internet Explorer で,自分の web ページが表示できることを確認する. – http://bossp.is.kyushu-u.ac.jp/~te999999/ (ファイル名) 作成した上記 web ページのURLを,RAMシステムの「レポート」機能で提出 する. – 「レポートのURL」欄を正しく修正してから,提出すること. 41