思いついた順に試す

思いついた順に試します

【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 ubuntuUbuntuイメージからコンテナを作成し、そのコンテナに接続する。
    • --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バージョンとか色々ある。
    • apt-get install vim+apt-get install lessvimとlessを入れておく。vimだけでもいい。
  • 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 startPHP-FPMを起動。ps auxでnginxとphp-fpmが起動しているのを確認。
    • init.dでの起動はダメって言われた気がするけど、なぜダメか理解したら書き直すかもしれない。

確認

  • nginx -s stopでnginxを止めたあと、起動。
  • うまくいってると信じて確認。PHPの紫のバージョン情報画面になったら成功。http://localhost:8080/index.php
  • 何かしらうまくいってなかったらubuntu/var/log/nginx/error.log辺りを見る。

今後の課題

  • 全然理解していない気がするので、違うと思ったら後日直す。
  • マークダウン使いこなせてない、見にくい。慣れたい。