1. 程式人生 > >CentOS 7 Docker部署 phpmyadmin 網站

CentOS 7 Docker部署 phpmyadmin 網站

20190409 昨天搭建了 本地 nginx + Docker PHP + Docker mysql + Docker phpMyAdmin

利用以上環境,部署一個新網站,直接下載最新版 phpMyAdmin 部署到本地

1、 下載配置 phpMyAdmin

  1. 官網 https://www.phpmyadmin.net/

  2. 下載 sudo wget ttps://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip

  3. 解壓

    CentOS 7.6 怎麼沒有 unzip?先安裝一下 sudo yum install zip sudo yum install unzip

    unzip phpMyAdmin-4.8.5-all-languages.zip

  4. 轉移到 nginx WEB 目錄下 mv phpMyAdmin-4.8.5-all-languages /usr/share/nginx/html/phpMyAdmin

  5. 修改配置 cd /usr/share/nginx/html/phpMyAdmin cp config.sample.inc.php config.inc.php vim config.inc.php *** 修改以下 2 處: mysql 容器的 ip 和 password

     //by wzh 20190409 mysql in docker pass =123456
     $cfg['blowfish_secret'] = '123456'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
    
     //by wzh 20190409 mysql in docker ip = 172.17.0.3
     $cfg['Servers'][$i]['host'] = '172.17.0.3';
    

** Docker 容器 IP 不一定是固定的,之後可以去設定成靜態地址 ** 配置之前,提前 docker inspect mysql57 的 ip 地址

** 疑問:既然 mysql 容器已經對映到宿主機的 3306 埠,應該使用 127.0.0.1:3306 是可以的,但是嘗試幾次都失敗了? 總是提示錯誤: mysqli_real_connect(): (HY000/2002): Connection refused

在這裡插入圖片描述

這個問題待繼續處理!

2、 配置 phpMyAdmin 網站

  1. 使用 8080 埠訪問,建立一個測試網站 cd /etc/nginx/conf.d/ sudo vim test.conf

     server {
         listen       8080;
         server_name  127.0.0.1;
         # this is on local
         root /usr/share/nginx/html/phpMyAdmin ;
         index   index.html,index.php;
    
         location / {
         }
    
         location ~ \.php$ {
                 # thsi is on docker,not local /var/www/html
                 root         /var/www/html/phpMyAdmin;
                 index   index.php;
    
                 fastcgi_split_path_info ^(.+\.php)(/.+)$;
                 #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
                 fastcgi_pass 127.0.0.1:9000;
                 fastcgi_param SCRIPT_FILENAME
                 $document_root$fastcgi_script_name;
                 fastcgi_param PATH_INFO $uri;
                 fastcgi_param SCRIPT_NAME $fastcgi_script_name;
                 fastcgi_index index.php;
                 include fastcgi_params;
                 }
     }
    

** 提前啟動之前建立的 Docker PHP 和 Docker Mysql ,可以不用啟動 Docker phpmyadmin

  1. 重啟 nginx 之後測試 sudo service nginx restart

curl 127.0.0.1:8080 瀏覽器開啟 http://192.168.1.184:8080/index.php

出現錯誤! 缺少 mysqli 擴充套件。請檢查 PHP 配置。 詳情請檢視我們的文件。 如下圖

Docker PHP 裡面配置的是純淨版的,沒有配置 mysqli 擴充套件

3、docker PHP 擴充套件 mysqli

參考 https://www.jianshu.com/p/c5349ef2e910 感謝這位博主!這裡再抄寫一遍 進入容器 docker exec -it myphp56 bash cd /usr/local/bin
在這裡插入圖片描述

安裝擴充套件 ./docker-php-ext-install pdo_mysql
安裝擴充套件 ./docker-php-ext-install mysqli 重啟容器 docker restart myphp56

再次測試!輸入 Docker mysql57的賬號密碼 : root /123456 http://192.168.1.184:8080/index.php 出現新問題

在這裡插入圖片描述 應該是 mysqli 擴充套件安裝的不對!點進去 phpmyadmin 的文件 http://192.168.1.184:8080/doc/html/faq.html#faqmysql 也沒有找到我的問題 百度半天也只看到缺少 mysqli 擴充套件的文章

嘗試在 docker 容器內使用 pecl 安裝 pecl install pdo pdo_mysql ... Makefile:208: recipe for target 'pdo_dbh.lo' failed make: *** [pdo_dbh.lo] Error 1 ERROR: `make' failed 最後是失敗的

pecl install mysqli
No releases available for package "pecl.php.net/mysqli" install failed 乾脆就沒有?

在這裡插入圖片描述 從頭來過的時候,發現我抄寫的部落格裡面後一個少了一個字母 i 錯誤的原文 ./docker-php-ext-install mysql 正確的擴充套件 ./docker-php-ext-install mysqli 罪過!罪過!

最終的正確結果如下: 在這裡插入圖片描述

到這裡,利用了 Docker 裡面的 PHP 5.6,Docker 裡面的 mysql 5.7,只在宿主機上安裝了 nginx,配置了一個支援 php+mysql 的網站!

這種方式可以用來在同一個伺服器上配置不同版本的 php 或 mysql,而無需在同一個伺服器上安裝若干不同版本的php 和 mysql

同一個伺服器上多個版本的php,會不會很煩?多個版本的mysql