centos7一步一步搭建docker phpmyadmin 及nginx配置phpmyadmin非根目錄重點講解


 系統環境:centos7.7 

 鏡像image 版本:phpmyadmin/phpmyadmin(截止2020.01.10最新版)

  參考文章:https://blog.csdn.net/a2589293499/article/details/102938724

 一、根目錄下的phpmyadmin訪問。

 1、查看版本。

  

 2、拉取最新版本。視網絡速度等待~~

  

 3、查看鏡像。

  

 4、運行。先啟動一個臨時容器,假設你已經有一個可ip連接的mysql數據庫。  

docker run --name my_phpadmin_2020 -d -p 8001:80 --restart=always -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 -e TZ="Asia/Shanghai" phpmyadmin/phpmyadmin

  

 5、訪問。瀏覽器訪問ip:8001。報錯 mysqli_real_connect(): (HY000/2002): No route to host ,問題原因是配置的訪問ip不對

  

 6、解決問題。復制phpmyadmin 容器的配置文件config.sample.inc.php到宿主機config.inc.php。

  

  

  設置 $cfg['Servers'][$i]['host'] = '你的ip地址',保存。

  

 7、刪除容器 my_phpadmin_2020。然后重啟一個掛載配置文件的容器。

docker run --name my_phpadmin_2020 -d -p 8001:80 --restart=always -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 -e TZ="Asia/Shanghai" -v /www/my_admin/config.inc.php:/var/www/html/config.inc.php phpmyadmin/phpmyadmin

參數解析:
-d 后台運行容器,並返回容器ID;
--name 為容器起一個容易區分且容易書寫的名字
-p 映射宿主機端口到容器端口,宿主機端口:容器端口
--restart=always 機器重啟時自動啟動容器
-e       設定一些必須的環境變量。
          -e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國內設定,否則容器內打印的所有日志時間都會差8小時。
          -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 設定數據庫的訪問地址。
-v       掛載宿主機文件到容器。
          -v /www/my_admin/config.inc.php:/var/www/html/config.inc.php 綁定掛載文件

 8、重新訪問登錄,成功。

  

 

生活不止眼前的苟且,還有詩和遠方~~
原文地址:https://www.cnblogs.com/jying/p/12177746.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。

 

 9、如果有人也是在vmware 虛擬機中配置的,仍報錯mysqli_real_connect(): (HY000/2002): No route to host 的話,請檢查端口是否已添加到防火牆。

  

原文地址:https://www.cnblogs.com/jying/p/12177746.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。

 二、下面我們介紹如何在nginx配置非根目錄節點的 phpmyadmin。

 1、前6步與第一部分一樣,從第7步重啟容器時多加一個參數:-e PMA_ABSOLUTE_URI=你的ip:8001/phpmyadmin,由於前面的my_phpadmin_2020沒有刪除,此處我們重命名為my_phpadmin_2019。

  

docker run --name my_phpadmin_2019 -d -p 8001:80 --restart=always -e PMA_ABSOLUTE_URI=http://192.168.197.129/phpmyadmin -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 -e TZ="Asia/Shanghai" -v /www/my_admin/config.inc.php:/var/www/html/config.inc.php phpmyadmin/phpmyadmin

參數解析:
-d 后台運行容器,並返回容器ID;
--name 為容器起一個容易區分且容易書寫的名字
-p 映射宿主機端口到容器端口,宿主機端口:容器端口
--restart=always 機器重啟時自動啟動容器
-e       設定一些必須的環境變量。
          -e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國內設定,否則容器內打印的所有日志時間都會差8小時。
          -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 設定數據庫的訪問地址。
          -e PMA_ABSOLUTE_URI=http://192.168.197.129/phpmyadmin  反向代理路徑,路徑名字可以自己起名,此處的ip也可以使用上線后的域名。
-v       掛載宿主機文件到容器。
          -v /www/my_admin/config.inc.php:/var/www/html/config.inc.php 綁定掛載文件

 2、訪問。此時我們在訪問ip:8001頁面能顯示,但是登錄會提示session錯誤。我們配置了上面的反向代理路徑為ip/phpmyadmin,但此時直接訪問/phpmyadmin頁面也報錯。

  

  

 3、使用nginx配置phpmyadmin訪問。

  上一篇(https://www.cnblogs.com/jying/p/12182715.html)已介紹nginx docker的搭建,本文直接修改nginx.conf配置,內容如下。  

  

    

# user root;
worker_processes 8;

events {
    worker_connections  10240;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$host "$request" $remote_addr $remote_user [$time_local] $status $request_time $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;# 這個地址竟然可以是docker里面的絕對路徑!!!,因為-v掛載到了此處

    keepalive_timeout  300;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    send_timeout 300;

    client_max_body_size 200m;
    sendfile        on;
    #tcp_nopush     on;
    #gzip  on;

    limit_req_zone $binary_remote_addr zone=req_limit_per_ip_second:1m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip_minute:10m rate=100r/s;

    #
    server{
        listen 80;
        server_name mytest;
        
        # location ~ .*\.(php|php5|jsp)$ {
        #     deny all;
        # }

        #
        location / {
            if ($document_uri ~* ".*\.(php|php5|jsp)$") {
                # if中不能使用 deny 和 allow
                return 404; 
            }

            root   /usr/share/nginx/html; # 這個地址竟然可以是docker里面的絕對路徑!!!,因為-v掛載到了此處
            index  index.html index.htm;
            access_log /var/log/nginx/root.log  main;
        }

        #
        location /phpmyadmin/ {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Real-IP $remote_addr;

            proxy_pass http://192.168.197.129:8001/; # phpmyadmin 真實訪問路徑
            access_log /var/log/nginx/phpmyadmin.log  main;
        }

    }

}  

 4、重啟nginx容器。訪問ip/phpmyadmin正常~~

   

  

原文地址:https://www.cnblogs.com/jying/p/12177746.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。

 5、如果有人也是在vmware centos虛擬機中配置的,請記得添加防火牆端口權限~~

  

 6、配置完成~~

  

  ~~~~~ 手動分割線 ~~~~~~~~~~~~~~~~~·

  本文的難點是nginx配置phpmyadmin非根目錄訪問,如果是根目錄其實直接配置就能訪問,但是非根目錄必須要配置 PMA_ABSOLUTE_URI 參數用於反向代理,特別感謝文章: https://stackoverflow.com/questions/44499620/phpmyadmin-inside-docker-container-via-nginx-reverse-proxy

  stackoverflow.com 依然是最強大的解決問題基地!!!

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM