1. 程式人生 > 其它 >centos7.3下docker安裝nginx + php

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 完成 .

個人實操記錄 僅供參考,如有不同見解,歡迎留言 .