好久没有更新博客了,有两三年没有写了。
最近想自己搭个网站,学了两天docker技术,终于不用自己去配各种环境了,docker还是比较方便的,值得研究一把。
怎么安装不讲了,几个命令搞定,网上一大把,pull下来run起来就可以了。
docker的原则,一个容器只起一个服务,开始我还想一个容器把所有的环境跑起来呢,其实这样不好。整个lnmp环境就是多容器协作来完成。
以前我配置服务器很麻烦,系统不一样,环境不一样,开发服务器和测试机不一样,配起来也有差异,很烦人。
现在用docker,有现成的镜像,就拿过来用嘛,没必要全部自己搞一遍。
- 装nginx,docker pull nginx,run起来
- 装php-fpm,docker pull php:7.0-fpm,run起来
- 装mysql,docker pull mysql:5.6,run起来
- 装phpmyadmin,docker pull phpmyadmin/phpmyadmin,run起来
这样每一个都能单独run起来了
要协作怎么办,用link参数来解决,怎么link自己搜。
这里只讲重点,php和nginx协作,nginx里面配置的目录参数是要传给php-fpm的,传过去的网站目录php容器要能识别,所以你的宿主机器里面的网站目录www要挂到php和nginx对应的地方,然后nginx里面的目录配置要用php的目录配置,不然php容器不认识,就无法解析你的php代码。不知道说清楚了没有。nginx开启php支持,配置fastcgi_param,关键就是这个东西。网上没一个人能讲明白的。
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
就是这个/var/www/html,这个目录是php容器里面的内容目录,为什么在nginx容器里面这样配置,就是nginx要把这个参数传给php容器,php容器他只认识自己的目录结构,nginx里面的内容目录和php里面的内容目录默认是不一样的,nginx的网站目录默认是/usr/share/nginx/html,不能把这个东西传过去,否则php不认识,会告诉你找不到文件。
只有这一个坑,其他的网上搜一大把。
如果你熟悉了docker,看了我这篇文章解了这个坑,配一个一模一样的lnmp环境不需要5分钟,超过5分钟你来打我的脸。