Docker + Nginx + PHP+ Let’s Encryptでウェブサーバを立ち上げてみた
久しぶりにウェブ開発の話です。

最近、新しいウェブサービスを立ち上げるために、Docker + Nginx + PHP + Let’s Encrypt で環境を構築しました。
色々とわからないことが多くて調べまくりましたw
今日は備忘録も兼ねて記事を書き思ました。
目次
スポンサーリンク
想定している環境
- Ubuntu 16.04.2 LTS
- Nginx 1.13.0
- PHP7
という環境で試しました。
しかし、以下の手順で行えば、基本的にはバージョン関係なく構築できると思います。
環境構築の手順
Let’s Encryptの準備
まずはサーバー証明書を取得する必要があります。
Let’s Encryptのサーバー証明書を取得するので最も簡単な方法は、certbotを使う方法です。(というかこれ以外に方法があるのか知りませんw)
やり方はネット上で無数に紹介されていますので、グーグル先生に聞いてみてください。(個人的にわかりやすかったのはこちらのページです。)
certbotを使って、最終的に以下のようにサーバー証明書等を配置してください。certbot上でインストールするディレクトリを指定すれば、以下のようなフォルダ・ファイルが自動で作られます。
言うまでもないですが、www.hogehoge.comというホスト名は仮のものです。certbotを使っていると途中でホスト名の入力を促されるので、そこで自分のホスト名を設定してください。
/etc/letsencrypt/
├── accounts/ # アカウント情報
├── archive/ # 取得した証明書の実体がドメインごとのサブディレクトリに保存されている
│ └── www.hogehoge.com/
├── csr
├── keys
├── live/ # 最新の証明書へのシンボリックリンクが作られる。
│ └── www.hogehoge.com
│ ├── cert.pem -> ../../archive/www.hogehoge.com/cert2.pem
│ ├── chain.pem -> ../../archive/www.hogehoge.com/chain2.pem
│ ├── fullchain.pem -> ../../archive/www.hogehoge.com/fullchain2.pem
│ └── privkey.pem -> ../../archive/www.hogehoge.com/privkey2.pem
└── renewal/ # 証明書更新のための設定が保存されている。
└── www.hogehoge.com.conf
docker-composeで構築
次にdocker-composeで環境を構築します。
以下のパスのようにフォルダ・ファイル等を作成してください。
├── Dockerfile ├── html │ └── index.php ├── docker-compose.yml └── site.conf
各々のファイルの内容は以下の通りです。
FROM nginx:latest LABEL maintainer="meideru" COPY ./site.conf /etc/nginx/conf.d/default.conf RUN apt-get update && apt-get upgrade -y
<?php echo phpinfo(); ?>
version: '2'
services:
web:
build: ./
ports:
- "443:443"
volumes:
- /etc/letsencrypt:/mnt
depends_on:
- php
php:
image: php:7-fpm
volumes:
- ./html:/var/www/html
server {
index index.php index.html;
server_name www.hogehoge.com;
root /var/www/html;
listen 443 ssl;
ssl_certificate /mnt/live/www.hogehoge.com/fullchain.pem;
ssl_certificate_key /mnt/live/www.hogehoge.com/privkey.pem;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
用意するファイルは以上です。
最後にターミナルでcdコマンドを使って今回作成した親ディレクトリに移動して
$ docker-compose up -d
を実行するだけ。
これで環境構築完成です!
html以下にあるファイルを自分のものと置き換えれば、好きなウェブサイトが構築できます。
まとめ
正直言って、調べるのにめちゃくちゃ苦労しましたw
特に苦労したのはdockerでサーバー証明書のディレクトリをマウントさせる部分ですね。
私はdocker自体あまり使ったことがないので、ボリュームのマウントの挙動がよくわかりませんでした。
何はともあれ、できて良かったです!
わからないことがあればコメント欄へどうぞ♪( ´▽`)
スポンサーリンク
関連記事