CentOS 7 Docker方式安装 PHP,Mysql,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 地址

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 myphp56 restart

再次测试!输入 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 ,会不会头大?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章