name: overview class: title, smokescreen, shelf, no-footer # <small>インストールブートキャンプ 01<br>エンジニアのお作法</small> --- name: google-guguru class: title, smokescreen, shelf, no-footer # ぐぐる力 <div class=footnote> <small> (脚注) 以下、ZOOMでリアルタイムの演習なので動画は作りません </small> </div> --- class: compact # 演習課題: ぐぐる(1) <div class=footnote> <small> (脚注) さぁ、きみは、いいウエブページを見つけられるか? </small> </div> お題:ぐーぐる先生に「検索方法」について聞いてみましょう --- name: google-apache class: compact # 演習課題: ぐぐる(2) <div class=footnote> <small> (脚注) さぁ、きみは、いいウエブページを見つけられるか? </small> </div> お題:ぐーぐる先生に apache の設定について聞いてみましょう。 具体的には次の質問をしてみてください > WWWサーバ(apache)にアクセスできるPC(つまりソースIPアドレス)を限定したい - 次回はWWWサーバの作成をします。 来週、この設定は使いませんけど、業務ならよくある話です。 人によっては最終課題で使うかもしれないよね? 例: - 管理画面は、情報ほげほげ部だけがアクセスできる - https://www.example.org/ja/ 以下は日本国内からしかアクセスさせたくない <br> (注: このルールを実際に書き下すことは、すごく難しいです) - 学習カルテには学内から(のみ)アクセスできる --- name: rtfm class: title, smokescreen, shelf, no-footer # ドキュメントをみる力 --- name: official-document class: compact # 公式のドキュメントを探す習慣をつけよう その環境にインストールされているapacheのバージョンを調べてみましょう。 次回はWWWサーバの作成をするので、apacheつながりです 1. apacheがインストールされているかを確認 - 今回は vocareum (AWS Academy)を使いましょう。 でも、出来が悪いので、スライドの方で補完していきます - Vocareum環境にはapacheがインストール済です 1. 演習課題: apacheのバージョンを知りたい --- name: apache-version class: compact # 演習課題: apacheはいってますか? vocareum (AWS Academy)の出来が悪いので、次のコマンドが実行できませんでした。 以下 debian 10.13 で実行した結果を表示しています。 さて、どれがサーバでしょう? ``` % man -k apache a2disconf (8) - enable or disable an apache2 configuration file a2dismod (8) - enable or disable an apache2 module a2dissite (8) - enable or disable an apache2 site / virtual host a2enconf (8) - enable or disable an apache2 configuration file a2enmod (8) - enable or disable an apache2 module a2ensite (8) - enable or disable an apache2 site / virtual host a2query (1) - retrieve runtime configuration from a local Apache 2 HTTP server ab (1) - Apache HTTP server benchmarking tool apache2 (8) - Apache Hypertext Transfer Protocol Server apache2ctl (8) - Apache HTTP server control interface apachectl (8) - Apache HTTP server control interface ... 以下5行省略 ... ``` </small> --- class: compact # 解説 man コマンド <div class=footnote> <small> (脚注1) Debian 10の場合、データベースは/var/cache/man/index.dbです。 <br> (脚注2) .db はBerkeley DBという(今風に言えば)KEY-VALUEストア、 database engineに当たる部分です。 Unixでは検索を高速化するために、各所でBerkeley DBを使ったキャッシュを使っています。 設定やドキュメントはテキストファイルですけど、 こうすれば検索だけは高速になるという仕組みです </small> </div> <small> 前ページで利用したコマンドは、次のマニュアル検索モード相当のコマンドです。 最近のUnixでは、 OSインストール時に、 マニュアルの検索データベースを作成しています ``` man -k キーワード 例(前頁の例): man -k apache ``` ちなみにmanのノーマルな使い方は、引数に「コマンド名」を取る実行する形式です ``` man コマンド名 例(前頁の結果を見て、apache2のマニュアルを見る): man apache2 ``` </small> --- class: compact # 演習課題: apacheはいってますか? <div class=footnote> <small> (脚注1) debian系ではapache2という名前ですが、 これはインストール時に名前を変更しているせいです <br> (脚注2) そもそもapacheはApache HTTP serverというのが正式な名称なので、 httpdが正しくてdebianがカスタマイズしすぎなのです。 デフォルトはhttpdなので、多くのOSではhttpdです。 設計など全体が分かる立場のひとは、 こういった知識(場合によっては商用インターネット30年の歴史知識)も必要です </small> </div> Q: 以下 debian 10.13 で実行した結果を表示しています。さて、どれがサーバでしょう? <br> A: Serverという文字があります。これですね。答えは apache2 ``` % man -k apache ... 省略 ... apache2 (8) - Apache Hypertext Transfer Protocol Server ... 省略 ... ``` </small> --- class: compact # 演習課題: コマンドラインヘルプを使う <div class=footnote> <small> (脚注1) 1970年代から存在する由緒あるコマンドは基本的に-hオプションをサポートしています。 ただし、由緒あるコマンドでも-hを他の意味に使っているもの(例: ln)もあります。 一方、--helpはFSF(Free Software Foundation)のGNUプロジェクトが始めた用法です。 1980年代中盤以降に作成されたソフトウエアでは--helpをサポートすることが多いです。 なおLinuxのコマンドは基本的にGNU由来なので、たいてい--helpが使えます <br> (脚注2) GNUがUnix互換コマンドを好き勝手に作ったため、 伝統のコマンドでもオプションの互換性がない </small> </div> - apache2 コマンド?これの使い方を調べましょう - Unixコマンドは**簡潔な使い方を表示**するように作られています。 また必ず**マニュアル**もインストールします。 **この2つはUnixコマンド作成における礼儀作法**です。 まともなコマンドは、必ず、この礼儀を守っています - 簡潔な使い方の表示は、あるオプションをつけて実行すれば表示されるお約束です - **`-h`オプション**が標準です - **`--help`オプション**も試して見てください - 単に`-h`もしくは`--help`だけをつけて実行するなら、 まず変な副作用はないので、とりあえずやってみてください --- class: compact # 演習課題: apache2 -h <small> ``` % apache2 -h Usage: /usr/sbin/apache2 [-D name] [-d directory] [-f file] [-C "directive"] [-c "directive"] [-k start|restart|graceful|graceful-stop|stop] [-v] [-V] [-h] [-l] [-L] [-t] [-T] [-S] [-X] Options: -D name : define a name for use in <IfDefine name> directives -d directory : specify an alternate initial ServerRoot -f file : specify an alternate ServerConfigFile -C "directive" : process directive before reading config files -c "directive" : process directive after reading config files -e level : show startup errors of level (see LogLevel) -E file : log startup errors to file -v : show version number -V : show compile settings -h : list available command line options (this page) ... 以下11行省略 ... ``` </small> --- class: compact # 演習課題: apacheのバージョンを調べる Vocareum (AWS Academy)のターミナルで`apache2 -v`を実行してみましょう <small> ``` % apache2 -v Server version: Apache/2.4.18 (Ubuntu) Server built: 2020-08-12T21:35:50 ``` </small> --- class: compact # 演習課題: apacheのマニュアルを見る Vocareum (AWS Academy)のターミナルで`man apache2`を実行してみましょう <small> ``` % man apache2 APACHE2(8) apache2 APACHE2(8) NAME apache2 - Apache Hypertext Transfer Protocol Server SYNOPSIS apache2 [ -d serverroot ] [ -f config ] [ -C directive ] [ -c directive ] [ -D parameter ] [ -e level ] [ -E file ] [ -k start|restart|graceful|stop|graceful- stop ] [ -R directory ] [ -h ] [ -l ] [ -L ] [ -S ] [ -t ] [ -v ] [ -V ] [ -X ] [ -M ] SUMMARY apache2 is the Apache HyperText Transfer Protocol (HTTP) server program. It is designed to be run as a standalone daemon process. When used like this it will ... 以下略 ... ``` </small> --- class: compact # まとめ: Unixのお作法 - Unixコマンドは**簡潔な使い方を表示**するし、**マニュアル**も完備 - **`-h`オプション**が標準、- **`--help`オプション**も試してみるとよい - バージョンを表示させたい場合`-v`もしくは`--version`が使えることが多い - マニュアルを見るには`man コマンド名` - 最近のLinuxでは日本語版のマニュアルが用意されていることも多いです - ぐぐってしまうことも多いですけどね。 たとえば`apache http server documentation`で検索すれば -> https://httpd.apache.org/docs/ が見つかります (Version 2.4に進めば自動的に日本語訳のページに切り替わります;さすが有名ソフトウエア) --- name: oss-model class: title, smokescreen, shelf, no-footer # オープンソース開発スタイルに慣れる <div class=footnote> <small> (脚注) オープンソース運動の解説は、 <A HREF="https://lectures.fml.org/slides/columns/os/opensource/"> 知識編の最後 </A> にあります </small> </div> --- name: github-issue class: compact # 演習課題: github issueを使ってみよう <div class=footnote> <small> (脚注) 今日は慣れるだけです。次回からは積極的に使っていきます。なんでもissueにあげてね </small> </div> - https://github.com/lectures-fmlorg/os-2022 - この授業では、半年、この**リポジトリ(CC BY-SA 4.0**)を使います - **github IDを用意してください。裏垢でもok(?むしろ推奨??)** - 今回は使ってみる体験をします(次回以降、積極的に使っていきます) - TA/SAさん、実演よろしく - 課題: 慣れてみましょう ... 本日は技術関係しばりナシ無礼講(?)です。 なんでもいいから issue をあげたり(作成したり)、いいねを押してみてください - 例: おすすめのアニメ、マンガをおしえてください(今期でも歴史上最強でもok) - 例: エヴァ何がおもしろいのか分かりません <br> (ほぼyahoo知恵袋的な使い方ですが、そういう使い方でもokです) --- name: enquette class: title, smokescreen, shelf, no-footer # おわりに <div class=footnote> <small> (脚注) <A HREF="/slides/os/intro/#ending">オリエンテーションのスライド</A>へもどれ </small> </div> --- name: ending class: compact # 残りの時間でおねがいね - ~~アンケート~~ポータルの目標設定をおねがいします(本日の出席代わり/EL代わり) - 演習関連のアンケートを第2回におねがいするのでよろしくね - 本日の演習のまとめ - エンジニアの日常、こころがまえ、姿勢 - ぐぐる力 - まずヘルプとオンラインマニュアルを見る習慣づけ - オープンソース開発スタイルに慣れよう - 次回からはLAMPサーバを構築していきます(全6回) - サーバの構成要素を一回に一要素だけ作っていきます - かなりゆっくりです - 再掲 >ずっと<b>黒い画面</b>の操作です。 >春学期では?だったので今回<b>ぜひ習いたいという意欲のある人だけ履修登録を!</b>