SlideShare una empresa de Scribd logo
1 de 73
Descargar para leer sin conexión
Linux 入門
k.sudoh
2016 年 8 月吉日
 
(This page intentinally left blank)
i
目 次
第 I 部 インストール編 1
第 1 章 Linux のインストール 3
1.1 イメージ・ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 仮想マシン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.1 仮想マシンの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.2 新規仮想マシンの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2.3 メモリとハードディスク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Linux のインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 ログイン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 初めての Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.6 画面サイズの自動調整 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
第 2 章 初めての Linux 25
2.1 ログイン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 デスクトップ:Gmone と Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 GUI を使う . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 Firefox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.5 LibreOffice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.6 デスクトップのカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.7 ウインドウとメニュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.8 ランチャーをウインドウ下部へ移す . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
第 II 部 コマンド編 33
第 3 章 コマンドを使う前に 35
3.1 ターミナル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 プロンプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
第 4 章 コマンド入門 37
4.1 最初のコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.2 別のコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3 パスのこと . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.1 ディレクトリ・ツリー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.3.2 相対パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3.3 絶対パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4 コマンドを実行する、ということ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4.1 PATH のこと . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ii
第 5 章 vi 入門 43
5.1 vimtutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 vi の終了方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.3 vi の極意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.4 ex コマンドの神髄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.5 vi のカーソル移動練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
第 6 章 bash, プロへの道 49
6.1 Linux コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.1.1 man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.1.2 通常の作業用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.1.3 開発用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.1.4 システム管理用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.1.5 その他 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2 bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2.1 コマンドの再実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2.2 入力行の編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
第 7 章 Web サーバの構築 55
7.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1.1 必要モジュール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1.2 ソースコードからの構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7.2 apr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.3 apr-util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.4 pcre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.5 apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.6 起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
第 8 章 あとがきにかえて—本当に学ぶべきもの 59
付 録 A ハードディスクへのインストール 61
A.1 全ディスク使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.2 デュアル・ブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
付 録 B 最初にやっておきたいこと 63
B.1 日本語入力環境設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
B.1.1 言語サポートのインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
B.1.2 Mozc のインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
B.2 フォルダ名の英字化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
B.3 root にパスワードを設定する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B.4 sudo でパスワード入力をしないための設定 . . . . . . . . . . . . . . . . . . . . . . . . . . 67
関連図書 69
第I部
インストール編
3
第1章 Linux のインストール
Linux をインストールする方法は大きく分けて三通りあります。
• コンピュータのハードディスクをすべて削除して Linux をインストールする
• 既存の OS(Operating System) を残したまま、ハードディスクの空き部分に Linux をインストール
する(デュアル・ブート)
• 既存の OS 上に仮想マシンを作って、そこに Linux をインストールする
コンピュータの性能を活かすためには最初の方法が最も有効ですが、今使っている環境をすべて壊して
しまうことが出来ない場合には二番目の方法が使えます。ただし、この方法ではハードディスクに十分な
余裕があることが前提です。そこで、ここでは三番目の「仮想マシン」を使った方法について説明します。
1.1 イメージ・ファイル
まず、インストールする Linux のイメージ・ファイルを取得します。このイメージ・ファイルは ISO
フォーマットとして提供されるのが普通です。ここでは Ubuntu(ウブントゥ)と呼ばれる Linux をイン
ストールしますが、下記サイトから最新バージョン(16.04 LTS)を入手します。
https://www.ubuntulinux.jp/News/ubuntu1604-ja-remix
図 1.1: Ubuntu のダウンロード
このページにはミラーサイトがいくつか表示されると思います。近いと思われるところにある ISO イ
メージを選択してダウンロードします。ファイル名は次のものです。
4 第 1 章 Linux のインストール
ubuntu-ja-16.04-desktop-amd64.iso
1.2 仮想マシン
Mac または Windows 上で Linux を稼働させるために、仮想マシン用のソフトウェアを導入します。
仮想マシン用のソフトウェアは有償のものや無償のものを含めて様々ありますが、ここでは Oracle 社の
Virtual Box を使います。
まず、下記サイトから自分の環境に応じたインストーラ―をダウンロードします。
それぞれの環境でダウンロードしたモジュールをダブルクリックすればインストールできます。
https://www.virtualbox.org/wiki/Downloads
図 1.2: VirtualBox
1.2.1 仮想マシンの作成
仮想マシンとは文字通り仮想的なコンピュータです。
Virtual Box を起動すると 図 1.3 の VirtualBox マネージャーの画面が出ます。
この画面イメージではすでに仮想マシンがひとつ作られていますが、初めて起動したとき、左側の仮想
マシンのリストは空になっています。
1.2.2 新規仮想マシンの作成
新しく仮想マシンを作成するためにメニューの「新規 (N)」ボタンを押します。
1.2. 仮想マシン 5
図 1.3: VirtualBox マネージャー
デフォルトでは OS のタイプが “Windows” になっているかもしれませんが、ここでは Linux をインス
トールするので、表 1.1 のように設定します。
表 1.1: 仮想マシンの作成
項目 設定内容
名前 ub1604
タイプ Linux
バージョン Ubuntu(64-bit)
名前は何でも構いません。ここでは Ubuntu のバージョン 16.04 を使うのでこのような名前にしまし
た。タイプとバージョンはこの表のようにします。(図 1.4)
6 第 1 章 Linux のインストール
図 1.4: 仮想マシンの作成
1.2.3 メモリとハードディスク
「次へ」を押すと「メモリーサイズ」や「ハードディスク」を設定する画面が現れます。ここでは新し
く作る仮想マシンの仕様を決めることになります。
表 1.2 の情報を参考に、最後に「仮想ハードディスクの作成」画面が現れるまで進めて下さい。(図 1.5)
表 1.2: 仮想マシンのハードウェア
項目 設定内容
メモリーサイズ 最低 1024MB(出来れば 2048MB)
ハードディスク 仮想ハードディスクを作成する
ハードディスクのファイルタイプ VDI(VirtualBox Disk Image)
物理ハードディスクにあるストレージ 可変サイズ
ファイルの場所とサイズ サイズは 20GB 以上
なお、ハードディスクのサイズを 20GB としていますが、このサイズが固定的にとられるわけではあ
りませんので心配ありません。
ここで「作成」ボタンを押すと新たに仮想マシンが作られ、VirtualBox マネージャー画面に「ub1604」
が現れます。(図 1.6)
1.2. 仮想マシン 7
図 1.5: 仮想ハードディスクの作成
図 1.6: 新仮想マシン
8 第 1 章 Linux のインストール
1.3 Linux のインストール
作成した仮想マシン上に Linux をインストールします。
仮想マシンが新しい 1 台のコンピュータだと思ってくれれば結構です。
さて、Virtual Box マネージャーの画面で、今作った仮想マシン ub1604 が選択されている状態で「起
動」を押します。
これはいわば、新しく作った仮想マシンに電源を入れた状態です。
この状態では仮想マシンのハードディスクは空ですので起動できません。そこで起動用のディスクを設
定することになります。(図 1.7)
図 1.7: 起動ハードディスクを選択
1.1 でダウンロードした ubuntu の ISO イメージファイルを指定します(右端のアイコンをクリックす
ると、ファイル選択画面になります)。
この状態で「起動」を押します。
これは、実際の PC であれば、DVD ドライブに Linux のインストール用 DVD を入れて、電源(また
はリセット)ボタンを押したところです。
これでインストールが始まるはずですが、もしも図 1.8 の画面から進まないようであれば、画面のメ
ニューにある「仮想マシン」-「リセット」を押して下さい。
1.3. Linux のインストール 9
図 1.8: 再起動中
インストールが始まると最初に図 1.9 の画面になります。
図 1.9: ようこそ
「日本語」を選択して、右側の「Ubuntu をインストール」を押します。
10 第 1 章 Linux のインストール
Ubuntu のインストール中にアップデートをダウンロードするにチェックを入れておきます。(図 1.10)
図 1.10: Ubuntu のインストール準備
「インストールの種類」の画面(図 1.11)では「ディスクを削除して Ubuntu をインストール」を選択
します。
図 1.11: インストールの種類
ここまででインストールの準備が出来ました。
「インストール」を押します。
「ディスクに変更を書き込みますか?」の画面になります。(図 1.12)
1.3. Linux のインストール 11
図 1.12: ディスクへの書き込み
ここで「続ける」を押すと、ハードディスク(仮想の)のパーティション・テーブルに書き込みを行い
ます。本物の PC であれば、これで元のハードディスクの内容が削除されます。
「続ける」を押すと、ここからファイルのコピーなど、本来の意味でのインストールが始まります。
インストールの進行と並行して、いくつか設定内容の問い合わせがあるので順に設定します。
住んでいる場所(図 1.13)やキーボード(図 1.14)について確認されますので設定して下さい。ほとん
どの場合はデフォルトのままで大丈夫のはずです。
図 1.13: 場所
12 第 1 章 Linux のインストール
図 1.14: キーボードレイアウト
次が最後の入力です。(図 1.15)
図 1.15: あなたの情報を入力してください
ここで入力するものの意味を表 1.3 に示します。
1.3. Linux のインストール 13
表 1.3: ユーザ設定
項目 設定内容
あなたの名前 ログイン画面にフルネームが表示されます。そのため
のものです
コンピューターの名前 所謂「ホスト名」です
ユーザー名 ログイン時に使う名前でもあり、コンピュータ内に作
られるみなさんのホームディレクトリ(フォルダ)の
名前でもあります。半角英数字にしましょう
パスワードの入力 パスワードです。短いものや辞書から想像のつくものは
望ましくはありませんが設定することは可能です(図
1.16 参照)
パスワードの確認 パスワードをもう一度入れます
ここで入力するもので特に肝心なのは「ユーザー名」と「パスワード」です。パスワードは同じものを
2 回入力しますが忘れないようにして下さい。
図 1.16: ユーザ情報
これらの入力が終われば、あとはインストールが終わるのを待つばかりです。
しばらくすると再起動を促すメッセージが表示されます。(図 1.17)
14 第 1 章 Linux のインストール
図 1.17: 再起動
ここでも再起動せず、図 1.18 のような画面で固まってしまうことがあるかもしれませんが、その場合
は「仮想マシン」−「リセット」をして下さい。
図 1.18: リセット
1.4. ログイン 15
1.4 ログイン
これで再起動して最初のログイン画面になります。(図 1.19)
図 1.19: ログイン
ログイン画面には登録されているユーザの名前のリストが出ますが、今は先ほど登録したみなさんの名
前だけがあるはずです。パスワードを入力すればログインできます。(図 1.20)
図 1.20: 初期画面
ここでソフトウェアの更新がある旨のお知らせが出ることがありますが(図 1.21)、今は無視して下
さい。
16 第 1 章 Linux のインストール
図 1.21: ソフトウェアの更新
ところで、この Linux のウインドウの枠を「最大化」してみて下さい。
図 1.22: ウインドウの最大化
図 1.22 のように、Linux の画面部分のサイズは変わらないでしょう。
これについても後ほど直します。
1.5. 初めての Linux 17
1.5 初めての Linux
左側にあるメニューの一番上をクリックして検索します。(図 1.23)
図 1.23: アプリケーション検索
“terminal” と入力してください。関連するアプリケーションが表示されます。
「端末」をクリックすると端末エミュレータが起動します。(図 1.24)
図 1.24: 端末の起動
端末が起動された状態を図 1.25 に示します。
18 第 1 章 Linux のインストール
図 1.25: 端末
ところで、端末を起動するために毎回「検索」からするのは面倒です。そこで、左側のバー(これをラ
ンチャーと呼びます)にアイコンを貼り付けましょう。
メニューにある「端末」のアイコンを右クリック-「Launcher に登録」を選びます。(図 1.26)
図 1.26: ランチャー登録
1.6. 画面サイズの自動調整 19
1.6 画面サイズの自動調整
先に進む前に、画面サイズをどうにかしましょう。
この設定のためにはさきほどの端末を使います。
まず、画面のウインドウメニューの「デバイス」-「Guest Additions CD イメージの挿入...」を選択し
ます。
すると、「実行しますか?」というような確認メッセージが出ますが(図 1.27)、ここでは「キャンセ
ル」します。
図 1.27: 自動実行
なお、ランチャーには CD のイメージが表示されています。(図 1.28)
図 1.28: CD イメージ
20 第 1 章 Linux のインストール
続いて、端末で以下のコマンドを実行します(ここではコマンドプロンプトを略して$ と表します)。こ
こで <loginid> はみなさんのログイン名です。それぞれ、自分のログイン ID に置き換えて入力してく
ださい。
$ cd /media/<loginid>/VBOXADDITIONS_5.0.20_106931/
著者の場合は次のようなコマンドになります。(図 1.29)
$ cd /media/sudoh/VBOXADDITIONS_5.0.20_106931/
図 1.29: cd
続けて次のコマンドを入力します。コマンドは sudo です 1
。
パスワードの問い合わせが出るので自分のパスワードを入力します。このとき、入力しても何も表示さ
れずカーソルが動きもしませんが、心配しないで下さい。(図 1.30)
$ sudo ./VBoxLinuxAdditions.run
[sudo] sudoh のパスワード:
図 1.30: VBoxAdditions(1)
このコマンドで Linux のカーネルを再構築します。(図 1.31)
環境によっては時間がかかりますが、やがて終了します。(図 1.32)
1筆者のユーザ ID とは何も関係ありません。
1.6. 画面サイズの自動調整 21
図 1.31: VBoxAdditions(2)
図 1.32: VBoxAdditions(3)
終了したら次のコマンドを入力してください。
$ cd
$ eject
eject を実行すると、左端のランチャにあった CD のイメージがなくなることがわかると思います。
これで画面サイズの調整は終わりです。2
一度再起動しましょう。
右上端のアイコンをクリックするとプルダウンメニューが出ますので(図 1.33)「シャットダウン」を
選びます。
2実際には画面サイズの調整だけでなくホストコンピュータとのフォルダの共有機能などが有効になっています。
22 第 1 章 Linux のインストール
図 1.33: 再起動 (1)
図 1.34: 再起動 (2)
シャットダウン・メニューの左側の「再起動」を選択します。(図 1.34)
再起動してログインウインドウになりますが、ここで、画面の枠の「最大化」を押してみましょう。
Linux 画面がウインドウサイズに追随することがわかるでしょう。(図 1.35)
1.6. 画面サイズの自動調整 23
図 1.35: ウインドウサイズの自動調整
25
第2章 初めての Linux
さぁ、それでは本格的に Linux を使いましょう。
とは言っても、まずは環境整備をしておきます。
2.1 ログイン
ログインはすでにご存じですね。ログイン画面でユーザを選んでパスワードを入力します。
2.2 デスクトップ:Gmone と Unity
Ubuntu の標準のデスクトップ環境は Gnome と呼ばれるものです。また、ウインドウを制御するウイ
ンドウ・マネージャは Unity と呼ばれますが、画面の左側に「ランチャー」があるのが特徴です。
このあたりは特に重要なわけではありませんが、名前だけ覚えておいて下さい。
2.3 GUI を使う
デスクトップを使ってみましょう。
デスクトップ上でマウスを右クリックするとポップアップ・メニューが出ます。ここから背景を変更し
てみて下さい。
また、デスクトップのランチャーとその上にあるアイコンについては、これまでにも若干触れました
が、これについて説明します。すでに「システム設定」はご存知でしょうけれど、マウスをアイコンの上
に持っていくと、説明が出ます。(図 2.1)
図 2.1: システム設定アイコン
全体はデフォルトでは(図 2.2)のようになっています。
26 第 2 章 初めての Linux
図 2.2: デフォルト・ランチャー・アイコン
このデフォルトのアイコンは以下のプログラムを表しています。
表 2.1: デスクトップ
項目 機能
ファイル ファイルやディレクトリを管理、検索する
Firefox ウェブ・ブラウザ Firefox
LibreOffice Writer MS Office の Word 相当
LibreOffice Calc MS Office の Excel 相当
LibreOffice Impress MS Office の PowerPoint 相当
Ubuntu Software ライブラリ管理
Amazon Amazon サイト(米国)を開くウェブ・ブラウザ
システム設定 システム環境設定(詳細は 2.6 で)
これらのアイコンをクリックすればそのアプリケーションが起動します。
とりあえず、これらを少し使ってみましょう。
2.4. Firefox 27
2.4 Firefox
ご存知 Firefox です。
図 2.3: Firefox アイコン
これが Ubuntu では標準のウェブ・ブラウザです。
なお、chrome の Linux 版をインストールすることもできます。
使い勝手を少し試してみて下さい。
2.5 LibreOffice
次に重要なのが Office Suite である LibreOffice です。
Microsoft Office はご存知だと思いますが、機能的にはそれと同等の Open Source Software(OSS) です。
ランチャーにはデフォルトで三つの LibreOffice ツールが表示されています。
図 2.4: LibreOffice アイコン
それぞれ MS Office の Word, Excel そして PowerPoint に相当します。
LibreOffice のファイル形式は MS Office のそれとは直接の互換性はありませんが、MS Office のファ
イル(.doc, .docx, .xls, .xlsx, .ppt, .pptx)を LibreOffice で開いて読み書きすることが出来ます(その
後、LibreOffice の形式で保存することもできます)。
28 第 2 章 初めての Linux
2.6 デスクトップのカスタマイズ
ランチャーに「システム設定」のアイコンがあります。
図 2.5: システム設定アイコン
これをクリックするとシステム設定画面が出ます。(図 2.6)
図 2.6: システム設定
アイコンと説明文字があるのでどのようなことができるかはだいたいわかると思いますが、最初に以下
の項目をカスタマイズしておきましょう。
• 画面の明るさとロック
いわゆるスクリーンセーバーです。一定時間、キー操作等をしないと画面がロックされます。ロッ
クの解除が面倒な場合は、この機能をオフにします。
• 外観
画面の背景イメージなどを変更します。ランチャーのアイコンの大きさやウインドウ・マネージャ
のテーマを変更することが出来ます。
デスクトップの操作はマウスを使うのが基本です。このようなユーザ・インタフェースを Graphical User
Interface(GUI) と呼びますが、Linux を使いこなすためには Character User Interface(CUI) を使いこな
さなければなりません。
2.7. ウインドウとメニュー 29
2.7 ウインドウとメニュー
各ウインドウにはタイトルバーにメニューがありますが、通常は表示されていません。(図 2.7)
図 2.7: ウインドウ・メニュー
デフォルト設定では、マウスがデスクトップのメニューバーの上に移動したときに、現在アクティブに
なっているウインドウのメニューがメニューバー上に現れます。(図 2.8) Mac と同様ですね。
図 2.8: メニューバー上のメニュー
設定によっては、各ウインドウのタイトルバーに出すこともできます。(図 2.9)
この設定を変更するためには「システム管理」の「外観」-「挙動」を選びます。
デフォルトでは図 2.10 のようになっていますが、これを図 2.11 のようにすれば、ウインドウのタイト
ルバーの中にメニューが出ます。
30 第 2 章 初めての Linux
図 2.9: ウインドウ上のメニュー
図 2.10: システム設定 (1)
図 2.11: システム設定 (2)
2.8 ランチャーをウインドウ下部へ移す
デフォルトではランチャーは画面の左側にありますが、これを画面の下部に移せます。(図 2.12)
ターミナルで次のコマンドを叩きます。
2.8. ランチャーをウインドウ下部へ移す 31
$ gsettings set com.canonical.Unity.Launcher launcher-position Bottom
図 2.12: ランチャーの位置を変更
元に戻すのであれば次のコマンドを打ちます。
$ gsettings reset com.canonical.Unity.Launcher launcher-position
第II部
コマンド編
35
第3章 コマンドを使う前に
3.1 ターミナル
「ターミナル」とは正しくはターミナル・エミュレータ(Terminal Emulator)と呼ばれます。ひとつ
のウインドウで「端末」(Terminal)を模倣・模擬(エミュレーション;Emulation)しているので、こう
呼ばれます。以後は、ターミナル・エミュレータを略してターミナルと呼びます。
ターミナルはあくまで端末の画面をソフトウェアで模倣しているだけなので、端末への入出力を制御す
るプログラムが必要です。Linux でターミナルを起動すると、その入出力を制御する bash と呼ばれるプ
ログラムが動きます。このようなプログラムをコマンド・インタプリタ(Command Interpreter)と呼び
ます。
3.2 プロンプト
ターミナルを開くと最初の行に次のようなものが現れます。
username@hostname:~$
表示されている文字列は人によって若干異なりますが、~ や $ があるのは同じだと思います。この文字
列の中身の意味は次の通りです。
表 3.1: プロンプト文字列
文字列 説明
username ログイン中のユーザ ID
hostname このコンピュータのホスト名(コンピュータ名)
˜ 現在いるディレクトリ。˜は自分のホームディレクトリを表す
$ プロンプト文字。root ユーザの場合は # になるのが一般的
この文字列は bash が出力します。bash はこれを出すことで「コマンドを入力していいですよ」と、コ
マンド入力を待っていることを表します。
なお、筆者の場合は以下のようなプロンプトになります。
sudoh@ub1604:~$
この状態で、例えば ls コマンドを実行する際の画面イメージは次のようになります。
sudoh@ub1604:~$ ls
しかしこれでは説明が煩雑なので、プロンプトは $ だけで表します。つまり、画面イメージを次のよう
に表します。
$ ls
$ は「入力しない」ことに注意して下さい。
37
第4章 コマンド入門
いよいよ Linux コマンドを使います。
特に断らない限り、ターミナルを起動してその上でコマンド入力するものだと思って下さい。
4.1 最初のコマンド
基本的なコマンドを試してみます。
今は、どんなものが表示されるか少しだけ気を留めてくれれば結構です。
繰り返しますが、先頭の $ は入力しないで下さい。
$ cd
$ pwd
$ mkdir work123
$ ls
$ cd work123
$ pwd
$ touch abc
$ ls -l
$ rm abc
$ ls
$ cd ..
$ rmdir work123
最後から 2 番目は cd のあとにスペースをひとつとドット(.)を二つ入力します。
これらは基本的なコマンドばかりですがそれぞれの意味を簡単に説明します。(表 4.1)
表 4.1: 基本コマンドの意味
コマンド 説明
cd
作業ディレクトリを変更する。パラメータがない場合はホームディレクトリになる。
change directory
pwd 現在の作業ディレクトリを表示する。print working directory
mkdir ディレクトリを作成する。make directory
ls ファイルやディレクトリの情報を表示する。list
touch ファイルの更新日付を更新する。ファイルがなければ空のファイルを作る
rm ファイルを削除する。remove
rmdir ディレクトリを削除する。remove directory
38 第 4 章 コマンド入門
4.2 別のコマンド
もう一度、さきほどやったのと同じようなことをしてみます。
以下のコマンドを順に叩いて下さい。
$ cd
$ pwd
$ mkdir work123
$ ls
$ ls work123
$ touch work123/abc
$ ls -l work123
$ rm work123/abc
$ ls work123
$ rmdir work123
最初の cd はパラメータ無しで実行していますが、これは自分のホームディレクトリに戻るためです。
念のために実行しました。
さて、初めの例では cd を 3 回実行しています。それだけを取り出すと次のコマンドでした。
$ cd
$ cd work123
(中略)
$ cd ..
これらのうちあとの 2 回が今回はありません。つまり作業ディレクトリを変更せずに先の例と同じこと
を実行したのです。作業ディレクトリを変更しなくても同じことができるのです!
このように作業ディレクトリを変えずに何でもできます。ただし、コマンドのパラメータが少し違って
いることにお気づきでしょう。
上の二回のコマンドの実行を、対応させてみます。
1 回目 2 回目
1 cd cd
2 pwd pwd
3 mkdir work123 mkdir work123
4 ls ls
5 cd work123
6 pwd
7 touch abc touch work123/abc
8 ls -l ls -l work123
9 rm abc rm work123/abc
10 ls ls work123
11 cd ..
12 rm work123 rm work123
違いについて考えて下さい。
4.3. パスのこと 39
解説 上の二つの実行例では、どちらも同じことをしています。何をしたかというと、以下の内容です。
1. ホームディレクトリの下に work123 という名前のディレクトリを作る
2. そのディレクトリに abc という名前の空のファイルを作る
3. 作ったファイル abc を削除する
4. 作ったディレクトリ work123 を削除する
単にディレクトリとファイルを作って、それを削除しただけです。
問題はファイルの指定の仕方です。
ファイルを作るとき、最初の例では touch abc としましたが、後の例では touch work123/abc とし
ました。
もうおわかりですね。
最初の例では touch の前に cd work123 で作業ディレクトリを変更していますが、後の例ではそれを
していません。そのため、ファイル abc を touch や rm のパラメータとして指定するために、後の例で
は touck work123/abc、rm work123/abc としたわけです。
4.3 パスのこと
4.3.1 ディレクトリ・ツリー
ディレクトリが階層的に連なり、ファイルはいずれかのディレクトリに含まれます。この階層構造は木
(tree)を逆さまにしたような形をしています。木の根(root)に相当する部分をルート・ディレクトリ
(root directory)と呼び、/(スラッシュ)で表します。
Linux のルート・ディレクトリの直下にあるディレクトリのうち、代表的なものを示します。(図 4.1)
/
├── bin
├── boot
├── dev
├── etc
├── home
│ └── sudoh
├── lib
├── sbin
├── sys
├── tmp
├── usr
│ ├── bin
│ ├── include
│ ├── lib
│ └── local
└── var
図 4.1: ディレクトリ構造
40 第 4 章 コマンド入門
4.3.2 相対パス
最初のコマンド実行の二つの例でファイルの指定のしかたが異なりましたが(abc と work123/abc)こ
のような指定の仕方をどちらも「相対パス」と呼びます。「相対」というのは「現在の作業ディレクトリ
からの相対的な位置にある」ものを指定するためです。「パス」という言い方については後で説明します。
最初の例ではファイル名だけを指定しましたが、これは「現在の作業ディレクトリにある」ファイルだ
からファイル名だけで十分でした。2 番目の例では現在の作業ディレクトリは自分のホームディレクトリ
で、ファイルがあるディレクトリではありません。ですので「今いる場所」(=ホームディレクトリ)か
ら見れば work123 ディレクトリの下にある abc を指定するために work123/abc としたわけです。
4.3.3 絶対パス
もうひとつの指定の仕方が「絶対パス」です。「フルパス」とも言います。
例えば、次のコマンドを実行して下さい。
$ ls -l /usr/local
このコマンドの引数にある /usr/local がフルパスです。フルパスはスラッシュ(/)から始まります。
この / はルート・ディレクトリと呼ばれるもので、ファイル・システムの最上位を表します。すべての
ファイルとディレクトリはこのルート・ディレクトリからの階層構造のどこかに位置しています。そして
あるファイルを特定するためにはルート・ディレクトリからの道順(= path; パス)を指定すればよい、
ということです。
備考 先頭にスラッシュ(/)を付けないものはすべて相対パスです。また、特殊な相対パス指定の方法
として ..(ドット二個)があります。これはコマンドの例で cd .. のように使いました。これは現在の
ディレクトリのひとつ上のディレクトリを表します。
結局、相対パスを指定する際には現在の作業ディレクトリが重要になるわけです。それで、ときどき
pwd コマンドを打って現在の作業ディレクトリを確認するのです。そして、もうお分かりと思いますが、
すべてをフルパス指定で済ませるのであれば作業ディレクトリを変える必要はありません。ただし、その
場合はコマンドは長くなります。そして、入力する文字列が長くなれば間違える可能性(=危険性)も高
まります。
4.4 コマンドを実行する、ということ
前のセクションの最後のコマンドをもう一度見てみます。
$ ls -l /usr/local
これを次のように入力したらどうなるでしょう。
$ /bin/ls -l /usr/local
前と同じ結果になったと思います。
では次のコマンドを打ってみて下さい。
$ which ls
4.4. コマンドを実行する、ということ 41
どのように表示されたでしょうか?
大部分の方は次のように表示されたと思います。
/bin/ls
これは次のことを表しています。
bash のコマンド入力で単に ls と入力すると、実行されるのは/bin/ls である。
つまり which コマンドは、ls コマンドを入力した際に起動されるプログラム・モジュール(ファイル)
のフルパスを表示します。そして、この説明の中にすでに表れていますが、もうひとつの重要なことをも
意味しています。
bash が「コマンドを実行する」とは、そのプログラム・モジュール(ファイル)を探して、そ
れを起動することである。
「コマンドの実行」と書いてきましたが、それはまさに実行モジュール(=プログラム)を起動するこ
となのです 1
。従って、bash に伝えるべきはコマンドの名前(=ファイル名)ではなく、そのファイルの
「パス」なのです。ただし、基本的なコマンドについては bash がその置かれている場所を知っているの
で自動的に探してくれるわけです 2
。
Linux の場合 ls は「標準」のコマンドで /bin/ に置かれるのが普通です。
では、ls とだけ入力すると、なぜ /bin/ls が起動されるのでしょう?
4.4.1 PATH のこと
ここで次のコマンドを叩いてみてください。
$ echo $PATH
何が表示されたでしょうか。
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:...(省略)
これは環境変数の PATH というものに設定されている内容です。コロン(:)で区切っていくつかのディ
レクトリを並べたものを設定します。
この PATH がどのように働くかというと...
bash は入力された「コマンド」の実行ファイルを探すときに、この PATH に設定されている
ディレクトリを探す
ということなのです。
PATH には複数のディレクトリが指定されていますが、bash はコマンドを探す際にそれらのディレクト
リを順に探します。そして最初にみつかったファイルを実行します。PATH には /bin も含まれています。
従って、コマンドとして単に ls と指定すると /bin/ls が実行されるのです 3
。
1これには少し嘘があります。「コマンド」の中にはプログラムではなく bash の組み込みコマンドもあります。
2ここにも少し嘘があります。詳細は次のセクションで説明します。
3もしも、ですが、PATH に設定されている他のディレクトリにも ls があったとするとどうなるでしょう?それは、PATH のディ
レクトリの並びの中で、「最初」にみつかった ls が起動されます。なので、PATH の中のディレクトリの順番はとても重要です。
43
第5章 vi 入門
CUI でコマンドを駆使する際には、これに加えていろいろな設定を「手作業で」変更することがありま
す。「手作業」と呼ぶのは、その設定を行うための GUI がない、という意味です。つまり「設定ファイル
を編集」する必要があります。上で PATH を書き換えることをしましたが、これもそのうちのひとつです。
設定ファイルは、多くの場合単純なテキスト・ファイルです 1
。
テキスト・ファイルはテキスト・エディタで編集します。
Linux の標準的なテキスト・エディタは vi です。拡張版は vim と呼ばれますが総称して vi と呼びま
す。フリーソフトのエディタなどもありますが vi が基本です。
やはり本をちゃんと読む必要があります [3]。
実は、vi ほど取っ付きにくいエディタはありません。最初は「なんて使いにくいんだ!」と腹が立って
くるかもしれません。しかしながら、慣れてしまうと「なんと使いやすいんだ!」と思うはずです。しば
らくは練習しないと使いこなせませんが、Linux 操作や Linux 上でシステム開発するためには必須です。
上でも書きましたが、vi の全貌を知るためには本を丸ごと読むほかありません。そして、これも bash
と同様、それだけの学習をするだけの価値があります。ただ、今は本を読んでいるだけの暇がありません
ので、それは皆さんの宿題としてここでは、もうすこし取っ付きやすい学習方法を説明します。
5.1 vimtutor
vi の拡張版が vim ですが、それを学習するためのプログラムがあります。vimtutor です。
しかし、vimtutor はデフォルトではインストールされていません。
そこで、次のコマンドを実行します 2
。
$ sudo apt install vim
これで vimtutor 関連のモジュールがインストールされました。
$ vimtutor
で vimtutor が開きます。
なお、ターミナルのウインドウは大きくした方が使いやすいでしょう。(図 5.1)
1ここで「単純な」というのは、例えば Office ツールの Excel や Word が作成するファイルのように、特別な構造を持ってい
るものではない、ということを意味しています。
2vimtutor がインストールされていない状態で
$ vimtutor
とすると次のようなエラーが出力されます。
プログラム ’vimtutor’ はまだインストールされていません。次のように入力することでインストールできます。
sudo apt install vim-runtime
ところが、ここに書かれているコマンドを実行するだけでは vimtutor は正しくインストールされません。そこで、本文中にあ
るような追加インストールをしています。
44 第 5 章 vi 入門
図 5.1: vimtutor
vimtutor は実際には vi が起動されて、チュートリアル用のファイルを自分用に開くだけのことです。
つまり、見ているファイルを vi で開いたところです。あとはここに書かれている「レッスン」を順にこ
なしていくだけです。指示されている通りにカーソルを移動し、また、指定されている通りにテキストを
編集して下さい。
初めはカーソルを移動するためにキーボードの矢印キーを使っても構いませんが、レッスン 1.1 でカー
ソルの移動を学んだ後は、そこで学んだキーを使ってカーソルを移動させて下さい。
よろしいでしょうか、ここからはキーボードの矢印キーの使用は禁止です!
5.2 vi の終了方法
vi は途中でおかしくなると終了させることすらできなくなることがあります。そんな場合は ESC キー
を何度か押したあと
:q! <ENTER>
を入力してください。
5.3. vi の極意 45
5.3 vi の極意
vimtutor で練習すれば vi の「フルスクリーン・エディタ」としての主な機能は使えるようになると
思います。しか∼し、vimtutor で学べるのは vi の持つ機能の半分にすぎません。
残りの半分とは何か?
それは ex コマンドと呼ばれるものです。
vi は、実はテキスト・エディタ本体ではなく、そのユーザインタフェース部分だけを制御する部分に
すぎません。テキスト・エディタ本体こそ ex なのです。
画面上でカーソルを自由に移動させ、目的の箇所で文字と追加・削除・変更などとするために vi のコ
マンドがあります。これを学ぶのが vimtutor でした。残りの半分である ex コマンドは、画面上で操作
するというよりは、対象のデータ(バッファと呼ばれます)を行の集まりと見て、行単位で処理するため
のコマンドです。
実は ex コマンドはすでに少しだけ使っています。vi を終了させる際に :q! と打ったと思います。こ
の ’:’(コロン)で始めるコマンドが ex コマンドなのです。
5.4 ex コマンドの神髄
ex コマンドの一端を示します。
:%s/abc/xyz/g
このコマンドは、編集中のテキストの中のすべての abc を xyz に置き換えます。
同様に
:g/abc/d
は abc を含んでいる行をすべて削除します。
このようにテキスト全体に対して同じようなことをしたい場合に ex コマンドは実に強力です。
この節には「ex コマンドの神髄」と名付けましたが、まだこれだけではその真価をお伝えしたことに
はなりません。
:%s/^abc/xyz/
は最初の例と少し違うだけですが、単に abc を置き換えるのではなく、「行の先頭にある abc」だけを xyz
に置き換えます。’ˆ’ が「行の先頭」を表します。
このように、特別な意味を持つ文字と組み合わせることで様々な文字の「クラス」を表すことができる
のです。このような文字列のパターンの表現方法を「正規表現」(Regular Expression)と呼びます。RE
あるいは R.E. と略す場合もあります。
Linux では正規表現が使えるのは vi の中だけではありません。bash のコマンドでも引数でファイルを
指定する際などに使います。
ここまで来ると短期間のトレーニングでは伝えきれない範囲に足を踏み入れることになります。ぜひ本
を通読して vi の神髄に触れていただきたいと思います。
46 第 5 章 vi 入門
5.5 vi のカーソル移動練習
vi のカーソル移動は h, j, k, l で行いますが、これに慣れるためにゲームで練習しましょう。
まず、プログラムをインストールします。
$ sudo apt install bsdgames
インストールが終わったら、次のコマンドを実行します。
$ worm
worm を起動すると図 5.2 の画面になります。
図 5.2: worm(1)
worm と名付けれらているように ooooooo@ は虫です。同時に画面には数字がひとつ現れます。h, j, k,
l のどれかのキーを押すとスタートしますが、虫は少しずつ進んでいきます。
ゲームの仕方は簡単です。
• vi のカーソル操作(h,j,k,l)で虫を上下左右に動かします
• 移動するのは頭の部分(@)です
• この頭の部分が数字のところを通過すればその数字の値が得点に加えられます
• 虫の長さも次第に長くなります
• 頭が壁や自分の体にぶつかるとゲームオーバーです
ゲームを進めると虫が長くなっていくとともに、ターゲットの数字の現れる位置が微妙なところになる
ので、どんどん難しくなっていきます。(図 5.3)
5.5. vi のカーソル移動練習 47
(1) (2)
(3) (4)
図 5.3: worm(2)
これで vi のカーソル操作はしっかり身につくでしょう。
49
第6章 bash, プロへの道
bash でコマンドを実行することは実施しました。
ここから先へ進むためには何を学ばねばならないでしょうか?
大きく分けると二つの面があります。多数の Linux コマンドと、それらを起動するための bash そのも
のです。
6.1 Linux コマンド
数多くの Linux のコマンドがありますが、これらはひとつひとつ学ぶ必要があります。しかしながら、
すべてのコマンドをマスターする必要は全くありません。特定の作業のためだけに使うコマンドも多数あ
りますし、一生使わないものもあるかもしれません。ですからコマンドだけを順番に覚えようとしてもあ
まり意味がないでしょう。
そうではなく、Linux が持つ基本機能に関連づけて実際に使ってみるのが良いでしょう。
6.1.1 man
最も重要なコマンドのひとつに man があります。これはマニュアルを参照するためのコマンドです。詳
しい使い方を知るためには次のコマンドを実行して下さい。
$ man man
つまり、man コマンドで man のマニュアルを読むということです。
さて、Linux コマンドには多くのコマンドがありますが、それらを使う場面が若干異なります。もちろ
ん、どのコマンドをいつどような場面で使っても構いませんが、目的により若干の違いがあります。
以下では四つの場面に分けて良く使われるコマンドを列挙します。
• 通常の作業
• 開発
• システム管理
• その他
なお、どちらかといえばシステム管理用ではあるけれども、日常的にも使うようなものは通常に入れま
した。また、「その他」は普段使うことはめったにありませんが、何かのときには必要になるというよう
なものです。
各コマンドに簡単な説明だけを書きます。詳しくは man コマンドで調べて下さい。
50 第 6 章 bash, プロへの道
6.1.2 通常の作業用
• cat:ファイルの中身を表示する
• chmod:ファイルのパーミッション(アクセス権)を変更する
• chown:ファイルのオーナー(持ち主)を変更する
• cp:ファイルをコピーする
• diff:ファイルの差分を表示する
• echo:引数の文字列をそのまま表示する
• grep:ファイルから正規表現で指定された文字列に一致する行を表示する
• head:ファイルの先頭部分を表示する
• kill:プロセスにシグナルを送る(プロセスを強制終了させる)
• more:ファイルをページ単位で表示する
• less:more と同様であるがより強力
• ln:ファイルのリンク(ソフト/ハード)を作成する
• ls:ファイルリストを表示する
• mv:ファイルを移動する
• nkf:日本語文字コードを変換する
• rm:ファイルを削除する
• sort:ファイルをソート(並び替え)する
• ssh:安全なリモート接続を行う
• tail:ファイルの末尾を表示する
• tar:テープアーカイブ形式に圧縮/解凍をする
• uname:システム名を表示する
• unzip:zip ファイルを解凍する
• who:システムの利用者を表示する
• zip:zip 圧縮する
6.1.3 開発用
• gcc:GCC コンパイラ
• make:ビルドツール
6.2. bash 51
6.1.4 システム管理用
• at:指定時刻にコマンドを実行する
• apt:パッケージ管理ツール
• fdisk:ディスクを初期化する
• fsck:ファイルシステムのチェック/修復を行う
• iptables:IP パケットの制御を行う
• mount:ハードディスクをファイルシステムにマウントする
• netstat:ネットワークの状態を見る
• nice:プロセスの優先度を変更する(下げる)
• nslookup:DNS を調べる
• ping:ICMP の echo コマンドを送信してネットワーク上のマシン/機器からの応答を見る
• ps:プロセスの状態を見る
• shutdown:システムをシャットダウンする
• vmstat:仮想記憶の状態を見る
6.1.5 その他
• dd:ハードウェアにたいしてデータストリームの書き込み/読み出しを行う
6.2 bash
bash はコマンド入力とその実行をサポートするための様々な機能を持っています。その一端を示します。
1. 以前に実行したコマンドを再実行する
2. 入力行の編集をする
3. 同じような操作を複数の対象(例えばファイル)に対して行う場合、ひとつの記述で複数の処理を
繰り返して実行する
4. 複数のコマンドをつないで実行する(パイプライン処理)
5. 一連のコマンドをスクリプト(プログラム)として実行する
しかしながら、これらの詳細を説明するためには本一冊分を要します [2]。ここではキー操作を楽にす
る最初の二つの機能について説明します。
52 第 6 章 bash, プロへの道
6.2.1 コマンドの再実行
以前に実行したコマンドを次のコマンドで確認することが出来ます。
$ history
このコマンドを実行すると次のような表示がされます(ただし、人によって表示内容は異なります)。
✓ ✏
265 cd
266 pwd
267 mkdir work123
268 ls
269 cd work123
270 pwd
271 touch abc
272 ls -l
273 rm abc
274 ls
275 cd ..
276 rmdir work123
277 cd
278 pwd
279 mkdir work123
280 ls
281 ls work123
282 touch work123/abc
283 ls -l work123
284 rm work123/abc
285 ls work123
286 rmdir work123
287 history
✒ ✑
これまでに実行したコマンドが表示されます。左端にある数字はコマンドの番号です。
この番号を元に、次のようにすると過去に実行したコマンドを再度実行することができます。
$ !<番号>
つまり、! にコマンドの番号だけを入力します。例えば
$ !272
のようにします。すると
$ ls -l
を実行します。
なお、直前に実行したコマンドをもう一度実行したい場合には
$ !!
と、! を二つ入力します。
6.2. bash 53
6.2.2 入力行の編集
コマンドを入力する際、コマンドや引数の文字を間違えることがあります。これは仕方のないことです
が、問題はそれをいかに素早く修正できるか、です。1 行の入力の中のことなので出来ることは限られて
います。
普通であれば Backspace で直前の文字を消して改めて入力します。しかし、間違えてすぐに気づかず、
さらに文字を入力してから気がつくこともあるでしょう。そのような場合、Backspace だけで修正しよう
とすれば、正しい文字まで消してしまうことになります。
実は、カーソルキー(矢印キー)でカーソルを左右に移動させて、修正したい文字の上にカーソルを
持ってゆき、そこで Delete キーで削除することが出来ます。
しかし、矢印キーを使うのは効率が良くなりません。矢印キーは PC によって位置が違うほか、通常の
キーとは離れたところにあるため、なかなかタッチタイピングが出来ないためです。
bash ではこれに対応するために特殊なキーの組み合わせでカーソルキーを自由に移動させることが出
来るほか、文字の削除が出来ます。そのキーの組み合わせを表 6.1 に示します。
表 6.1: bash のキー操作
キー 動作
ctrl+b カーソルを左(前の文字)へ移動する
ctrl+f カーソルを右(次の文字)へ移動する
ctrl+a カーソルを行の先頭へ移動する
ctrl+e カーソルを行の末尾へ移動する
ctrl+d カーソル位置の文字を削除する
ctrl+k カーソルから末尾までを削除する
ctrl+u カーソルの前(左)から行頭までを削除する
ctrl+y ctrl+k または ctrk+u で削除された文字(列)を貼り付ける
ctrl+p 直前に実行したコマンドを呼び出す
ctrl+n 次に実行したコマンドを呼び出す
いずれもコントロールキーと一緒に押します 1
。
1このキー操作は、vi よりも強力なツールである emacs とほぼ同じです。
55
第7章 Web サーバの構築
ここでは Web サーバの apache をソースコードからインストールします。
Linux でプログラムをインストールするためには、パッケージ管理ツールを使うのが一般的でありまた
容易です 1
。しかしながら、実際の現場では最新のモジュールが必要になることがあります。その場合に
は、ソースコードを取得してそれから構築しなければなりません。
ここでは apache の構築のために必要な簡単な説明をした上で、コマンドを列挙します。コマンドは、
必要なものだけ sudo で実行します。つまり、本当に管理者権限が必要なところだけ sudo で実行し、必
要のないところは通常のコマンドとして実行します。全てを管理者として実行する例をネットなどで見か
けますが、これは Linux 操作としてはなはだよろしくありません。sudo コマンドの使用は極力減らすこ
とを心がけて下さい。
7.1 概要
7.1.1 必要モジュール
Web サーバとして最も大きなシェアを持つ apache を導入するためには、いくつか必要なモジュール
(ライブラリ)があります。それは次のものです。
• apr:apache portable runtime
• apr-util:apr のためのツール類
• pcre:Perl Compatible Regular Expressions
• apache2:apache 本体(現在はバージョンが 2.X のものを使います)
7.1.2 ソースコードからの構築
ソースコードからモジュール(実行プログラムやライブラリ)を構築するための手順は大雑把に言えば
以下のような流れで実行します。
1. ソースコードを取得する
2. ソースコードは圧縮していあるのでそれを解凍する
3. 解凍してできたディレクトリで以下の作業を行う
4. 作業環境に併せてビルド用の構成を行う(通常、configure というスクリプトを実行する)
5. make を実行する
6. インストールする。ここだけ特権ユーザで実行する
最後のところだけ特権ユーザで実行します。つまり、ここだけ sudo で実行するかまたは su で root
ユーザになって実行します。
1Ubuntu であれば apt がパッケージ管理ツールです。
56 第 7 章 Web サーバの構築
7.2 apr
$ wget http://ftp.riken.jp/net/apache//apr/apr-1.5.2.tar.bz2
$ tar jxvf apr-1.5.2.tar.bz2
$ cd apr-1.5.2
$ ./configure --prefix=/usr/local/apr
$ make
$ sudo make install
7.3 apr-util
$ wget http://ftp.riken.jp/net/apache//apr/apr-util-1.5.4.tar.bz2
$ tar jxvf apr-util-1.5.4.tar.bz2
$ cd apr-util-1.5.4
$ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
$ make
$ sudo make install
7.4 pcre
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.bz2
$ tar jxvf pcre-8.37.tar.bz2
$ cd pcre-8.37
$ ./configure --prefix=/usr/local/pcre
$ make
$ sudo make install
7.5 apache
$ wget http://ftp.riken.jp/net/apache//httpd/httpd-2.4.20.tar.bz2
$ tar jxvf httpd-2.4.20.tar.bz2
$ cd httpd-2.4.20
$ ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
--with-pcre=/usr/local/pcre
$ make
$ sudo make install
7.6 起動
apache を起動するために次のコマンドを叩きます。
$ sudo /usr/local/apache2/bin/apachectl start
7.6. 起動 57
警告が出るかもしれません。
✓ ✏
AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using
127.0.1.1. Set the ’ServerName’ directive globally to suppress this message
✒ ✑
これはドメイン名が定義されていない、という警告ですので今のところ無視しておきます。
Apache が動作していることを確認するためにウェブ・ブラウザで http://localhost にアクセスし
ます。
図 7.1 のような画面が出れば正常に動いています。
図 7.1: Web サーバ (1)
図 7.1 はデフォルトの HTML で味気ないので、自分用の HTML を書いてみましょう。もちろん vi を
使って次のファイルを作成・編集します。
/usr/local/apache2/bin/htdocs/hello.html
ただし、このディレクトリは root ユーザでないとアクセスできない設定になっているので vi を起動
するときは sudo を使います。
$ sudo vi /usr/local/apache2/bin/htdocs/hello.html
この hello.html の中身はとりあえずリスト 7.1 のようにします。
リスト 7.1: hello.html
1 <html>
2 <body>
3 <h1>
58 第 7 章 Web サーバの構築
4 Hello World!
5 </h1>
6 </body>
7 </html>
HTML に詳しい方はもっと内容を追加して頂いても構いません。
ファイルを保存して再度ウェブ・ブラウザで html://localhost/hello.html にアクセスします。図
7.2 のような画面が出たでしょうか。
図 7.2: Web サーバ (2)
apache を停止するためには次のコマンドを入力します。
$ sudo /usr/local/apache2/bin/apachectl stop
59
第8章 あとがきにかえて—本当に学ぶべきもの
ここでは Linux で CUI を使うための基礎を学びました。これでコマンドを実行し vi でファイルを編
集することが出来るようになりました。
しかし、これで Linux を使いこなせるわけではありません。基本的なコマンドの簡単な説明をしまし
たが、その説明だけでは意味がわからないと思います。「ファイルをコピーする」というのはコマンドを
使わずにもできますし日常的にやっていることなのでイメージはつかめるでしょう。では mv は cp + rm
と同等でしょうか? 機能的には同じに見えるかもしれませんが、全く違います。
また、たとえば iptables を考えてみましょう。説明には「IP パケットの制御を行う」とありますが、
IP パケットの意味が分からなければこのコマンドを使いこなすことは出来ません。なんとなくネットワー
クの制御をすることはわかるかもしれませんが、このコマンドの使い方を理解するためには、ネットワー
クのメカニズムを理解していなければならないのです。
結局、コマンドというのはそれが対象とするもの—コンピュータそのものであったり、ネットワークの
メカニズムであったり、様々なもの—についての理解がなければ何の役にも立たないということなのです。
このトレーニングでは、繰り返しますが、本当に入門のための入門しかしません。どうかさらなる Linux
の奥地に自分の足で踏み込んでいただきたいと思います。
最後の章では、所謂「基盤系のエンジニア」がどんな作業をしなければならないかの一端をお見せしま
した。ここに書かれていることをそのまま実行すれば apache をインストールすることは出来ます。しか
しながら、翌日には対象モジュールのバージョンが変わっていて、この通りのコマンドではできなくなっ
ているかもしれません。日々、進化し続けています。
エンジニアはいつでもトラブルにぶつかりながら、自らの手でそれを乗り越えて行くのです。
61
付 録A ハードディスクへのインストール
A.1 全ディスク使用
ハードディスクをすべて消去してもよいコンピュータがあれば、そのコンピュータに Linux をインス
トールすることが出来ます。上で説明した仮想マシンを使うよりも、ハードウェアの性能を十全に使うこ
とが出来るので、高速に動作します。
仮想マシンへインストールする手順と、途中からは全く同じです(仮想マシンを作る手間がないだけの
ことです)。
概要のみ列挙すれば次のような手順でインストールします。
• すでにダウンロードした Linux の ISO イメージを DVD に「焼き」ます。
• この DVD をコンピュータにセットして、コンピュータを再起動(リセット)します 1
。
• あとは、上で述べた仮想マシンへの「インストール」と同様です。
A.2 デュアル・ブート
既存の OS を残したまま、ハードディスクの空き領域に Linux をインストールするためには事前準備
が必要です。
その準備とは
ハードディスクの使用中のパーティションのサイズを縮小して、空き領域を作る
ことです。
一度空き領域ができれば、上の「全ディスク使用」と同様の手順でインストールすることができます
(ただし、インストール先のパーティションを選択するところで注意が必要です)。
1BIOS の設定でブートの優先順で、「CD(DVD)から」を一番にする必要があります。
63
付 録B 最初にやっておきたいこと
Linux は、様々なカスタマイズが可能です。
必ずしなければならないものでもありませんが、後々の使いやすさのために基本的な設定をしておき
ます。
B.1 日本語入力環境設定
B.1.1 言語サポートのインストール
「システム設定」-「言語サポート」⇒インストール⇒パスワード入力
B.1.2 Mozc のインストール
デスクトップの右上にいくつかアイコンがあります。
この中の一番左に、小さいですがキーボードのアイコンがあるのがわかるでしょうか。(図 B.1)
図 B.1: 入力メソッドの設定(1)
これをクリックするとプルダウン・メニューがあるので、その中の「設定」を選びます。すると、「入
力メソッドの設定」画面になります。(図 B.2)
図 B.2: 入力メソッドの設定(2)
この画面の左下にある「+」を押すと、「入力メソッドの追加」画面になります。(図 B.3)
この一覧の一番上に「Mozc」があるので、これを選んで「OK」を押します。
64 付 録 B 最初にやっておきたいこと
図 B.3: Mozc の設定
「入力メソッドの設定」画面は左上の「×」を押して閉じて下さい。
これで日本語入力のための環境が出来ました。
ターミナルを開いて、コマンド入力できる状態にしてください。この状態で「半角/全角」キーを押す
と、デスクトップ右上のキーボードのアイコンが変わるのがわかるでしょうか。(図 B.4)
図 B.4: Mozc の起動
もう一度「半角/全角」キーを押してこのアイコンを元に戻します。
この状態で、端末で次のコマンドを打って下さい。ただし、エンターは押さないで下さい。“echo” と
スペースをひとつ打ったところまでです。
$ echo
この echo まで入力したところで「半角/全角」を押します。すると日本語が入力できる状態になります
ので、ここで「aiueo」を打てば画面には あいうえお と出るでしょう。下線が引かれている状態でスペー
スキーを押せば、カナ漢字変換が行われます。
B.2 フォルダ名の英字化
ログインして端末を開きます。
ここで次のコマンドを実行してください。
なお、ここから以降では、コマンド・プロンプトは $ だけで表します。この $ は入力しませんので注
意して下さい。
$ ls -l
ls コマンドについてはいずれ詳しく説明しますが、これはディレクトリ(フォルダ)にあるファイル
の一覧を表示するものです。
B.2. フォルダ名の英字化 65
今このコマンドを実行すると図 B.5 のような表示がされるでしょう。
日本語環境としてインストールしたので、基本的なディレクトリの名前が日本語名になっています。
これはこれでわかりやすいので良いのですが、コマンドで扱うには日本語名は使いにくいのでこれらを
英字名にします。
図 B.5: 日本語名のディレクトリ
端末で次のコマンドを実行します。
$ LANG=C xdg-user-dirs-gtk-update
ここで注意していただきたいのですが、スペースを入れて良いところといけないところがある、という
ことです。
このコマンドでは空白は LANG=C の後ろのひとつだけです。= の前後に空白を入れてはいけません。
次のような確認画面が現れます。(図 B.6)
図 B.6: 名前変更確認
66 付 録 B 最初にやっておきたいこと
ここで画面に左下にある “Don’t ask me this again” にチェックをいれてから “Update Names” を押し
ます。(図 B.7)
図 B.7: 名前変更
これを実行したあと、端末上で再度 ls コマンドを実行すると、ディレクトリ名が英字になっているこ
とがわかります。
図 B.8: 英字名のディレクトリ
B.3 root にパスワードを設定する
root ユーザのパスワードは秘匿されたままでわかりません。しかし、それを再設定することは出来ます。
次のコマンドを実行します。
ここで自分のパスワードを XXXXXX、新しく設定する root のパスワードを YYYYYY としていますが、下
の画面イメージの XXXXXX と YYYYYY はどちらも画面上には表示されませんので注意して下さい(表示は
B.4. sudo でパスワード入力をしないための設定 67
もちろん、カーソルの移動もありません)。また、YYYYYY に設定するパスワードは忘れないようにして下
さい。
$ sudo passwd
[sudo] sudoh のパスワード:XXXXXX
新しい UNIX パスワードを入力してください:YYYYYY
新しい UNIX パスワードを再入力してください:YYYYYY
これで root ユーザのパスワードを YYYYYY に設定することができます。
では、root ユーザになってみます。root になるためには su コマンドを使います(ここではプロンプト
をキチンと書きます)。
sudoh@ub1604~$ su -
パスワード:YYYYYY
root@ub1604~#
ここでも YYYYYY は表示されませんが、上で設定したパスワードを入力すれば root ユーザに切り替え
ることが出来ました。プロンプトが # に変わったことにも注意して下さい。
この状態になれば、root ユーザとして「何でも」できます。毎回 sudo を付ける必要はありません。
元に戻るには exit を入力します。
# exit
ログアウト
$
プロンプトが元の $ に戻っていると思います。
B.4 sudo でパスワード入力をしないための設定
ここの設定をするためには vi エディタが使えることが前提です。
次のコマンドを実行します。
$ sudo EDITOR=vi visudo
このコマンドで /etc/sudoers ファイルを vi で開きます。
単に
$ sudo vi /etc/sudoers
としても良いのですが、複数の人が同時に編集することを回避するために排他制御をするのが visudo の
働きです。
/etc/sudoers には、sudo コマンドを使ってもよいユーザやグループを登録してあります。
元々 sudo コマンドを使うことは出来ますが、パスワードを要求されないように次の1行をこのファイ
ルの最後に追加します。
USERNAME ALL=(ALL:ALL) NOPASSWD:ALL
ここで USERNAME には皆さんのログイン ID を指定します。筆者の場合であれば次のようになります。
sudoh ALL=(ALL:ALL) NOPASSWD:ALL
追加したら、ファイルを上書き保存して vi を終了します。
これで sudo コマンドを実行する際にパスワード入力が不要になります。
69
関連図書
[1] Linux 標準教科書 (Ver2.0.0), LPI ジャパン, 2012.10.1
http://www.lpi.or.jp/linuxtext/text.shtml
[2] Cameron Newham, Bill Rosenblatt, 入門 bash 第 3 版, オライリージャパン, 2005
[3] リンダ・ラム, アーノルド・ロビンス, 入門 vi 第 6 版, オライリージャパン, 2002

Más contenido relacionado

Similar a Linux+PHPを学んで日程調整アプリを作ろう①

Windows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguideWindows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguideYoshida Yuri
 
2..nakamura thesis(2)
2..nakamura thesis(2)2..nakamura thesis(2)
2..nakamura thesis(2)Ravi Teja
 
Instalaciones de servidores ejemplo
Instalaciones de servidores ejemploInstalaciones de servidores ejemplo
Instalaciones de servidores ejemploGary Flores Marcos
 
Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介
Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介
Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介Kohei Nishikawa
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版Hiroyuki Ohnaka
 
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」Nagi Kataoka
 
Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1一希 大田
 
B 64014 ja-04
B 64014 ja-04B 64014 ja-04
B 64014 ja-04mt7038
 
Geopaparazzi & OSMフィールド調査ハンズオン
Geopaparazzi & OSMフィールド調査ハンズオンGeopaparazzi & OSMフィールド調査ハンズオン
Geopaparazzi & OSMフィールド調査ハンズオンarctic_tern265
 
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築Ryota Nakamura
 
コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0satoshi59
 
コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1satoshi59
 

Similar a Linux+PHPを学んで日程調整アプリを作ろう① (20)

Windows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguideWindows azure stepbystep_tutorialguide
Windows azure stepbystep_tutorialguide
 
2..nakamura thesis(2)
2..nakamura thesis(2)2..nakamura thesis(2)
2..nakamura thesis(2)
 
Hi1
Hi1Hi1
Hi1
 
Tour
TourTour
Tour
 
Tour
TourTour
Tour
 
Manual audio
Manual audioManual audio
Manual audio
 
Instalaciones de servidores ejemplo
Instalaciones de servidores ejemploInstalaciones de servidores ejemplo
Instalaciones de servidores ejemplo
 
Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介
Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介
Bluemixモバイルのテンプレートを用いたチャットボットアプリ動作確認手順の紹介
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
 
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」
卒業論文「主張と根拠のクラスタを用いた 多様な主張を提示するニュース推薦手法の提案」
 
Install guide ja_jp
Install guide ja_jpInstall guide ja_jp
Install guide ja_jp
 
Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1
 
B 64014 ja-04
B 64014 ja-04B 64014 ja-04
B 64014 ja-04
 
Agatha操作ガイド 基本編
Agatha操作ガイド 基本編Agatha操作ガイド 基本編
Agatha操作ガイド 基本編
 
41565410 M Jp
41565410 M Jp41565410 M Jp
41565410 M Jp
 
41565410 M Jp
41565410 M Jp41565410 M Jp
41565410 M Jp
 
Geopaparazzi & OSMフィールド調査ハンズオン
Geopaparazzi & OSMフィールド調査ハンズオンGeopaparazzi & OSMフィールド調査ハンズオン
Geopaparazzi & OSMフィールド調査ハンズオン
 
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
[修士論文] 入力支援機能を備えた日本語表記による初学者向けプログラミング学習環境の構築
 
コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0コーディング規約「Scratch編」v1.0
コーディング規約「Scratch編」v1.0
 
コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1コーディング規約_Scratch編_v1.1
コーディング規約_Scratch編_v1.1
 

Linux+PHPを学んで日程調整アプリを作ろう①

  • 3. i 目 次 第 I 部 インストール編 1 第 1 章 Linux のインストール 3 1.1 イメージ・ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 仮想マシン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.1 仮想マシンの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.2 新規仮想マシンの作成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2.3 メモリとハードディスク . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Linux のインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 ログイン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.5 初めての Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.6 画面サイズの自動調整 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 第 2 章 初めての Linux 25 2.1 ログイン . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.2 デスクトップ:Gmone と Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.3 GUI を使う . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.4 Firefox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.5 LibreOffice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.6 デスクトップのカスタマイズ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.7 ウインドウとメニュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.8 ランチャーをウインドウ下部へ移す . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 第 II 部 コマンド編 33 第 3 章 コマンドを使う前に 35 3.1 ターミナル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2 プロンプト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 第 4 章 コマンド入門 37 4.1 最初のコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2 別のコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.3 パスのこと . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.3.1 ディレクトリ・ツリー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.3.2 相対パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3.3 絶対パス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.4 コマンドを実行する、ということ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.4.1 PATH のこと . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
  • 4. ii 第 5 章 vi 入門 43 5.1 vimtutor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.2 vi の終了方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.3 vi の極意 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.4 ex コマンドの神髄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 5.5 vi のカーソル移動練習 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 第 6 章 bash, プロへの道 49 6.1 Linux コマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.1.1 man . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.1.2 通常の作業用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.1.3 開発用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.1.4 システム管理用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.1.5 その他 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.2 bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 6.2.1 コマンドの再実行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 6.2.2 入力行の編集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 第 7 章 Web サーバの構築 55 7.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.1.1 必要モジュール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.1.2 ソースコードからの構築 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 7.2 apr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.3 apr-util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.4 pcre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.5 apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 7.6 起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 第 8 章 あとがきにかえて—本当に学ぶべきもの 59 付 録 A ハードディスクへのインストール 61 A.1 全ディスク使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 A.2 デュアル・ブート . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 付 録 B 最初にやっておきたいこと 63 B.1 日本語入力環境設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 B.1.1 言語サポートのインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 B.1.2 Mozc のインストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 B.2 フォルダ名の英字化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 B.3 root にパスワードを設定する . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 B.4 sudo でパスワード入力をしないための設定 . . . . . . . . . . . . . . . . . . . . . . . . . . 67 関連図書 69
  • 6.
  • 7. 3 第1章 Linux のインストール Linux をインストールする方法は大きく分けて三通りあります。 • コンピュータのハードディスクをすべて削除して Linux をインストールする • 既存の OS(Operating System) を残したまま、ハードディスクの空き部分に Linux をインストール する(デュアル・ブート) • 既存の OS 上に仮想マシンを作って、そこに Linux をインストールする コンピュータの性能を活かすためには最初の方法が最も有効ですが、今使っている環境をすべて壊して しまうことが出来ない場合には二番目の方法が使えます。ただし、この方法ではハードディスクに十分な 余裕があることが前提です。そこで、ここでは三番目の「仮想マシン」を使った方法について説明します。 1.1 イメージ・ファイル まず、インストールする Linux のイメージ・ファイルを取得します。このイメージ・ファイルは ISO フォーマットとして提供されるのが普通です。ここでは Ubuntu(ウブントゥ)と呼ばれる Linux をイン ストールしますが、下記サイトから最新バージョン(16.04 LTS)を入手します。 https://www.ubuntulinux.jp/News/ubuntu1604-ja-remix 図 1.1: Ubuntu のダウンロード このページにはミラーサイトがいくつか表示されると思います。近いと思われるところにある ISO イ メージを選択してダウンロードします。ファイル名は次のものです。
  • 8. 4 第 1 章 Linux のインストール ubuntu-ja-16.04-desktop-amd64.iso 1.2 仮想マシン Mac または Windows 上で Linux を稼働させるために、仮想マシン用のソフトウェアを導入します。 仮想マシン用のソフトウェアは有償のものや無償のものを含めて様々ありますが、ここでは Oracle 社の Virtual Box を使います。 まず、下記サイトから自分の環境に応じたインストーラ―をダウンロードします。 それぞれの環境でダウンロードしたモジュールをダブルクリックすればインストールできます。 https://www.virtualbox.org/wiki/Downloads 図 1.2: VirtualBox 1.2.1 仮想マシンの作成 仮想マシンとは文字通り仮想的なコンピュータです。 Virtual Box を起動すると 図 1.3 の VirtualBox マネージャーの画面が出ます。 この画面イメージではすでに仮想マシンがひとつ作られていますが、初めて起動したとき、左側の仮想 マシンのリストは空になっています。 1.2.2 新規仮想マシンの作成 新しく仮想マシンを作成するためにメニューの「新規 (N)」ボタンを押します。
  • 9. 1.2. 仮想マシン 5 図 1.3: VirtualBox マネージャー デフォルトでは OS のタイプが “Windows” になっているかもしれませんが、ここでは Linux をインス トールするので、表 1.1 のように設定します。 表 1.1: 仮想マシンの作成 項目 設定内容 名前 ub1604 タイプ Linux バージョン Ubuntu(64-bit) 名前は何でも構いません。ここでは Ubuntu のバージョン 16.04 を使うのでこのような名前にしまし た。タイプとバージョンはこの表のようにします。(図 1.4)
  • 10. 6 第 1 章 Linux のインストール 図 1.4: 仮想マシンの作成 1.2.3 メモリとハードディスク 「次へ」を押すと「メモリーサイズ」や「ハードディスク」を設定する画面が現れます。ここでは新し く作る仮想マシンの仕様を決めることになります。 表 1.2 の情報を参考に、最後に「仮想ハードディスクの作成」画面が現れるまで進めて下さい。(図 1.5) 表 1.2: 仮想マシンのハードウェア 項目 設定内容 メモリーサイズ 最低 1024MB(出来れば 2048MB) ハードディスク 仮想ハードディスクを作成する ハードディスクのファイルタイプ VDI(VirtualBox Disk Image) 物理ハードディスクにあるストレージ 可変サイズ ファイルの場所とサイズ サイズは 20GB 以上 なお、ハードディスクのサイズを 20GB としていますが、このサイズが固定的にとられるわけではあ りませんので心配ありません。 ここで「作成」ボタンを押すと新たに仮想マシンが作られ、VirtualBox マネージャー画面に「ub1604」 が現れます。(図 1.6)
  • 11. 1.2. 仮想マシン 7 図 1.5: 仮想ハードディスクの作成 図 1.6: 新仮想マシン
  • 12. 8 第 1 章 Linux のインストール 1.3 Linux のインストール 作成した仮想マシン上に Linux をインストールします。 仮想マシンが新しい 1 台のコンピュータだと思ってくれれば結構です。 さて、Virtual Box マネージャーの画面で、今作った仮想マシン ub1604 が選択されている状態で「起 動」を押します。 これはいわば、新しく作った仮想マシンに電源を入れた状態です。 この状態では仮想マシンのハードディスクは空ですので起動できません。そこで起動用のディスクを設 定することになります。(図 1.7) 図 1.7: 起動ハードディスクを選択 1.1 でダウンロードした ubuntu の ISO イメージファイルを指定します(右端のアイコンをクリックす ると、ファイル選択画面になります)。 この状態で「起動」を押します。 これは、実際の PC であれば、DVD ドライブに Linux のインストール用 DVD を入れて、電源(また はリセット)ボタンを押したところです。 これでインストールが始まるはずですが、もしも図 1.8 の画面から進まないようであれば、画面のメ ニューにある「仮想マシン」-「リセット」を押して下さい。
  • 13. 1.3. Linux のインストール 9 図 1.8: 再起動中 インストールが始まると最初に図 1.9 の画面になります。 図 1.9: ようこそ 「日本語」を選択して、右側の「Ubuntu をインストール」を押します。
  • 14. 10 第 1 章 Linux のインストール Ubuntu のインストール中にアップデートをダウンロードするにチェックを入れておきます。(図 1.10) 図 1.10: Ubuntu のインストール準備 「インストールの種類」の画面(図 1.11)では「ディスクを削除して Ubuntu をインストール」を選択 します。 図 1.11: インストールの種類 ここまででインストールの準備が出来ました。 「インストール」を押します。 「ディスクに変更を書き込みますか?」の画面になります。(図 1.12)
  • 15. 1.3. Linux のインストール 11 図 1.12: ディスクへの書き込み ここで「続ける」を押すと、ハードディスク(仮想の)のパーティション・テーブルに書き込みを行い ます。本物の PC であれば、これで元のハードディスクの内容が削除されます。 「続ける」を押すと、ここからファイルのコピーなど、本来の意味でのインストールが始まります。 インストールの進行と並行して、いくつか設定内容の問い合わせがあるので順に設定します。 住んでいる場所(図 1.13)やキーボード(図 1.14)について確認されますので設定して下さい。ほとん どの場合はデフォルトのままで大丈夫のはずです。 図 1.13: 場所
  • 16. 12 第 1 章 Linux のインストール 図 1.14: キーボードレイアウト 次が最後の入力です。(図 1.15) 図 1.15: あなたの情報を入力してください ここで入力するものの意味を表 1.3 に示します。
  • 17. 1.3. Linux のインストール 13 表 1.3: ユーザ設定 項目 設定内容 あなたの名前 ログイン画面にフルネームが表示されます。そのため のものです コンピューターの名前 所謂「ホスト名」です ユーザー名 ログイン時に使う名前でもあり、コンピュータ内に作 られるみなさんのホームディレクトリ(フォルダ)の 名前でもあります。半角英数字にしましょう パスワードの入力 パスワードです。短いものや辞書から想像のつくものは 望ましくはありませんが設定することは可能です(図 1.16 参照) パスワードの確認 パスワードをもう一度入れます ここで入力するもので特に肝心なのは「ユーザー名」と「パスワード」です。パスワードは同じものを 2 回入力しますが忘れないようにして下さい。 図 1.16: ユーザ情報 これらの入力が終われば、あとはインストールが終わるのを待つばかりです。 しばらくすると再起動を促すメッセージが表示されます。(図 1.17)
  • 18. 14 第 1 章 Linux のインストール 図 1.17: 再起動 ここでも再起動せず、図 1.18 のような画面で固まってしまうことがあるかもしれませんが、その場合 は「仮想マシン」−「リセット」をして下さい。 図 1.18: リセット
  • 19. 1.4. ログイン 15 1.4 ログイン これで再起動して最初のログイン画面になります。(図 1.19) 図 1.19: ログイン ログイン画面には登録されているユーザの名前のリストが出ますが、今は先ほど登録したみなさんの名 前だけがあるはずです。パスワードを入力すればログインできます。(図 1.20) 図 1.20: 初期画面 ここでソフトウェアの更新がある旨のお知らせが出ることがありますが(図 1.21)、今は無視して下 さい。
  • 20. 16 第 1 章 Linux のインストール 図 1.21: ソフトウェアの更新 ところで、この Linux のウインドウの枠を「最大化」してみて下さい。 図 1.22: ウインドウの最大化 図 1.22 のように、Linux の画面部分のサイズは変わらないでしょう。 これについても後ほど直します。
  • 21. 1.5. 初めての Linux 17 1.5 初めての Linux 左側にあるメニューの一番上をクリックして検索します。(図 1.23) 図 1.23: アプリケーション検索 “terminal” と入力してください。関連するアプリケーションが表示されます。 「端末」をクリックすると端末エミュレータが起動します。(図 1.24) 図 1.24: 端末の起動 端末が起動された状態を図 1.25 に示します。
  • 22. 18 第 1 章 Linux のインストール 図 1.25: 端末 ところで、端末を起動するために毎回「検索」からするのは面倒です。そこで、左側のバー(これをラ ンチャーと呼びます)にアイコンを貼り付けましょう。 メニューにある「端末」のアイコンを右クリック-「Launcher に登録」を選びます。(図 1.26) 図 1.26: ランチャー登録
  • 23. 1.6. 画面サイズの自動調整 19 1.6 画面サイズの自動調整 先に進む前に、画面サイズをどうにかしましょう。 この設定のためにはさきほどの端末を使います。 まず、画面のウインドウメニューの「デバイス」-「Guest Additions CD イメージの挿入...」を選択し ます。 すると、「実行しますか?」というような確認メッセージが出ますが(図 1.27)、ここでは「キャンセ ル」します。 図 1.27: 自動実行 なお、ランチャーには CD のイメージが表示されています。(図 1.28) 図 1.28: CD イメージ
  • 24. 20 第 1 章 Linux のインストール 続いて、端末で以下のコマンドを実行します(ここではコマンドプロンプトを略して$ と表します)。こ こで <loginid> はみなさんのログイン名です。それぞれ、自分のログイン ID に置き換えて入力してく ださい。 $ cd /media/<loginid>/VBOXADDITIONS_5.0.20_106931/ 著者の場合は次のようなコマンドになります。(図 1.29) $ cd /media/sudoh/VBOXADDITIONS_5.0.20_106931/ 図 1.29: cd 続けて次のコマンドを入力します。コマンドは sudo です 1 。 パスワードの問い合わせが出るので自分のパスワードを入力します。このとき、入力しても何も表示さ れずカーソルが動きもしませんが、心配しないで下さい。(図 1.30) $ sudo ./VBoxLinuxAdditions.run [sudo] sudoh のパスワード: 図 1.30: VBoxAdditions(1) このコマンドで Linux のカーネルを再構築します。(図 1.31) 環境によっては時間がかかりますが、やがて終了します。(図 1.32) 1筆者のユーザ ID とは何も関係ありません。
  • 25. 1.6. 画面サイズの自動調整 21 図 1.31: VBoxAdditions(2) 図 1.32: VBoxAdditions(3) 終了したら次のコマンドを入力してください。 $ cd $ eject eject を実行すると、左端のランチャにあった CD のイメージがなくなることがわかると思います。 これで画面サイズの調整は終わりです。2 一度再起動しましょう。 右上端のアイコンをクリックするとプルダウンメニューが出ますので(図 1.33)「シャットダウン」を 選びます。 2実際には画面サイズの調整だけでなくホストコンピュータとのフォルダの共有機能などが有効になっています。
  • 26. 22 第 1 章 Linux のインストール 図 1.33: 再起動 (1) 図 1.34: 再起動 (2) シャットダウン・メニューの左側の「再起動」を選択します。(図 1.34) 再起動してログインウインドウになりますが、ここで、画面の枠の「最大化」を押してみましょう。 Linux 画面がウインドウサイズに追随することがわかるでしょう。(図 1.35)
  • 27. 1.6. 画面サイズの自動調整 23 図 1.35: ウインドウサイズの自動調整
  • 28.
  • 29. 25 第2章 初めての Linux さぁ、それでは本格的に Linux を使いましょう。 とは言っても、まずは環境整備をしておきます。 2.1 ログイン ログインはすでにご存じですね。ログイン画面でユーザを選んでパスワードを入力します。 2.2 デスクトップ:Gmone と Unity Ubuntu の標準のデスクトップ環境は Gnome と呼ばれるものです。また、ウインドウを制御するウイ ンドウ・マネージャは Unity と呼ばれますが、画面の左側に「ランチャー」があるのが特徴です。 このあたりは特に重要なわけではありませんが、名前だけ覚えておいて下さい。 2.3 GUI を使う デスクトップを使ってみましょう。 デスクトップ上でマウスを右クリックするとポップアップ・メニューが出ます。ここから背景を変更し てみて下さい。 また、デスクトップのランチャーとその上にあるアイコンについては、これまでにも若干触れました が、これについて説明します。すでに「システム設定」はご存知でしょうけれど、マウスをアイコンの上 に持っていくと、説明が出ます。(図 2.1) 図 2.1: システム設定アイコン 全体はデフォルトでは(図 2.2)のようになっています。
  • 30. 26 第 2 章 初めての Linux 図 2.2: デフォルト・ランチャー・アイコン このデフォルトのアイコンは以下のプログラムを表しています。 表 2.1: デスクトップ 項目 機能 ファイル ファイルやディレクトリを管理、検索する Firefox ウェブ・ブラウザ Firefox LibreOffice Writer MS Office の Word 相当 LibreOffice Calc MS Office の Excel 相当 LibreOffice Impress MS Office の PowerPoint 相当 Ubuntu Software ライブラリ管理 Amazon Amazon サイト(米国)を開くウェブ・ブラウザ システム設定 システム環境設定(詳細は 2.6 で) これらのアイコンをクリックすればそのアプリケーションが起動します。 とりあえず、これらを少し使ってみましょう。
  • 31. 2.4. Firefox 27 2.4 Firefox ご存知 Firefox です。 図 2.3: Firefox アイコン これが Ubuntu では標準のウェブ・ブラウザです。 なお、chrome の Linux 版をインストールすることもできます。 使い勝手を少し試してみて下さい。 2.5 LibreOffice 次に重要なのが Office Suite である LibreOffice です。 Microsoft Office はご存知だと思いますが、機能的にはそれと同等の Open Source Software(OSS) です。 ランチャーにはデフォルトで三つの LibreOffice ツールが表示されています。 図 2.4: LibreOffice アイコン それぞれ MS Office の Word, Excel そして PowerPoint に相当します。 LibreOffice のファイル形式は MS Office のそれとは直接の互換性はありませんが、MS Office のファ イル(.doc, .docx, .xls, .xlsx, .ppt, .pptx)を LibreOffice で開いて読み書きすることが出来ます(その 後、LibreOffice の形式で保存することもできます)。
  • 32. 28 第 2 章 初めての Linux 2.6 デスクトップのカスタマイズ ランチャーに「システム設定」のアイコンがあります。 図 2.5: システム設定アイコン これをクリックするとシステム設定画面が出ます。(図 2.6) 図 2.6: システム設定 アイコンと説明文字があるのでどのようなことができるかはだいたいわかると思いますが、最初に以下 の項目をカスタマイズしておきましょう。 • 画面の明るさとロック いわゆるスクリーンセーバーです。一定時間、キー操作等をしないと画面がロックされます。ロッ クの解除が面倒な場合は、この機能をオフにします。 • 外観 画面の背景イメージなどを変更します。ランチャーのアイコンの大きさやウインドウ・マネージャ のテーマを変更することが出来ます。 デスクトップの操作はマウスを使うのが基本です。このようなユーザ・インタフェースを Graphical User Interface(GUI) と呼びますが、Linux を使いこなすためには Character User Interface(CUI) を使いこな さなければなりません。
  • 33. 2.7. ウインドウとメニュー 29 2.7 ウインドウとメニュー 各ウインドウにはタイトルバーにメニューがありますが、通常は表示されていません。(図 2.7) 図 2.7: ウインドウ・メニュー デフォルト設定では、マウスがデスクトップのメニューバーの上に移動したときに、現在アクティブに なっているウインドウのメニューがメニューバー上に現れます。(図 2.8) Mac と同様ですね。 図 2.8: メニューバー上のメニュー 設定によっては、各ウインドウのタイトルバーに出すこともできます。(図 2.9) この設定を変更するためには「システム管理」の「外観」-「挙動」を選びます。 デフォルトでは図 2.10 のようになっていますが、これを図 2.11 のようにすれば、ウインドウのタイト ルバーの中にメニューが出ます。
  • 34. 30 第 2 章 初めての Linux 図 2.9: ウインドウ上のメニュー 図 2.10: システム設定 (1) 図 2.11: システム設定 (2) 2.8 ランチャーをウインドウ下部へ移す デフォルトではランチャーは画面の左側にありますが、これを画面の下部に移せます。(図 2.12) ターミナルで次のコマンドを叩きます。
  • 35. 2.8. ランチャーをウインドウ下部へ移す 31 $ gsettings set com.canonical.Unity.Launcher launcher-position Bottom 図 2.12: ランチャーの位置を変更 元に戻すのであれば次のコマンドを打ちます。 $ gsettings reset com.canonical.Unity.Launcher launcher-position
  • 36.
  • 38.
  • 39. 35 第3章 コマンドを使う前に 3.1 ターミナル 「ターミナル」とは正しくはターミナル・エミュレータ(Terminal Emulator)と呼ばれます。ひとつ のウインドウで「端末」(Terminal)を模倣・模擬(エミュレーション;Emulation)しているので、こう 呼ばれます。以後は、ターミナル・エミュレータを略してターミナルと呼びます。 ターミナルはあくまで端末の画面をソフトウェアで模倣しているだけなので、端末への入出力を制御す るプログラムが必要です。Linux でターミナルを起動すると、その入出力を制御する bash と呼ばれるプ ログラムが動きます。このようなプログラムをコマンド・インタプリタ(Command Interpreter)と呼び ます。 3.2 プロンプト ターミナルを開くと最初の行に次のようなものが現れます。 username@hostname:~$ 表示されている文字列は人によって若干異なりますが、~ や $ があるのは同じだと思います。この文字 列の中身の意味は次の通りです。 表 3.1: プロンプト文字列 文字列 説明 username ログイン中のユーザ ID hostname このコンピュータのホスト名(コンピュータ名) ˜ 現在いるディレクトリ。˜は自分のホームディレクトリを表す $ プロンプト文字。root ユーザの場合は # になるのが一般的 この文字列は bash が出力します。bash はこれを出すことで「コマンドを入力していいですよ」と、コ マンド入力を待っていることを表します。 なお、筆者の場合は以下のようなプロンプトになります。 sudoh@ub1604:~$ この状態で、例えば ls コマンドを実行する際の画面イメージは次のようになります。 sudoh@ub1604:~$ ls しかしこれでは説明が煩雑なので、プロンプトは $ だけで表します。つまり、画面イメージを次のよう に表します。 $ ls $ は「入力しない」ことに注意して下さい。
  • 40.
  • 41. 37 第4章 コマンド入門 いよいよ Linux コマンドを使います。 特に断らない限り、ターミナルを起動してその上でコマンド入力するものだと思って下さい。 4.1 最初のコマンド 基本的なコマンドを試してみます。 今は、どんなものが表示されるか少しだけ気を留めてくれれば結構です。 繰り返しますが、先頭の $ は入力しないで下さい。 $ cd $ pwd $ mkdir work123 $ ls $ cd work123 $ pwd $ touch abc $ ls -l $ rm abc $ ls $ cd .. $ rmdir work123 最後から 2 番目は cd のあとにスペースをひとつとドット(.)を二つ入力します。 これらは基本的なコマンドばかりですがそれぞれの意味を簡単に説明します。(表 4.1) 表 4.1: 基本コマンドの意味 コマンド 説明 cd 作業ディレクトリを変更する。パラメータがない場合はホームディレクトリになる。 change directory pwd 現在の作業ディレクトリを表示する。print working directory mkdir ディレクトリを作成する。make directory ls ファイルやディレクトリの情報を表示する。list touch ファイルの更新日付を更新する。ファイルがなければ空のファイルを作る rm ファイルを削除する。remove rmdir ディレクトリを削除する。remove directory
  • 42. 38 第 4 章 コマンド入門 4.2 別のコマンド もう一度、さきほどやったのと同じようなことをしてみます。 以下のコマンドを順に叩いて下さい。 $ cd $ pwd $ mkdir work123 $ ls $ ls work123 $ touch work123/abc $ ls -l work123 $ rm work123/abc $ ls work123 $ rmdir work123 最初の cd はパラメータ無しで実行していますが、これは自分のホームディレクトリに戻るためです。 念のために実行しました。 さて、初めの例では cd を 3 回実行しています。それだけを取り出すと次のコマンドでした。 $ cd $ cd work123 (中略) $ cd .. これらのうちあとの 2 回が今回はありません。つまり作業ディレクトリを変更せずに先の例と同じこと を実行したのです。作業ディレクトリを変更しなくても同じことができるのです! このように作業ディレクトリを変えずに何でもできます。ただし、コマンドのパラメータが少し違って いることにお気づきでしょう。 上の二回のコマンドの実行を、対応させてみます。 1 回目 2 回目 1 cd cd 2 pwd pwd 3 mkdir work123 mkdir work123 4 ls ls 5 cd work123 6 pwd 7 touch abc touch work123/abc 8 ls -l ls -l work123 9 rm abc rm work123/abc 10 ls ls work123 11 cd .. 12 rm work123 rm work123 違いについて考えて下さい。
  • 43. 4.3. パスのこと 39 解説 上の二つの実行例では、どちらも同じことをしています。何をしたかというと、以下の内容です。 1. ホームディレクトリの下に work123 という名前のディレクトリを作る 2. そのディレクトリに abc という名前の空のファイルを作る 3. 作ったファイル abc を削除する 4. 作ったディレクトリ work123 を削除する 単にディレクトリとファイルを作って、それを削除しただけです。 問題はファイルの指定の仕方です。 ファイルを作るとき、最初の例では touch abc としましたが、後の例では touch work123/abc とし ました。 もうおわかりですね。 最初の例では touch の前に cd work123 で作業ディレクトリを変更していますが、後の例ではそれを していません。そのため、ファイル abc を touch や rm のパラメータとして指定するために、後の例で は touck work123/abc、rm work123/abc としたわけです。 4.3 パスのこと 4.3.1 ディレクトリ・ツリー ディレクトリが階層的に連なり、ファイルはいずれかのディレクトリに含まれます。この階層構造は木 (tree)を逆さまにしたような形をしています。木の根(root)に相当する部分をルート・ディレクトリ (root directory)と呼び、/(スラッシュ)で表します。 Linux のルート・ディレクトリの直下にあるディレクトリのうち、代表的なものを示します。(図 4.1) / ├── bin ├── boot ├── dev ├── etc ├── home │ └── sudoh ├── lib ├── sbin ├── sys ├── tmp ├── usr │ ├── bin │ ├── include │ ├── lib │ └── local └── var 図 4.1: ディレクトリ構造
  • 44. 40 第 4 章 コマンド入門 4.3.2 相対パス 最初のコマンド実行の二つの例でファイルの指定のしかたが異なりましたが(abc と work123/abc)こ のような指定の仕方をどちらも「相対パス」と呼びます。「相対」というのは「現在の作業ディレクトリ からの相対的な位置にある」ものを指定するためです。「パス」という言い方については後で説明します。 最初の例ではファイル名だけを指定しましたが、これは「現在の作業ディレクトリにある」ファイルだ からファイル名だけで十分でした。2 番目の例では現在の作業ディレクトリは自分のホームディレクトリ で、ファイルがあるディレクトリではありません。ですので「今いる場所」(=ホームディレクトリ)か ら見れば work123 ディレクトリの下にある abc を指定するために work123/abc としたわけです。 4.3.3 絶対パス もうひとつの指定の仕方が「絶対パス」です。「フルパス」とも言います。 例えば、次のコマンドを実行して下さい。 $ ls -l /usr/local このコマンドの引数にある /usr/local がフルパスです。フルパスはスラッシュ(/)から始まります。 この / はルート・ディレクトリと呼ばれるもので、ファイル・システムの最上位を表します。すべての ファイルとディレクトリはこのルート・ディレクトリからの階層構造のどこかに位置しています。そして あるファイルを特定するためにはルート・ディレクトリからの道順(= path; パス)を指定すればよい、 ということです。 備考 先頭にスラッシュ(/)を付けないものはすべて相対パスです。また、特殊な相対パス指定の方法 として ..(ドット二個)があります。これはコマンドの例で cd .. のように使いました。これは現在の ディレクトリのひとつ上のディレクトリを表します。 結局、相対パスを指定する際には現在の作業ディレクトリが重要になるわけです。それで、ときどき pwd コマンドを打って現在の作業ディレクトリを確認するのです。そして、もうお分かりと思いますが、 すべてをフルパス指定で済ませるのであれば作業ディレクトリを変える必要はありません。ただし、その 場合はコマンドは長くなります。そして、入力する文字列が長くなれば間違える可能性(=危険性)も高 まります。 4.4 コマンドを実行する、ということ 前のセクションの最後のコマンドをもう一度見てみます。 $ ls -l /usr/local これを次のように入力したらどうなるでしょう。 $ /bin/ls -l /usr/local 前と同じ結果になったと思います。 では次のコマンドを打ってみて下さい。 $ which ls
  • 45. 4.4. コマンドを実行する、ということ 41 どのように表示されたでしょうか? 大部分の方は次のように表示されたと思います。 /bin/ls これは次のことを表しています。 bash のコマンド入力で単に ls と入力すると、実行されるのは/bin/ls である。 つまり which コマンドは、ls コマンドを入力した際に起動されるプログラム・モジュール(ファイル) のフルパスを表示します。そして、この説明の中にすでに表れていますが、もうひとつの重要なことをも 意味しています。 bash が「コマンドを実行する」とは、そのプログラム・モジュール(ファイル)を探して、そ れを起動することである。 「コマンドの実行」と書いてきましたが、それはまさに実行モジュール(=プログラム)を起動するこ となのです 1 。従って、bash に伝えるべきはコマンドの名前(=ファイル名)ではなく、そのファイルの 「パス」なのです。ただし、基本的なコマンドについては bash がその置かれている場所を知っているの で自動的に探してくれるわけです 2 。 Linux の場合 ls は「標準」のコマンドで /bin/ に置かれるのが普通です。 では、ls とだけ入力すると、なぜ /bin/ls が起動されるのでしょう? 4.4.1 PATH のこと ここで次のコマンドを叩いてみてください。 $ echo $PATH 何が表示されたでしょうか。 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:...(省略) これは環境変数の PATH というものに設定されている内容です。コロン(:)で区切っていくつかのディ レクトリを並べたものを設定します。 この PATH がどのように働くかというと... bash は入力された「コマンド」の実行ファイルを探すときに、この PATH に設定されている ディレクトリを探す ということなのです。 PATH には複数のディレクトリが指定されていますが、bash はコマンドを探す際にそれらのディレクト リを順に探します。そして最初にみつかったファイルを実行します。PATH には /bin も含まれています。 従って、コマンドとして単に ls と指定すると /bin/ls が実行されるのです 3 。 1これには少し嘘があります。「コマンド」の中にはプログラムではなく bash の組み込みコマンドもあります。 2ここにも少し嘘があります。詳細は次のセクションで説明します。 3もしも、ですが、PATH に設定されている他のディレクトリにも ls があったとするとどうなるでしょう?それは、PATH のディ レクトリの並びの中で、「最初」にみつかった ls が起動されます。なので、PATH の中のディレクトリの順番はとても重要です。
  • 46.
  • 47. 43 第5章 vi 入門 CUI でコマンドを駆使する際には、これに加えていろいろな設定を「手作業で」変更することがありま す。「手作業」と呼ぶのは、その設定を行うための GUI がない、という意味です。つまり「設定ファイル を編集」する必要があります。上で PATH を書き換えることをしましたが、これもそのうちのひとつです。 設定ファイルは、多くの場合単純なテキスト・ファイルです 1 。 テキスト・ファイルはテキスト・エディタで編集します。 Linux の標準的なテキスト・エディタは vi です。拡張版は vim と呼ばれますが総称して vi と呼びま す。フリーソフトのエディタなどもありますが vi が基本です。 やはり本をちゃんと読む必要があります [3]。 実は、vi ほど取っ付きにくいエディタはありません。最初は「なんて使いにくいんだ!」と腹が立って くるかもしれません。しかしながら、慣れてしまうと「なんと使いやすいんだ!」と思うはずです。しば らくは練習しないと使いこなせませんが、Linux 操作や Linux 上でシステム開発するためには必須です。 上でも書きましたが、vi の全貌を知るためには本を丸ごと読むほかありません。そして、これも bash と同様、それだけの学習をするだけの価値があります。ただ、今は本を読んでいるだけの暇がありません ので、それは皆さんの宿題としてここでは、もうすこし取っ付きやすい学習方法を説明します。 5.1 vimtutor vi の拡張版が vim ですが、それを学習するためのプログラムがあります。vimtutor です。 しかし、vimtutor はデフォルトではインストールされていません。 そこで、次のコマンドを実行します 2 。 $ sudo apt install vim これで vimtutor 関連のモジュールがインストールされました。 $ vimtutor で vimtutor が開きます。 なお、ターミナルのウインドウは大きくした方が使いやすいでしょう。(図 5.1) 1ここで「単純な」というのは、例えば Office ツールの Excel や Word が作成するファイルのように、特別な構造を持ってい るものではない、ということを意味しています。 2vimtutor がインストールされていない状態で $ vimtutor とすると次のようなエラーが出力されます。 プログラム ’vimtutor’ はまだインストールされていません。次のように入力することでインストールできます。 sudo apt install vim-runtime ところが、ここに書かれているコマンドを実行するだけでは vimtutor は正しくインストールされません。そこで、本文中にあ るような追加インストールをしています。
  • 48. 44 第 5 章 vi 入門 図 5.1: vimtutor vimtutor は実際には vi が起動されて、チュートリアル用のファイルを自分用に開くだけのことです。 つまり、見ているファイルを vi で開いたところです。あとはここに書かれている「レッスン」を順にこ なしていくだけです。指示されている通りにカーソルを移動し、また、指定されている通りにテキストを 編集して下さい。 初めはカーソルを移動するためにキーボードの矢印キーを使っても構いませんが、レッスン 1.1 でカー ソルの移動を学んだ後は、そこで学んだキーを使ってカーソルを移動させて下さい。 よろしいでしょうか、ここからはキーボードの矢印キーの使用は禁止です! 5.2 vi の終了方法 vi は途中でおかしくなると終了させることすらできなくなることがあります。そんな場合は ESC キー を何度か押したあと :q! <ENTER> を入力してください。
  • 49. 5.3. vi の極意 45 5.3 vi の極意 vimtutor で練習すれば vi の「フルスクリーン・エディタ」としての主な機能は使えるようになると 思います。しか∼し、vimtutor で学べるのは vi の持つ機能の半分にすぎません。 残りの半分とは何か? それは ex コマンドと呼ばれるものです。 vi は、実はテキスト・エディタ本体ではなく、そのユーザインタフェース部分だけを制御する部分に すぎません。テキスト・エディタ本体こそ ex なのです。 画面上でカーソルを自由に移動させ、目的の箇所で文字と追加・削除・変更などとするために vi のコ マンドがあります。これを学ぶのが vimtutor でした。残りの半分である ex コマンドは、画面上で操作 するというよりは、対象のデータ(バッファと呼ばれます)を行の集まりと見て、行単位で処理するため のコマンドです。 実は ex コマンドはすでに少しだけ使っています。vi を終了させる際に :q! と打ったと思います。こ の ’:’(コロン)で始めるコマンドが ex コマンドなのです。 5.4 ex コマンドの神髄 ex コマンドの一端を示します。 :%s/abc/xyz/g このコマンドは、編集中のテキストの中のすべての abc を xyz に置き換えます。 同様に :g/abc/d は abc を含んでいる行をすべて削除します。 このようにテキスト全体に対して同じようなことをしたい場合に ex コマンドは実に強力です。 この節には「ex コマンドの神髄」と名付けましたが、まだこれだけではその真価をお伝えしたことに はなりません。 :%s/^abc/xyz/ は最初の例と少し違うだけですが、単に abc を置き換えるのではなく、「行の先頭にある abc」だけを xyz に置き換えます。’ˆ’ が「行の先頭」を表します。 このように、特別な意味を持つ文字と組み合わせることで様々な文字の「クラス」を表すことができる のです。このような文字列のパターンの表現方法を「正規表現」(Regular Expression)と呼びます。RE あるいは R.E. と略す場合もあります。 Linux では正規表現が使えるのは vi の中だけではありません。bash のコマンドでも引数でファイルを 指定する際などに使います。 ここまで来ると短期間のトレーニングでは伝えきれない範囲に足を踏み入れることになります。ぜひ本 を通読して vi の神髄に触れていただきたいと思います。
  • 50. 46 第 5 章 vi 入門 5.5 vi のカーソル移動練習 vi のカーソル移動は h, j, k, l で行いますが、これに慣れるためにゲームで練習しましょう。 まず、プログラムをインストールします。 $ sudo apt install bsdgames インストールが終わったら、次のコマンドを実行します。 $ worm worm を起動すると図 5.2 の画面になります。 図 5.2: worm(1) worm と名付けれらているように ooooooo@ は虫です。同時に画面には数字がひとつ現れます。h, j, k, l のどれかのキーを押すとスタートしますが、虫は少しずつ進んでいきます。 ゲームの仕方は簡単です。 • vi のカーソル操作(h,j,k,l)で虫を上下左右に動かします • 移動するのは頭の部分(@)です • この頭の部分が数字のところを通過すればその数字の値が得点に加えられます • 虫の長さも次第に長くなります • 頭が壁や自分の体にぶつかるとゲームオーバーです ゲームを進めると虫が長くなっていくとともに、ターゲットの数字の現れる位置が微妙なところになる ので、どんどん難しくなっていきます。(図 5.3)
  • 51. 5.5. vi のカーソル移動練習 47 (1) (2) (3) (4) 図 5.3: worm(2) これで vi のカーソル操作はしっかり身につくでしょう。
  • 52.
  • 53. 49 第6章 bash, プロへの道 bash でコマンドを実行することは実施しました。 ここから先へ進むためには何を学ばねばならないでしょうか? 大きく分けると二つの面があります。多数の Linux コマンドと、それらを起動するための bash そのも のです。 6.1 Linux コマンド 数多くの Linux のコマンドがありますが、これらはひとつひとつ学ぶ必要があります。しかしながら、 すべてのコマンドをマスターする必要は全くありません。特定の作業のためだけに使うコマンドも多数あ りますし、一生使わないものもあるかもしれません。ですからコマンドだけを順番に覚えようとしてもあ まり意味がないでしょう。 そうではなく、Linux が持つ基本機能に関連づけて実際に使ってみるのが良いでしょう。 6.1.1 man 最も重要なコマンドのひとつに man があります。これはマニュアルを参照するためのコマンドです。詳 しい使い方を知るためには次のコマンドを実行して下さい。 $ man man つまり、man コマンドで man のマニュアルを読むということです。 さて、Linux コマンドには多くのコマンドがありますが、それらを使う場面が若干異なります。もちろ ん、どのコマンドをいつどような場面で使っても構いませんが、目的により若干の違いがあります。 以下では四つの場面に分けて良く使われるコマンドを列挙します。 • 通常の作業 • 開発 • システム管理 • その他 なお、どちらかといえばシステム管理用ではあるけれども、日常的にも使うようなものは通常に入れま した。また、「その他」は普段使うことはめったにありませんが、何かのときには必要になるというよう なものです。 各コマンドに簡単な説明だけを書きます。詳しくは man コマンドで調べて下さい。
  • 54. 50 第 6 章 bash, プロへの道 6.1.2 通常の作業用 • cat:ファイルの中身を表示する • chmod:ファイルのパーミッション(アクセス権)を変更する • chown:ファイルのオーナー(持ち主)を変更する • cp:ファイルをコピーする • diff:ファイルの差分を表示する • echo:引数の文字列をそのまま表示する • grep:ファイルから正規表現で指定された文字列に一致する行を表示する • head:ファイルの先頭部分を表示する • kill:プロセスにシグナルを送る(プロセスを強制終了させる) • more:ファイルをページ単位で表示する • less:more と同様であるがより強力 • ln:ファイルのリンク(ソフト/ハード)を作成する • ls:ファイルリストを表示する • mv:ファイルを移動する • nkf:日本語文字コードを変換する • rm:ファイルを削除する • sort:ファイルをソート(並び替え)する • ssh:安全なリモート接続を行う • tail:ファイルの末尾を表示する • tar:テープアーカイブ形式に圧縮/解凍をする • uname:システム名を表示する • unzip:zip ファイルを解凍する • who:システムの利用者を表示する • zip:zip 圧縮する 6.1.3 開発用 • gcc:GCC コンパイラ • make:ビルドツール
  • 55. 6.2. bash 51 6.1.4 システム管理用 • at:指定時刻にコマンドを実行する • apt:パッケージ管理ツール • fdisk:ディスクを初期化する • fsck:ファイルシステムのチェック/修復を行う • iptables:IP パケットの制御を行う • mount:ハードディスクをファイルシステムにマウントする • netstat:ネットワークの状態を見る • nice:プロセスの優先度を変更する(下げる) • nslookup:DNS を調べる • ping:ICMP の echo コマンドを送信してネットワーク上のマシン/機器からの応答を見る • ps:プロセスの状態を見る • shutdown:システムをシャットダウンする • vmstat:仮想記憶の状態を見る 6.1.5 その他 • dd:ハードウェアにたいしてデータストリームの書き込み/読み出しを行う 6.2 bash bash はコマンド入力とその実行をサポートするための様々な機能を持っています。その一端を示します。 1. 以前に実行したコマンドを再実行する 2. 入力行の編集をする 3. 同じような操作を複数の対象(例えばファイル)に対して行う場合、ひとつの記述で複数の処理を 繰り返して実行する 4. 複数のコマンドをつないで実行する(パイプライン処理) 5. 一連のコマンドをスクリプト(プログラム)として実行する しかしながら、これらの詳細を説明するためには本一冊分を要します [2]。ここではキー操作を楽にす る最初の二つの機能について説明します。
  • 56. 52 第 6 章 bash, プロへの道 6.2.1 コマンドの再実行 以前に実行したコマンドを次のコマンドで確認することが出来ます。 $ history このコマンドを実行すると次のような表示がされます(ただし、人によって表示内容は異なります)。 ✓ ✏ 265 cd 266 pwd 267 mkdir work123 268 ls 269 cd work123 270 pwd 271 touch abc 272 ls -l 273 rm abc 274 ls 275 cd .. 276 rmdir work123 277 cd 278 pwd 279 mkdir work123 280 ls 281 ls work123 282 touch work123/abc 283 ls -l work123 284 rm work123/abc 285 ls work123 286 rmdir work123 287 history ✒ ✑ これまでに実行したコマンドが表示されます。左端にある数字はコマンドの番号です。 この番号を元に、次のようにすると過去に実行したコマンドを再度実行することができます。 $ !<番号> つまり、! にコマンドの番号だけを入力します。例えば $ !272 のようにします。すると $ ls -l を実行します。 なお、直前に実行したコマンドをもう一度実行したい場合には $ !! と、! を二つ入力します。
  • 57. 6.2. bash 53 6.2.2 入力行の編集 コマンドを入力する際、コマンドや引数の文字を間違えることがあります。これは仕方のないことです が、問題はそれをいかに素早く修正できるか、です。1 行の入力の中のことなので出来ることは限られて います。 普通であれば Backspace で直前の文字を消して改めて入力します。しかし、間違えてすぐに気づかず、 さらに文字を入力してから気がつくこともあるでしょう。そのような場合、Backspace だけで修正しよう とすれば、正しい文字まで消してしまうことになります。 実は、カーソルキー(矢印キー)でカーソルを左右に移動させて、修正したい文字の上にカーソルを 持ってゆき、そこで Delete キーで削除することが出来ます。 しかし、矢印キーを使うのは効率が良くなりません。矢印キーは PC によって位置が違うほか、通常の キーとは離れたところにあるため、なかなかタッチタイピングが出来ないためです。 bash ではこれに対応するために特殊なキーの組み合わせでカーソルキーを自由に移動させることが出 来るほか、文字の削除が出来ます。そのキーの組み合わせを表 6.1 に示します。 表 6.1: bash のキー操作 キー 動作 ctrl+b カーソルを左(前の文字)へ移動する ctrl+f カーソルを右(次の文字)へ移動する ctrl+a カーソルを行の先頭へ移動する ctrl+e カーソルを行の末尾へ移動する ctrl+d カーソル位置の文字を削除する ctrl+k カーソルから末尾までを削除する ctrl+u カーソルの前(左)から行頭までを削除する ctrl+y ctrl+k または ctrk+u で削除された文字(列)を貼り付ける ctrl+p 直前に実行したコマンドを呼び出す ctrl+n 次に実行したコマンドを呼び出す いずれもコントロールキーと一緒に押します 1 。 1このキー操作は、vi よりも強力なツールである emacs とほぼ同じです。
  • 58.
  • 59. 55 第7章 Web サーバの構築 ここでは Web サーバの apache をソースコードからインストールします。 Linux でプログラムをインストールするためには、パッケージ管理ツールを使うのが一般的でありまた 容易です 1 。しかしながら、実際の現場では最新のモジュールが必要になることがあります。その場合に は、ソースコードを取得してそれから構築しなければなりません。 ここでは apache の構築のために必要な簡単な説明をした上で、コマンドを列挙します。コマンドは、 必要なものだけ sudo で実行します。つまり、本当に管理者権限が必要なところだけ sudo で実行し、必 要のないところは通常のコマンドとして実行します。全てを管理者として実行する例をネットなどで見か けますが、これは Linux 操作としてはなはだよろしくありません。sudo コマンドの使用は極力減らすこ とを心がけて下さい。 7.1 概要 7.1.1 必要モジュール Web サーバとして最も大きなシェアを持つ apache を導入するためには、いくつか必要なモジュール (ライブラリ)があります。それは次のものです。 • apr:apache portable runtime • apr-util:apr のためのツール類 • pcre:Perl Compatible Regular Expressions • apache2:apache 本体(現在はバージョンが 2.X のものを使います) 7.1.2 ソースコードからの構築 ソースコードからモジュール(実行プログラムやライブラリ)を構築するための手順は大雑把に言えば 以下のような流れで実行します。 1. ソースコードを取得する 2. ソースコードは圧縮していあるのでそれを解凍する 3. 解凍してできたディレクトリで以下の作業を行う 4. 作業環境に併せてビルド用の構成を行う(通常、configure というスクリプトを実行する) 5. make を実行する 6. インストールする。ここだけ特権ユーザで実行する 最後のところだけ特権ユーザで実行します。つまり、ここだけ sudo で実行するかまたは su で root ユーザになって実行します。 1Ubuntu であれば apt がパッケージ管理ツールです。
  • 60. 56 第 7 章 Web サーバの構築 7.2 apr $ wget http://ftp.riken.jp/net/apache//apr/apr-1.5.2.tar.bz2 $ tar jxvf apr-1.5.2.tar.bz2 $ cd apr-1.5.2 $ ./configure --prefix=/usr/local/apr $ make $ sudo make install 7.3 apr-util $ wget http://ftp.riken.jp/net/apache//apr/apr-util-1.5.4.tar.bz2 $ tar jxvf apr-util-1.5.4.tar.bz2 $ cd apr-util-1.5.4 $ ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr $ make $ sudo make install 7.4 pcre $ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.bz2 $ tar jxvf pcre-8.37.tar.bz2 $ cd pcre-8.37 $ ./configure --prefix=/usr/local/pcre $ make $ sudo make install 7.5 apache $ wget http://ftp.riken.jp/net/apache//httpd/httpd-2.4.20.tar.bz2 $ tar jxvf httpd-2.4.20.tar.bz2 $ cd httpd-2.4.20 $ ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-pcre=/usr/local/pcre $ make $ sudo make install 7.6 起動 apache を起動するために次のコマンドを叩きます。 $ sudo /usr/local/apache2/bin/apachectl start
  • 61. 7.6. 起動 57 警告が出るかもしれません。 ✓ ✏ AH00558: httpd: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1. Set the ’ServerName’ directive globally to suppress this message ✒ ✑ これはドメイン名が定義されていない、という警告ですので今のところ無視しておきます。 Apache が動作していることを確認するためにウェブ・ブラウザで http://localhost にアクセスし ます。 図 7.1 のような画面が出れば正常に動いています。 図 7.1: Web サーバ (1) 図 7.1 はデフォルトの HTML で味気ないので、自分用の HTML を書いてみましょう。もちろん vi を 使って次のファイルを作成・編集します。 /usr/local/apache2/bin/htdocs/hello.html ただし、このディレクトリは root ユーザでないとアクセスできない設定になっているので vi を起動 するときは sudo を使います。 $ sudo vi /usr/local/apache2/bin/htdocs/hello.html この hello.html の中身はとりあえずリスト 7.1 のようにします。 リスト 7.1: hello.html 1 <html> 2 <body> 3 <h1>
  • 62. 58 第 7 章 Web サーバの構築 4 Hello World! 5 </h1> 6 </body> 7 </html> HTML に詳しい方はもっと内容を追加して頂いても構いません。 ファイルを保存して再度ウェブ・ブラウザで html://localhost/hello.html にアクセスします。図 7.2 のような画面が出たでしょうか。 図 7.2: Web サーバ (2) apache を停止するためには次のコマンドを入力します。 $ sudo /usr/local/apache2/bin/apachectl stop
  • 63. 59 第8章 あとがきにかえて—本当に学ぶべきもの ここでは Linux で CUI を使うための基礎を学びました。これでコマンドを実行し vi でファイルを編 集することが出来るようになりました。 しかし、これで Linux を使いこなせるわけではありません。基本的なコマンドの簡単な説明をしまし たが、その説明だけでは意味がわからないと思います。「ファイルをコピーする」というのはコマンドを 使わずにもできますし日常的にやっていることなのでイメージはつかめるでしょう。では mv は cp + rm と同等でしょうか? 機能的には同じに見えるかもしれませんが、全く違います。 また、たとえば iptables を考えてみましょう。説明には「IP パケットの制御を行う」とありますが、 IP パケットの意味が分からなければこのコマンドを使いこなすことは出来ません。なんとなくネットワー クの制御をすることはわかるかもしれませんが、このコマンドの使い方を理解するためには、ネットワー クのメカニズムを理解していなければならないのです。 結局、コマンドというのはそれが対象とするもの—コンピュータそのものであったり、ネットワークの メカニズムであったり、様々なもの—についての理解がなければ何の役にも立たないということなのです。 このトレーニングでは、繰り返しますが、本当に入門のための入門しかしません。どうかさらなる Linux の奥地に自分の足で踏み込んでいただきたいと思います。 最後の章では、所謂「基盤系のエンジニア」がどんな作業をしなければならないかの一端をお見せしま した。ここに書かれていることをそのまま実行すれば apache をインストールすることは出来ます。しか しながら、翌日には対象モジュールのバージョンが変わっていて、この通りのコマンドではできなくなっ ているかもしれません。日々、進化し続けています。 エンジニアはいつでもトラブルにぶつかりながら、自らの手でそれを乗り越えて行くのです。
  • 64.
  • 65. 61 付 録A ハードディスクへのインストール A.1 全ディスク使用 ハードディスクをすべて消去してもよいコンピュータがあれば、そのコンピュータに Linux をインス トールすることが出来ます。上で説明した仮想マシンを使うよりも、ハードウェアの性能を十全に使うこ とが出来るので、高速に動作します。 仮想マシンへインストールする手順と、途中からは全く同じです(仮想マシンを作る手間がないだけの ことです)。 概要のみ列挙すれば次のような手順でインストールします。 • すでにダウンロードした Linux の ISO イメージを DVD に「焼き」ます。 • この DVD をコンピュータにセットして、コンピュータを再起動(リセット)します 1 。 • あとは、上で述べた仮想マシンへの「インストール」と同様です。 A.2 デュアル・ブート 既存の OS を残したまま、ハードディスクの空き領域に Linux をインストールするためには事前準備 が必要です。 その準備とは ハードディスクの使用中のパーティションのサイズを縮小して、空き領域を作る ことです。 一度空き領域ができれば、上の「全ディスク使用」と同様の手順でインストールすることができます (ただし、インストール先のパーティションを選択するところで注意が必要です)。 1BIOS の設定でブートの優先順で、「CD(DVD)から」を一番にする必要があります。
  • 66.
  • 67. 63 付 録B 最初にやっておきたいこと Linux は、様々なカスタマイズが可能です。 必ずしなければならないものでもありませんが、後々の使いやすさのために基本的な設定をしておき ます。 B.1 日本語入力環境設定 B.1.1 言語サポートのインストール 「システム設定」-「言語サポート」⇒インストール⇒パスワード入力 B.1.2 Mozc のインストール デスクトップの右上にいくつかアイコンがあります。 この中の一番左に、小さいですがキーボードのアイコンがあるのがわかるでしょうか。(図 B.1) 図 B.1: 入力メソッドの設定(1) これをクリックするとプルダウン・メニューがあるので、その中の「設定」を選びます。すると、「入 力メソッドの設定」画面になります。(図 B.2) 図 B.2: 入力メソッドの設定(2) この画面の左下にある「+」を押すと、「入力メソッドの追加」画面になります。(図 B.3) この一覧の一番上に「Mozc」があるので、これを選んで「OK」を押します。
  • 68. 64 付 録 B 最初にやっておきたいこと 図 B.3: Mozc の設定 「入力メソッドの設定」画面は左上の「×」を押して閉じて下さい。 これで日本語入力のための環境が出来ました。 ターミナルを開いて、コマンド入力できる状態にしてください。この状態で「半角/全角」キーを押す と、デスクトップ右上のキーボードのアイコンが変わるのがわかるでしょうか。(図 B.4) 図 B.4: Mozc の起動 もう一度「半角/全角」キーを押してこのアイコンを元に戻します。 この状態で、端末で次のコマンドを打って下さい。ただし、エンターは押さないで下さい。“echo” と スペースをひとつ打ったところまでです。 $ echo この echo まで入力したところで「半角/全角」を押します。すると日本語が入力できる状態になります ので、ここで「aiueo」を打てば画面には あいうえお と出るでしょう。下線が引かれている状態でスペー スキーを押せば、カナ漢字変換が行われます。 B.2 フォルダ名の英字化 ログインして端末を開きます。 ここで次のコマンドを実行してください。 なお、ここから以降では、コマンド・プロンプトは $ だけで表します。この $ は入力しませんので注 意して下さい。 $ ls -l ls コマンドについてはいずれ詳しく説明しますが、これはディレクトリ(フォルダ)にあるファイル の一覧を表示するものです。
  • 69. B.2. フォルダ名の英字化 65 今このコマンドを実行すると図 B.5 のような表示がされるでしょう。 日本語環境としてインストールしたので、基本的なディレクトリの名前が日本語名になっています。 これはこれでわかりやすいので良いのですが、コマンドで扱うには日本語名は使いにくいのでこれらを 英字名にします。 図 B.5: 日本語名のディレクトリ 端末で次のコマンドを実行します。 $ LANG=C xdg-user-dirs-gtk-update ここで注意していただきたいのですが、スペースを入れて良いところといけないところがある、という ことです。 このコマンドでは空白は LANG=C の後ろのひとつだけです。= の前後に空白を入れてはいけません。 次のような確認画面が現れます。(図 B.6) 図 B.6: 名前変更確認
  • 70. 66 付 録 B 最初にやっておきたいこと ここで画面に左下にある “Don’t ask me this again” にチェックをいれてから “Update Names” を押し ます。(図 B.7) 図 B.7: 名前変更 これを実行したあと、端末上で再度 ls コマンドを実行すると、ディレクトリ名が英字になっているこ とがわかります。 図 B.8: 英字名のディレクトリ B.3 root にパスワードを設定する root ユーザのパスワードは秘匿されたままでわかりません。しかし、それを再設定することは出来ます。 次のコマンドを実行します。 ここで自分のパスワードを XXXXXX、新しく設定する root のパスワードを YYYYYY としていますが、下 の画面イメージの XXXXXX と YYYYYY はどちらも画面上には表示されませんので注意して下さい(表示は
  • 71. B.4. sudo でパスワード入力をしないための設定 67 もちろん、カーソルの移動もありません)。また、YYYYYY に設定するパスワードは忘れないようにして下 さい。 $ sudo passwd [sudo] sudoh のパスワード:XXXXXX 新しい UNIX パスワードを入力してください:YYYYYY 新しい UNIX パスワードを再入力してください:YYYYYY これで root ユーザのパスワードを YYYYYY に設定することができます。 では、root ユーザになってみます。root になるためには su コマンドを使います(ここではプロンプト をキチンと書きます)。 sudoh@ub1604~$ su - パスワード:YYYYYY root@ub1604~# ここでも YYYYYY は表示されませんが、上で設定したパスワードを入力すれば root ユーザに切り替え ることが出来ました。プロンプトが # に変わったことにも注意して下さい。 この状態になれば、root ユーザとして「何でも」できます。毎回 sudo を付ける必要はありません。 元に戻るには exit を入力します。 # exit ログアウト $ プロンプトが元の $ に戻っていると思います。 B.4 sudo でパスワード入力をしないための設定 ここの設定をするためには vi エディタが使えることが前提です。 次のコマンドを実行します。 $ sudo EDITOR=vi visudo このコマンドで /etc/sudoers ファイルを vi で開きます。 単に $ sudo vi /etc/sudoers としても良いのですが、複数の人が同時に編集することを回避するために排他制御をするのが visudo の 働きです。 /etc/sudoers には、sudo コマンドを使ってもよいユーザやグループを登録してあります。 元々 sudo コマンドを使うことは出来ますが、パスワードを要求されないように次の1行をこのファイ ルの最後に追加します。 USERNAME ALL=(ALL:ALL) NOPASSWD:ALL ここで USERNAME には皆さんのログイン ID を指定します。筆者の場合であれば次のようになります。 sudoh ALL=(ALL:ALL) NOPASSWD:ALL 追加したら、ファイルを上書き保存して vi を終了します。 これで sudo コマンドを実行する際にパスワード入力が不要になります。
  • 72.
  • 73. 69 関連図書 [1] Linux 標準教科書 (Ver2.0.0), LPI ジャパン, 2012.10.1 http://www.lpi.or.jp/linuxtext/text.shtml [2] Cameron Newham, Bill Rosenblatt, 入門 bash 第 3 版, オライリージャパン, 2005 [3] リンダ・ラム, アーノルド・ロビンス, 入門 vi 第 6 版, オライリージャパン, 2002