PHP
Apache
Ubuntu
Docker
新人プログラマ応援

「DockerでPHP7.0×Apacheの環境を構築する@kurkuru」IT業界新人利用時の16の壁(mac mini編)

DockerでPHP7.0×Apacheの環境を構築する@kurkuru

https://qiita.com/kurkuru/items/fa7401a01c4d5dd98e4a

1 Apache 利用

Webサーバで利用が多い。

2 docker 利用

 Windows, Macintosh, Linuxのどこからでも、いつでも、様々な環境をたくさん立ち上げて試験がしやすい。

3 PHP利用

 何やら使うらしい。

PHP初めて利用の新人が遭遇した壁、壁、壁。

でもdocker使わずにぶつかって乗り越えた壁よりも、再現性がしやすく、構築の手間、保守の手間、試験の手間を考えると、圧倒的に便利。

現地、現物によっては違う壁がいっぱいあるかもしれない。

そこここの壁を乗り越えてPHPにたどり着こう。

また、同じ環境をRaspberry PIでも構築し、dockerの動作とRaspberry PIの動作を確かめ、どういう試験はdockerでやるとよく、どういう試験はRaspberry PIで試せるかを確認しておきたい。

p.s.

上記サイトでのdocker利用はDebian9.4になっていた(実行時点で違うかも)。

# cat /etc/debian_version

9.4

ubuntu, RaspbianもDebian系のapt-getが利用できる。


IT業界の新人が利用する時の16の壁(mac mini編)。

環境の壁、組織の決定事項の壁、画面の類似性による混同の壁など様々。


1電源が入らない

mac miniの電源は、後ろ右のボタンです。


Qiita内関連資料

Mac mini 21台常備試験・研修室

https://qiita.com/kaizen_nagoya/items/3fc572d06eafe15a4c35


2マウスが動かない

電池式無線マウスです。電池が切れたかもしれません。

電池入れ替えます。


3 網(network)が繋がらない。

ごめんなさい。ここ、Macアドレス認証してます。

線を繋いだだけでは繋がらないんです。

ここから先はチチンプイプイ。ここでMacアドレス認証を登録していただくか、Mac アドレス認証を得た機器で繋いでいただくかのどちらか。


3.1 確認方法

3.1.1 ifconfig

網(network)の設定状況がわかります。どの界面(interface)にどの番地(address)が設定できているかがわかります。

lo0がloopbackで、文字ではlocalhost、番地では127.0.0.1です。自分自身を網の先の機器として処理できます。後ほど、ブラウザのURLにlocalhostを書きます。自分のloopbackインタフェースを通じて機能します。

i$ ifconfig

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
en0:
    (略)
status: inactive
awdl0:
    (略)
status: active
en1:
   (略)
status: inactive
en2:
(略)
status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
inet6 fe80::d88d:6924:b76f:9e22%utun0 prefixlen 64 scopeid 0xb
nd6 options=201<PERFORMNUD,DAD>

3.1.2 ping

導通確認・遅延測定命令。Windowsでは4回だけですが、Linux, Macではずっと表示し続けます。「CTRL」キーを押しながら「C」を押してください。localhostにpingすれば、網の遅延ではなく、ping処理の界面(interface)までの遅延が測定できます。(遅延測定が専門。強調しておきたい)

$ ping localhost

PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.044 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.197 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.207 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.168 ms
^C

3.1.3 Wireshark

MacintoshにWiresharkを導入する6つの壁

https://qiita.com/kaizen_nagoya/items/69eb2d357a125f5368e1


4 dockerに接続できない

某所で、docker利用を禁止しています。

dockerの接続は門(gateway)で閉じてます。

試験用、教育用のネットワークでは、かなりの範囲が使えます。

繋がる網から利用しましょう。


4.1確認方法

wiresharkでdockerに接続する際の、門での応答などを収集してみてください。


5 dockerが導入できない

ごめんなさい。dockerの導入の手引きが不十分でした。

docker for macの入れ方は、例えばこちら。

$ brew cask install docker


5.1 確認方法

brew cask install dockerをもう一度入れる

$ brew cask install docker

Error: It seems there is already an App at '/Applications/Docker.app'.


6 brewが入っていない。

brew自体が入っていなければ

MacにHomebrewを導入する方法

https://qiita.com/balius_1064/items/ac7dff5ef10eaf69996f


6.1 確認方法

$ brew update


7 command line toolが入っていない。

Xcodeが入っていてもcommand line toolは自動的にははいりません。昔はウェブで探すのが面倒だった。今は、次のコマンド一発。

xcode-select --install


7.1 確認方法

$ brew --config

HOMEBREW_VERSION: 1.6.6
ORIGIN: https://github.com/Homebrew/brew
HEAD: e4c02fafdaef5676cf40dd6d16e74976cf54b265
Last commit: 6 days ago
(略)
Clang: 9.1 build 902
macOS: 10.13.4-x86_64
CLT: 9.3.0.0.1.1521514116

または

$  pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

package-id: com.apple.pkg.CLTools_Executables
version: 9.3.0.0.1.1521514116


8 Xcodeが入っていない。

APP storeアプリでXcodeで検索、導入。


8.1 確認方法

$ $ cc b.c

clang: error: no such file or directory: 'b.c'
clang: error: no input files


9 dockerが動かない

ごめんなさい。dockerの起動の手引きが不十分でした。

dockerのmacでの起動は、dockerアプリを起動してから

「ターミナル」を立ち上げてdockerコマンドを入力します。

dockerアプリを起動していないと、「ターミナル」でdockerと入力しても、そんなコマンド知らないと言われます。

$ docker pull php

Using default tag: latest
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


9.1 確認方法

「ターミナル」でdocker imagesと入力する。

$ docker images

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?


10 「$」文字、「#」文字を入れてエラーになった

$ $ docker run -d --name php70-apache php:7.0-apache

-bash: $: command not found

$はmacosの入力促進記号(prompt)です。$文字を入れる必要はありません。dockerでは#になっているかもしれません。


11 dockerで入力すべきものをmacで入力して動かなかった。

$echo '<?php phpinfo();' > index.php

$で始まっているのでmacosで入れるものだと思った。

bash: index.php: Permission denied

別のエラーが出たこともある。


12 フォルダが作れない

$ docker run -d -p 80:80 -v /Users/y-tsubuku/docker/php70-apache/www:/var/www/html --name php70-apache php:7.0-apache

aff201b308023e4149c753b9f77a2eedf81ce035af584f1d152eec8783553104
docker: Error response from daemon: error while creating mount source path '/Users/y-tsubuku/docker/php70-apache/www': mkdir /Users/y-tsubuku: permission denied.

そこでディレクトリを作りに行った。

cd /Users

mkdir y-tsubuku
mkdir: y-tsubuku: Permission denied

ディレクトリ作り必要はなく、自分のディレクトリを指定すればよかった。

それならコマンドで以下のように記載されていればよかったかも。

$ docker run -d -p 80:80 -v ~/docker/php70-apache/www:/var/www/html --name php70-apache php:7.0-apache


13 php70-apacheフォルダが分からない。

dockerでPHPがエラーで動いていていない。動かす前だったのでフォルダがない。


13.1 確認方法

cd ~/docker

ls


14 dockerでPHPが動いた状態だったのでエラーになった。

dockerのPHPを止めずに、次のdockerでPHPを動かそうとしたらエラーになった

You have to remove (or rename) that container to be able to reuse that name.

See 'docker run --help'.


15 macで入力すべきコマンドをdockerで打ってしまった。

入力促進記号(prompt)の形の違いを意識していないと、

自分が今、macのコマンドを打っているのか、

dockerの中のlinuxのbashコマンドを打っているのか

分からなくなる。

# vi

bash: vi: command not found


16 そうだ、素のdockerにはvi入っていなかった。

# apt update

# apt install vim -y
# apt install sudo

apt-getはaptで動くようになっている。

dockerの素のubuntuにはsudoも入っていない、、、。


参考文献(reference)

docker入門予定

https://qiita.com/kaizen_nagoya/items/88beed331a1ba814a500

生産縮小、規模縮小、人員縮小時には自動化道具を増強

https://qiita.com/kaizen_nagoya/items/8df1dc7d3a5c7869d3c2

docker利用を勧める256の理由(現在12)

https://qiita.com/kaizen_nagoya/items/c4e5075142bf5e11ddbe

今日のdocker error

https://qiita.com/kaizen_nagoya/items/940189904f57e1d0b249

dockerで画面表示

https://qiita.com/kaizen_nagoya/items/a353862ec69fccce8bc2

dockerfile

https://qiita.com/kaizen_nagoya/items/cbb6c2c8da78bcbffb08


文書履歴(document history)

ver. 0.10 初稿20180529

ver. 0.11 10項目から16項目に追加。mac編を明記。 20180530

ver. 0.21 表現補足追記 20180531

ver. 0.22 詳細追記 20180601

ver. 0.23 参考資料追記 20190222