91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Docker中怎么部署LNMP環境

發布時間:2021-06-22 14:18:06 來源:億速云 閱讀:218 作者:Leah 欄目:大數據

這篇文章給大家介紹Docker中怎么部署LNMP環境,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

整個流程:

  • 客戶端http請求服務器80端口,該端口被映射到Nginx容器80端口,進入Nginx處理。

  • Nginx分析請求,如果是靜態資源,直接服務器讀取內容;如果是PHP腳本,通過PHP容器調用服務器獲取腳本,然后FastCGI處理。

  • FastCGI解析PHP腳本,必要時訪問MySQL容器讀寫數據。

具體步驟

Dockerfile:

  • MySQL鏡像
    繼承自官方的MySQL5.7鏡像,相對獨立解耦的模塊,無其它額外處理,見mysql/Dockerfile。

  • PHP鏡像
    繼承自官方的centos7鏡像,PHP源碼按需編譯安裝,方便后續擴展管理或者配置。通過sed修改php.in監聽所有9000端口(此處為關鍵!!因為提供Nignx容器訪問支持PHP腳本,PHP容器對于Nginx容器不是localhost),完整見php7/Dockerfile。

  • Nginx鏡像
    繼承自官方的centos7鏡像,Nginx源碼按需編譯安裝,方便后續更改或者配置。通過sed修改nginx.conf增加對PHP腳本的支持,完整見nginx/Dockerfile。

構建鏡像:

docker build --tag addcn/mysql -f mysql/Dockerfile .
docker build --tag addcn/php7 -f php7/Dockerfile .
docker build --tag addcn/nginx -f nginx/Dockerfile .

啟動容器:

整個流程可以看到,Nginx、PHP、MySQL三者的關系:
Nginx容器---->PHP容器,PHP容器---->MySQL容器。即容器之間是有關聯的,兩兩容器的數據通信通過容器啟動命令docker run加參數--link解決。

docker run --name mysql -p 3306:3306 -v /root/bo/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -it addcn/mysql
docker run --name php7 -p 9000:9000 -v /var/www/html:/usr/local/nginx/html --link mysql:mysql -it addcn/php7
docker run --name nginx -p 80:80 -v /var/www/html:/usr/local/nginx/html --link php7:php7 -it addcn/nginx

測試 PHP & MySQL:

vi /var/www/html/test.php

<?php
//date
echo date("Y-m-d H:i:s")."<br />\\n";

//mysql
try {
    $conn = new PDO('mysql:host=mysql;port=3306;dbname=mysql;charset=utf8', 'root', '123456');
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
//$conn->exec('set names utf8');
$sql = "SELECT * FROM `user` WHERE 1";
$result = $conn->query($sql);
while($rows = $result->fetch(PDO::FETCH_ASSOC)) {
    echo $rows['Host'] . ' ' . $rows['User']."<br />\\n";
}

//phpinfo
phpinfo();
?>

客戶端瀏覽:
http://192.168.8.36/test.php
![Docker運行PHP及輸出MySQL表][1]
[1]: https://cache.yisu.com/upload/information/20210524/347/781130.png

Q&A

  • Nginx如何支持PHP腳本?
    Nginx容器啟動時候,通過--link php7:php7參數共享PHP容器的網絡,配置nginx.conf文件(見nginx/Dockerfile),當處理PHP腳本時,轉給PHP容器解析:

location ~ \\.php$ {
    root           html;
    fastcgi_pass   php7:9000;  #此處為關鍵!!其中php7為PHP容器的名稱,見啟動PHP容器docker run --name指定的值
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /usr/local/nginx/html$fastcgi_script_name; #關鍵!!/usr/local/nginx/html為web目錄
    include        fastcgi_params;
}
  • PHP如何讀取MySQL數據?
    PHP容器啟動時候,通過--link mysql:mysql參數,與MySQL容器共享網絡,類似兩者處于同一臺機器,因此PHP代碼連接的時候使用$conn = new PDO('mysql:host=mysql;port=3306;dbname=mysql;charset=utf8', 'root', '123456');就可以連接上MySQL(其中host=mysqlmysql為MySQL容器的名稱,見啟動MySQL容器docker run --name指定的值)。

關于Docker中怎么部署LNMP環境就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

西乡县| 连南| 常山县| 花垣县| 湖南省| 鄂尔多斯市| 凤山市| 长岭县| 平顶山市| 六枝特区| 天气| 永仁县| 九寨沟县| 深圳市| 砀山县| 巴林左旗| 卓尼县| 揭东县| 五河县| 行唐县| 阳山县| 三原县| 宁武县| 内江市| 西乡县| 西和县| 泽州县| 邹平县| 濮阳县| 当雄县| 金塔县| 环江| 隆林| 简阳市| 蓬莱市| 龙海市| 陈巴尔虎旗| 潞城市| 惠水县| 防城港市| 河津市|