centos7.3下docker安裝nginx + php
備註:接上一篇 https://www.cnblogs.com/victorcode/p/15206199.htmlcentos 下搭建docker , 本次介紹docker安裝nginx+php
1.首先安裝nginx
# docker pull nginx (預設安裝nginx最版)也可以使用docker pull nginx版本號
2.建立一個名為nginx的容器並執行 (宿主機埠8081對映到dokcer的80埠)
#docker run --name nginx -d -p 8081:80
備註:
-d 後臺執行
-p 設定埠對映 宿主機埠:容器埠
--name 設定容器別名
--restart=always 設定容器開機啟動
-v 資料卷對映 宿主機目錄:容器目錄。這樣方便我們管理容器配置檔案及日誌檔案
此時去訪問 你的主機ip:埠號 會出現 nginx 歡迎頁 則表示nginx安裝成功 .
docker start nginx 啟動nginx
docker restart nginx 重啟nginx
docker stop nginx 停止nginx
docker中nginx的預設安裝目錄 :
1. nginx.conf /etc/nginx/nginx.conf
2. log /var/log/nginx
3. html /usr/share/nginx/html
4. conf.d /etc/nginx/conf.d (default.conf)
也可執行命令:
# docker exec -it nginx /bin/bash 進入nginx容器去檢視相關預設目錄資訊
3.開始安裝php
# docker pull php:7.2-fpm 此處安裝的是php的7.2版本
首先需要建立docker目錄以及docker下的www目錄 (這個可以隨意建)
# cd /
# ls
# mkdir docker
# cd docker
# ls
# mkdir www
建立一個名為php 的容器並且執行
# docker run --name php -v /docker/www:/www --privileged=true -d php:7.2-fpm
-d 後臺執行
-p 設定埠對映 宿主機埠:容器埠
--name 設定容器別名
-v 資料卷對映 宿主機目錄:容器目錄。這樣方便我們管理容器配置檔案及日誌檔案
上面命令中/docker/www 為宿主機目錄 /www 則為dokcer下對應目錄
此時執行命令 dokker ps
# docker ps
會出現三個正在執行的容器 nginx php
現在配置 nginx載入php
切換到 宿主機 /docker目錄 下 建立nginx相關配置目錄進行和docker下的nginx進行對映
# cd /docker
# mkdir nginx
# cd nginx
# ls
# mkdir {conf,conf.d,html,log}
# ls
# conf conf.d html log
現在將docker下nginx的配置檔案複製宿主機目錄下
#docker cp nginx:/etc/nginx/nginx.conf /docker/nginx/conf/
# docker cp nginx:/var/log/nginx/* /docker/nginx/log/
#docker cp nginx:/usr/share/nginx/html/* /docker/nginx/html
# docker cp nginx:/etc/nginx/conf.d/default.conf /docker/nginx/conf.d/
修改nginx預設配置檔案以支援php解析
# cd/docker/nginx/conf/conf.d/default.conf
# vim
server {
listen 80;
listen [::]:80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /www; 此處修改 /www 為docker下目錄
index main.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root /www;
fastcgi_pass php:9000; 此處修改為 php的容器名
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name; // 此處修改
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
# :wq 儲存退出
#首先需要停止剛剛執行的nginx 並且刪除
# docker ps 檢視正在執行的容器並且在這記住nginx的容器id
# docker stop nginx
# docker rm ngixn的容器id
以上刪除nginx容器是了重新啟動並且載入php執行
docker run -p 8081:80 --name nginx -v /docker/www:/www -v /docker/nginx/conf/conf.d:/etc/nginx/conf.d -v /docker/nginx/log:/var/log/nginx --link php:php --privileged=true -d nginx
注意:以上執行的 /docker/www 和上面php對映目錄需一致,不然配置好訪問php檔案會會出現 file not found 提示 .
然後在/docker/www 下建立test.php 檔案會同步到 docker /www下 , 訪問 http://ip:埠號/test.php 檔案 出現資訊 則表示 nginx已解析php .
至此docker下安裝nginx 並且nginx載入php 完成 .
個人實操記錄 僅供參考,如有不同見解,歡迎留言 .