好久沒有更新部落格了,有兩三年沒有寫了。
最近想自己搭個網站,學了兩天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分鐘你來打我的臉。