【Mac用】Docker + Ubuntu + Nginx + PHP-FPM(PHP7.0) の設定方法
目次
この記事のゴール
MacにDocker + Ubuntu +Nginx + PHP-Fpmの開発環境を構築する。
現時点での私のMacのバージョンはmaxOS Sierra バージョン10.12.3。
Dockerのインストール
- 公式からダウンロード。https://docs.docker.com/docker-for-mac/
- 「Stable channel」と「Beta Channel」があるが、私の場合はBeta Channelをダウンロード。
- Stable版を先にインストールしたが、
docker pull {image_name}
をした時に、Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 192.168.65.1:53: server misbehavingというエラーメッセージが出てきてしまうため。 - 解決方法・原因などはっきりしたら追記する。かもしれない。
- インストールして、ターミナルから
docker --version
でバージョンを確認。
Ubuntuを入れる
docker pull ubuntu
で最新版のUbuntuイメージを取得。docker images
で所持しているイメージ一覧を確認できる。docker run -it --name ubuntu -p 8080:80 ubuntu
でUbuntuイメージからコンテナを作成し、そのコンテナに接続する。--name
の後に入れた名前がコンテナの名前になる。指定しないこともできる。-p
の後に番号を指定することで、ホスト側(今操作しているMac)からコンテナにアクセスする際のポートを指定できる。run
でコンテナを起動したらすでにコンテナにアクセスしている状態になるが、exit
でコンテナから抜けられる。- ただし、この方法だとコンテナが停止する(最低1つはプロセスが起動していなければならない)ため、起動した状態を維持して抜けるには
Control+P
の後にControl+Q
を押す。 - 起動中のコンテナに
docker exec -it {container_name} /bin/bash
で接続すれば、とりあえずアクセスはできる。
Nginxを起動
- Ubuntuのコンテナに接続した状態で
apt-get update
、終わったらapt-get nginx
。 nginx
で起動。ps aux
でnginxが起動中なのを確認できる。- ポートを
8080:80
と指定して起動していれば、ホストのブラウザでhttp://localhost:8080にアクセスすることで「Welcome to nginx!」の画面が確認できる。はず。
PHP-FPMを設定する(ソケットを使用)
apt-get install php7.0-fpm
でインストール。php5.6バージョンとか色々ある。cd /etc/php/7.0/pool.d
に移動し、www.confをlessなどで開く。listen = **/run/php/php7.0-fpm.sock**
の記述を確認する(同じバージョンである限りこの記載のはず);
でコメントアウトされてないことも確認する。- 確認したら、/etc/nginx/conf.dに移動し、
vim default.conf
などで.conf形式のファイルを作る。 - 以下の内容を書いておく。割と必要なものだけにしてある。はず。
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm;
server_name localhost;
location ~ [^/].php(/|$) {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
- rootに設定した
/var/www/html/
の中にvim index.php
でファイルを容易。<?php phpinfo();
とか書いておく。 /etc/init.d/php7.0-fpm start
でPHP-FPMを起動。ps aux
でnginxとphp-fpmが起動しているのを確認。- init.dでの起動はダメって言われた気がするけど、なぜダメか理解したら書き直すかもしれない。
確認
nginx -s stop
でnginxを止めたあと、起動。- うまくいってると信じて確認。PHPの紫のバージョン情報画面になったら成功。http://localhost:8080/index.php
- 何かしらうまくいってなかったらubuntuの
/var/log/nginx/error.log
辺りを見る。
今後の課題
- 全然理解していない気がするので、違うと思ったら後日直す。
- マークダウン使いこなせてない、見にくい。慣れたい。