• 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 依然是最强大的解决问题基地!!!

      

  • 相关阅读:
    我的第一个博客在博客园安家了,哈哈~欢迎大家光临
    JS未设置对象问题解决方案
    关于Oracle的优化
    USACO 1.2 Milking Cows
    C语言的文件操作 freopen
    USACO 1.2 Palindromic Squares
    USACO 1.1 Broken Necklace
    ACM征程再次起航!
    USACO 1.3 Barn Repair
    USACO 1.2 Transformations
  • 原文地址:https://www.cnblogs.com/jying/p/12177746.html
Copyright © 2020-2023  润新知