中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker如何快速搭建PHP+Nginx+Mysql環境

發布時間:2022-08-08 10:58:26 來源:億速云 閱讀:214 作者:iii 欄目:開發技術

這篇文章主要介紹了Docker如何快速搭建PHP+Nginx+Mysql環境的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Docker如何快速搭建PHP+Nginx+Mysql環境文章都會有所收獲,下面我們一起來看看吧。

準備

創建目錄

mkdir -p /Users/mwqnice/Documents/Program/phpProgram &&
mkdir -p /Users/mwqnice/Documents/Program/docker/php/php7.1.33/conf &&
mkdir -p /Users/mwqnice/Documents/Program/docker/php/php7.1.33/logs &&
mkdir -p /Users/mwqnice/Documents/Program/docker/nginx/conf.d &&
mkdir -p /Users/mwqnice/Documents/Program/docker/mysql/conf &&
mkdir -p /Users/mwqnice/Documents/Program/docker/mysql/logs &&
mkdir -p /Users/mwqnice/Documents/Program/docker/mysql/data &&
cd /Users/mwqnice/Documents/Program/docker/nginx/conf.d && sudo touch default.conf

配置PHP

拉取php-fpm鏡像

docker pull php:7.1.33-fpm #版本7.1.33

啟動php-fpm

docker run --name  mwq-php \
-v /Users/mwqnice/Documents/Program/phpProgram:/var/www/html \
-v /Users/mwqnice/Documents/Program/docker/php/php7.1.33/conf:/usr/local/etc/php \
-v /Users/mwqnice/Documents/Program/docker/php/php7.1.33/logs:/phplogs \
-d --link mwq-php php:7.1.33-fpm

--name mwq-php是容器的名字

/Users/mwqnice/Documents/Program/phpProgram是本地項目目錄,/var/www/html是容器內項目存儲目錄

配置Nginx

拉取Nginx鏡像

docker pull nginx:latest //拉取最新版本

配置nginx.conf

server {
    listen  80;
    server_name localhost;
    set $root /var/www/html/localhost;
    
    #access_log  /tmp/nginx/logs/localhost.net.access.log main;
    #error_log  /tmp/nginx/logs/localhost.net.error.log notice;

    location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {
        root $root;
    }

    location / {
        root $root;
        index  index.php index.html index.htm;
        if ( -f $request_filename) {
            break;
        }
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php/$1 last;
            break;
        }
    }

    location ~ .php(.*)$ {
        root $root;
        set $script $uri;
        set $path_info "";
        if ($uri ~ "^(.+.php)(/.+)") {
            set $script $1;
            set $path_info $2;
        }
        fastcgi_pass mwq-php:9000;
        #fastcgi_index index.php;
        fastcgi_index    index.php?IF_REWRITE=1;
        fastcgi_param    PATH_INFO    $path_info;
        fastcgi_param    SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param    SCRIPT_NAME    $script;
        include          fastcgi_params;

    }

    location ~ /.ht {
        deny  all;
    }
    location ~ /.svn {
        deny  all;
    }
    location ~ /.git/ {
        deny  all;
    }
    location ~ /Logs/ {
        deny  all;
    }
    location ~ /Logs/.* {
    }
    location ~ /Logs/.* {
        deny  all;
    }
    location ~ .*.(sql|tar.gz|zip|gz|tar|rariso|rpm|apk|bak)$ {
        deny  all;
    }
  
}

啟動Nginx

docker run --name mwq-nginx -p 80:80 -d \
-v /Users/mwqnice/Documents/Program/phpProgram:/var/www/html:ro \
-v /Users/mwqnice/Documents/Program/docker/nginx/conf.d:/etc/nginx/conf.d:ro \
--link mwq-php:php \
nginx

配置MySQL

拉取MySQL鏡像

docker pull mysql:5.7.36 #版本5.7.36

啟動MySQL

docker run -p 3306:3306 --name mwq-mysql \
-v /Users/mwqnice/Documents/Program/docker/mysql/conf:/etc/mysql/conf.d \
-v /Users/mwqnice/Documents/Program/docker/mysql/logs:/logs \
-v /Users/mwqnice/Documents/Program/docker/mysql/data:/mysql_data \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.36
  • -p 3306:3306: 將容器的3306端口映射到主機的3306端口

  • -v /Users/mwqnice/Documents/Program/docker/mysql/conf:/etc/mysql 將主機/Users/mwqnice/Documents/Program/docker/mysql/conf目錄掛載到容器的/etc/mysql

  • -e MYSQL_ROOT_PASSWORD=123456: 初始化root用戶的密碼

  • -d: 后臺運行容器,并返回容器ID

常見問題

1、thinkphp報錯 Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

缺少pdo_mysql擴展,連接數據庫失敗

找到php.ini,docker中在/usr/local/etc/php中,復制一份php.ini,增加extension=pdo_mysql.so,重啟php-fpm,如果還是不行,訪問phpinfo頁面,查看是否有pdo_mysql

Docker如何快速搭建PHP+Nginx+Mysql環境

如果沒有,說明沒有pdo_mysql擴展,需要編譯

編譯方法如下:

到docker的php容器中,在php文件夾下:

docker-php-ext-install pdo pdo_mysql

如果報 /usr/local/bin/docker-php-ext-enable: cannot create /usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini: Directory nonexistent

解決方案:直接在/usr/local/etc/php目錄下面新建 conf.d目錄和對應的docker-php-ext-pdo_msql.ini文件

其中docker-php-ext-pdo_msql.ini的內容為:

extension=pdo_mysql.so

2、thinkphp 報錯 STORAGE_WRITE_ERROR:./Application/Runtime/Cache/Home/4e64ea6a2012f26b832b14cbc2152b28.php

是因為服務器緩存文件夾的操作權限不夠,即Runtime沒有權限,把緩存文件全部刪除,再給Runtime777權限就行了

sudo chmod 777 Runtime 或者直接對代碼庫最外層設置777權限

3、thinkphp驗證碼圖片顯示不出來

缺少gd擴展,安裝:

docker-php-ext-install gd

可能以下報錯:

If configure fails try --with-webp-dir=<DIR>
If configure fails try --with-jpeg-dir=<DIR>
configure: error: png.h not found.

安裝:

apt-get install libpng-dev libjpeg-dev

再次執行:

// 增加freetype配置
docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include --with-jpeg-dir=/usr/include

// 安裝
docker-php-ext-install gd

php.ini增加php_gd2.so

Docker如何快速搭建PHP+Nginx+Mysql環境

phpinfo中顯示gd庫

Docker如何快速搭建PHP+Nginx+Mysql環境

注意如果phpinfo的gd庫中沒有freetype的支持,驗證碼依然顯示不出來, 會報錯:

Call to undefined function Think\imagettftext()

如果gd庫中沒有freeType,則按照以下步驟進行:

docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include

重新編譯:

docker-php-ext-install gd

如果報錯: configure: error: freetype-config not found. 運行:

apt-get -y install libfreetype6-dev

然后再繼續運行上面的命令。gd庫中有了freetype,則驗證碼顯示正常了

關于“Docker如何快速搭建PHP+Nginx+Mysql環境”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Docker如何快速搭建PHP+Nginx+Mysql環境”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

周宁县| 章丘市| 宝丰县| 德庆县| 吴江市| 牡丹江市| 循化| 乌恰县| 台安县| 张家港市| 多伦县| 绩溪县| 通海县| 宁乡县| 漠河县| 英山县| 营口市| 北票市| 东海县| 吉林省| 镇沅| 德钦县| 新竹市| 息烽县| 炉霍县| 陆川县| 靖安县| 汨罗市| 招远市| 济南市| 新田县| 夏邑县| 福泉市| 蒙阴县| 台前县| 五寨县| 五峰| 武城县| 星子县| 肥西县| 丽江市|