[Cloud101]#1 VirtualBox + CentOSで仮想化体験

# 0.AGENDA

1. VirtualBox install

2. centos-minimal VM install
 - yum update/upgradeは勉強会ではやらないので自宅で

3. centosってなんだぁ？
 - OSってなんだぁ?
 - UnixやらLinuxやら
 - RedHatやらUbuntuやら

4. VMとのファイルのやりとり
 - VirtualBox共有フォルダ機能はあえて使わず汎用的な方法で： ssh & sftp

5. curlを使ってみよう

6. CentOSでhttpサーバを感じてみよう

7. 後片付け

# 1.VirtualBox install

- まずは本家のサイト確認[VirtualBox](https://www.virtualbox.org/)
 - このソフトはGPL version2
![001_VirtualBox1.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/db4c9bb3-8f73-c76a-016a-88e0a1075628.png)

<br>
- *本当は：*
  - access to https://www.virtualbox.org/wiki/Downloads
  - 自分の環境にあったインストーラをDL & Install

- **勉強会では：**
　- USBメモリに20160417最新版があるのでそこからInstall :laughing: 

# 2.centos-minimal VM install

## (1) centos-minimalのDL

- まずは本家サイトを確認[CentOS](https://www.centos.org/)
![002_CentOS1.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/99449b9d-fe04-badb-5f88-e2c398132dce.png)

<br>

- *本当は：*
 - access to https://www.centos.org/download/
 - Minimal.iso をDL
![003_CentOS2.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/0f568de5-90ab-ad7b-2419-b89df444fd5e.png)

<br>
- **勉強会では：**
 - USBメモリに20160417最新版がある :laughing: 

## (2) VirtualBoxにcentos VM作成

↓これを参考に
http://www.kakiro-web.com/memo/virtualbox-create-virtual-machine.html

※　ストレージのサイズは10Gで（可変長なので最大値を設定）

## (3)CentOS Install

↓これを参考に
http://www.kakiro-web.com/memo/centos-install.html

![004_VMinstall1.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/e27661cb-2562-9763-96d5-8073fec6f652.png)

- 自分のアカウントを「管理者」にチェックを入れて作成
![006_VMinstall3.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/db6831fa-ea79-9569-9b8b-7a1c666293bb.png)
![007_VMinstall4.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/4aed484a-afbf-6fe8-f752-15e453b130a9.png)

<br>
- VMが立ち上がったら作成したユーザでログイン
![009_VMinstall6.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/a3622990-a1fd-4c2a-b6ea-75d2aefdc3db.png)


## (4) Networkの設定

↓これを参考に
http://www.kakiro-web.com/memo/centos-network-setting.html

- その前に コマンドプロンプト'#' と'$'について
 - $は一般ユーザを表す
 - ＃はroot(特権ユーザ：昔はスーパーユーザって言いました)を表す

```
$su -
Password:  <rootのパスワード>
#

# nmcli connection modify enp0s3 connection.autoconnect yes
# systemctl restart network.service
# ip a で確認
# exit
$ ping www.iij.ad.jp
```
## (5)最新化

- *本当は；*
Installが終わったら最新化します

```
$sudo yum update
......途中で DISK消費とGPG Key Installを聞かれるの両方とも 'y'
$sudo yum upgrade
... 20160417時点では何もなく終了
```

- **勉強会では：**
どちらも行わないので自宅でやって下さい :sweat_smile: 

## (6)確認
- ホストから見ると・・・
![010_VMinstall7.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/7f83a7b0-d6cb-29f1-c521-f851db2fa410.png)

<br>

- VMってホスト上はファイルです
- ![011_VMinstall8.PNG](http://qiita-image-store.s3.amazonaws.com/0/79389/00917510-4120-a7be-87f2-0a49bb2753a1.png)

# 3.centosとは何か？（スミマセン、資料は手抜きです :sweat_smile: ）

## (1)OSって何？
https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0

## (2)Linuxって何？UNIXって何？
https://ja.wikipedia.org/wiki/Linux
https://ja.wikipedia.org/wiki/UNIX

## (3)MS WindowsもOSです
https://ja.wikipedia.org/wiki/Microsoft_Windows

## (4)CentOSとは
- 有名なLinux Distributionの1つで RHELクローン(RedHatのクローン)
https://ja.wikipedia.org/wiki/CentOS
https://ja.wikipedia.org/wiki/Red_Hat_Enterprise_Linux

- こちら(Red Hat)も見てみましょう。
http://developers.redhat.com/products/rhel/get-started/


- $cat /etc/redhat-release って入れてみましょう

```
$cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
```

# 4.VMとのファイルのやりとり

- Macの場合は最初から入っています
- Windowsの場合は'Tera Term'なんかを入れます
 - https://osdn.jp/projects/ttssh2/

## (1)Macの人
- ターミナルからCentOS VMへのssh, sftpコマンドやってみる

## (2)Windowsの人
- Windowsの人はTeraTerm入れて (USBメモリに入ってます :smile: ）
- TeraTermでのSSHアクセス確認
- TeraTerm接続画面から、ファイル→'SSH SCP...'で scpやってみる

自宅でVirtualBoxの共有フォルダ機能をやってみたい人はここを参考に
http://pc-karuma.net/virtualbox-folder-share/


# 5.curlを使ってみよう(CentOS)

- まずは本家サイトを確認：
https://curl.haxx.se/

- CentOS Minimalに入っています

```
$which curl
/usr/bin/curl

$curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
     --anyauth       Pick "any" authentication method (H)
 -a, --append        Append to target file when uploading (F/SFTP)
....
```

- 使ってみる (curlでWeb Siteアクセス)

```
$curl http://www.nagahisa.biz

$curl http://www.nagahisa.biz > hoge.html
```
- hoge.htmlをホストに転送してブラウザで確認してみる

- Windowsからcurl使うこともできます（解凍してできたcurl.exeをコマンドプロンプトから実行）
https://curl.haxx.se/latest.cgi?curl=win64-ssl-sspi

# 6.CentOSでhttpサーバを感じてみよう

## (1)ワンライナーWebサーバ
http://qiita.com/sudahiroshi/items/e74d61d939f18779970d

- CentOS Minimalにはpythonが入っているので'python（SimpleHTTPServer）編'

## (2)Port:8000
```
$python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
```
- ホストのWebサーバからVMのアドレス・Port=8000でアクセス, ファイルはさっきのhoge.html

(例)http://192.168.3.2:8000/hoge.html

- ワンライナーWeb SErver止めるときは "^C" (Ctrl + C)

## (3)Port:80

```
$ python -m SimpleHTTPServer 80
Traceback (most recent call last):
...
socket.error: [Errno 13] Permission denied

$ sudo python -m SimpleHTTPServer 80
Serving HTTP on 0.0.0.0 port 80 ...
....
```

- ホストのWebサーバからVMのアドレス, ファイルはさっきのhoge.html

(例)http://192.168.3.2/hoge.html

## <おまけ>
- 自分でhtmlファイルを作ってCentOSのWebサーバで公開＆ホストブラウザで表示してみる
- htmlファイル作成の参考
http://codecamp.jp/textbooks/

```
$cat << EOF > index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Webページを作成してみよう</title>
</head>
<body>
初めてのWebページ
</body>
</html>
EOF

$cat index.html
$sudo python -m SimpleHTTPServer 80
[sudo] password for kenzo:
Serving HTTP on 0.0.0.0 port 80 ...
....
```
## 7.後片付け

- CentOSのShutdown

```
$ sudo shutdown -h now
```
- VirtualBoxマネージャでCentOSが「電源オフ」になったことを確認

## おしまい :tada: