20190409 昨天搭建了 本地 nginx + Docker PHP + Docker mysql + Docker phpMyAdmin
利用以上環境,部署一個新網站,直接下載最新版 phpMyAdmin 部署到本地
1、 下載配置 phpMyAdmin
-
下載
sudo wget https://files.phpmyadmin.net/phpMyAdmin/4.8.5/phpMyAdmin-4.8.5-all-languages.zip -
解壓
CentOS 7.6 怎麼沒有 unzip?先安裝一下
sudo yum install zip
sudo yum install unzipunzip phpMyAdmin-4.8.5-all-languages.zip
-
轉移到 nginx WEB 目錄下
mv phpMyAdmin-4.8.5-all-languages /usr/share/nginx/html/phpMyAdmin -
修改配置
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 網站
-
使用 8080 端口訪問,建立一個測試網站
cd /etc/nginx/conf.d/
sudo vim test.confserver { 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
- 重啓 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
罪過!罪過!
最終的正確結果如下: