docker 學習筆記之實戰 lnmp 環境搭建系列 (2) ------ 手動搭建 lnmp 環境

bossaiguo發表於2019-03-22

前面我們已經安裝好了docker,同時瞭解了docker的簡易用法。接下來我們先嚐試使用docker搭建手動lnmp環境,以便進一步的瞭解docker的相關用法吧!

部署mysql

由於mysql部署比較簡單,我們就先捏個軟柿子,並且像資料庫這種關係到公司命脈的服務建議不要放在容器中,這裡我們只是做一個簡單的實驗。我們選用的是目前版本比較新的mysql5.7。

//拉去映象
docker pull mysql:5.7

/*相關引數解析*/
//-d 開啟Daemon模式。
//-p hostPort:containerPort  埠對映
//-e 為容器設定環境變數  MYSQL_ROOT_PASSWORD:mysql密碼
//--name 容器啟動時的名字
docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=mypassword --name mysql mysql:5.7

部署ngnix

nginx伺服器的HTML路徑(網站根目錄)在容器 /usr/share/nginx/html 目錄下,現在需要把這個目錄對映到宿主機的 /var/www/nginx/html 目錄(可自定義檔案目錄)。Nginx 的強大很大部分體現在配置檔案上,對於一些高階的應用來說,自定義 Nginx 非常重要。我們需要把 Nginx 的配置檔案對映到宿主機中。

先起一個nginx 把配置檔案複製到宿主機中。
docker run --name nginx -p 81:80 -d nginx

cd /var/www/nginx/conf
//複製nginx配置檔案
docker cp nginx:/etc/nginx/conf.d/default.conf default.conf

docker ps -a                       # 檢視正在執行的容器

docker stop nginx                  # 停止正在執行的容器

docker start nginx                 # 啟動一個已經停止的容器

docker rm nginx                    # 刪除容器
啟動nginx,並且將nginx配置檔案、網站根目錄對映到宿主機上
//如果掛載一個空的資料捲到容器中的一個非空目錄中,那麼這個目錄下的檔案會被複制到資料卷中。

//如果掛載一個非空的資料捲到容器中的一個目錄中,那麼容器中的目錄中會顯示資料卷中的資料。如果原來容器中的目錄中有資料,那麼這些原始資料會被隱藏掉。    

docker run --name nginx -p 81:80 -v /var/www/nginx/html:/usr/share/nginx/html -v /var/www/nginx/default.conf:/etc/nginx/conf.d/default.conf

部署php

拉取php7.2映象
docker pull php:7.2-fpm
複製php.ini 需要進入容器中解壓php.tar.xz。如果本地有php.ini檔案可將本地檔案複製,忽略此步驟
//啟動php容器
docker run --name php-fpm -p 9001:9000 -itd 7.2:fpm 
//進入php容器
docker exec -it php-fpm /bin/bash
//進入 /usr/local 目錄解壓 php.tar.xz
cd /usr/local
tar -xvf php.tar.xz

//複製檔案
docker cp php-fpm:/usr/local/php-7.2.15/php.ini-development php.ini
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf  www.conf
docker stop php-fpm
docker rm php-fpm
重新啟動php,並將配置檔案對映的容器中
docker run --name php-fpm -p 9001:9000  --link mysql:mysql -v /var/www/nginx/html:/var/www/html -v /var/www/nginx/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf -v /var/www/nginx/conf/php.ini:/usr/local/etc/php/php.ini -d php:fpm       
修改nginx配置檔案
server {

    listen       80;

    server_name  _;

    root /usr/share/nginx/html;

    index index.php index.html index.htm;

    //charset koi8-r;

    //access_log  /var/log/nginx/log/host.access.log  main;

    location / {

        //root   /usr/share/nginx/html;

        //index  index.php index.html index.htm;

    try_files $uri $uri/ =404;

    }

    error_page  404  /404.html;

    location = /40x.html {

        root    /user/share/nginx/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$ {

        fastcgi_pass   php-fpm:9000;

        fastcgi_index  index.php;

//        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

    fastcgi_param SCRIPT_FILENAME $document_root$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;

    }

}
重新啟動 nginx 讓其支援 php
docker run --name nginx -p 81:80 --link php-fpm -v /var/www/nginx/html:/usr/share/nginx/html -v /var/www/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -d nginx    
在 /var/www/nginx/html 新建index.php
<?php
    phpinfo();

至此 php7.2 + nginx + mysql5.7 完美搭建完成!這只是個簡易搭建方式,後續會有更高效的搭建方法哦!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章