<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Docker 安裝 wordpress,通過nginx反向代理,綁定域名,配置https

          共 4016字,需瀏覽 9分鐘

           ·

          2021-10-09 12:12

          假設(shè)docker已經(jīng)安裝好了,如果沒有安裝,可以照著 5分鐘安裝docker教程。

          一. 下載鏡像

          默認下載最新版本,如果想指定對應(yīng)版本,可以用冒號后加版本,像這樣mysql:5.7

          docker?pull?mysql:5.7
          docker?pull?wordpress
          docker?pull?nginx

          二. 啟動container實例

          已經(jīng)下載好了image,接下來啟動container,需要分別啟動mysql,wordpress,nginx。

          1. 啟動mysql

          因為wordpress是需要安裝數(shù)據(jù)庫的,這里安裝mysql并且啟動:

          docker?container?run?-d?\
          --name?wordpressdb?\
          -p?3306:3306?\
          --env?MYSQL_ROOT_PASSWORD=123456?\
          --env?MYSQL_DATABASE=wordpress?\
          mysql:5.7

          各個參數(shù)含義:-d: 指定容器以守護進程方式在后臺運行;--name: 指定容器名稱,此處我指定的是wordpressdb;-env 環(huán)境參數(shù),MYSQL_ROOT_PASSWORD設(shè)置root用戶的密碼-p: 指定主機與容器內(nèi)部的端口號映射關(guān)系, [宿主機端口號]:[容器內(nèi)部端口],此處我使用了主機3306端口,映射容器3306端口;mysql:5.7 是nginx的鏡像IMAGE ID前4位

          這些參數(shù)中涉及了一些名詞,如果看不懂,建議去看看docker的基本概念。簡單來說就是,docker技術(shù)通過image這種模板,生成contaienr實例,下次還可以再生成一個contaienr實例,image像是一個模板,可以多次使用。contaienr實例可以看作小型的虛擬機,多個虛擬機在局域網(wǎng)里面,需要將端口映射到宿主機上面,我們都知道直接訪問局域網(wǎng)的內(nèi)網(wǎng)ip是不能訪問的,通過宿主機的公網(wǎng)ip:映射的端口即可訪問了。

          2. 啟動wordpress

          docker安裝wordpress,相比docker安裝mysql,這里相比多了兩個參數(shù),后面會解釋。如果安裝成功,通過docker ps可以看到wordpress的進程,瀏覽器輸入ip:8080,應(yīng)該是可以在網(wǎng)頁安裝wordpress了。

          docker?run?-d?\
          --name?wordpress?\
          --link?wordpressdb:mysql?\
          --volume?"$PWD/wordpress":/var/www/html?\
          -p?8080:80?\
          wordpress

          --link:關(guān)聯(lián)mysql容器,如果是使用非docker安裝的mysql,比如自己手動安裝的mysql,可以通過參數(shù)--env指定數(shù)據(jù)庫連接:

          -e?WORDPRESS_DB_HOST=192.168.80.129:3306?\
          -e?WORDPRESS_DB_USESR=root?\
          -e?WORDPRESS_DB_PASSWORD=123456

          --volume:將容器的/var/www/html映射到當前目錄下,這樣直接操作當前目錄,即可操作容器目錄,否則還得進去容器操作,我們都知道容器是一個閹割版的小型虛擬機,像vim這種常用命令默認是沒有的;

          注意:wordpress容器默認開的是80端口,這里將容器的80端口映射到宿主機的8080端口,為什么不也映射到80端口呢,因為后面要安裝nginx,nginx一般要監(jiān)聽80端口,云服務(wù)商一般配置域名:ikeguang.com綁定云主機的80端口,所以最后nginx只能由nginx占用宿主機的80端口,避免不必要的麻煩。

          3. 啟動nginx

          如果上面wordpress安裝好了,網(wǎng)站可以通過ip地址正常訪問,發(fā)布文章了,可以考慮綁定域名了,加個nginx進行反向代理。

          1). 配置http訪問:

          nginx配置

          http訪問的時候,默認一個server監(jiān)聽80端口即可;如果配置https,需要加個server,監(jiān)聽443端口,這里先把http訪問配置好再說,貼出了我的配置:

          include?/etc/nginx/conf.d/*.conf;
          server{
          ???listen?80;
          ???server_name?ikeguang.com?www.ikeguang.com;
          ???
          ???location?/?{
          ??????proxy_set_header?Host?$host;
          ???proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
          ??????proxy_pass?http://宿主機ip:8080;
          ???}
          }

          這里http://宿主機ip:8080,因為前面我們的wordpress映射宿主機的端口是8080,這里nginx代理宿主機8080端口,也就是說你訪問80端口(nginx),相當于代理訪問了8080端口(wordpress),并且云服務(wù)商配置的域名也是綁定80端口,這樣訪問域名,就訪問了8080端口的wordpress了,就能訪問網(wǎng)站了。

          說明:因我wordpress啟動端口不是80,需要添加配置:

          proxy_set_header?Host?$host;
          proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;

          啟動nginx容器既然nginx.conf配置好了,接下來啟動nginx容器:

          docker?run?-d?-p?80:80?--name?nginx?-v?/usr/share/nginx/html:/usr/share/nginx/html?-v?/etc/nginx:/etc/nginx?-v?/var/log/nginx:/var/log/nginx?nginx

          這里需要注意:

          • 這里將容器的目錄/etc/nginx映射,需要先通過docker cp命令復(fù)制一份完整nginx的目錄到宿主機,然后修改文件,再執(zhí)行上面docker run命令。文件夾映射的時候,文件夾里面的所有文件應(yīng)該是一樣的,文件內(nèi)容可以不一樣。

          經(jīng)過上面的配置,應(yīng)該是可以通過瀏覽器輸入域名:ikeguang.com訪問網(wǎng)站了。

          2). 配置https訪問:

          經(jīng)過前面的配置,通過域名應(yīng)該可以訪問網(wǎng)站了,接下來配置https:nginx.conf配置:

          include?/etc/nginx/conf.d/*.conf;
          server?{
          ????#監(jiān)聽443端口
          ????listen?443?ssl;
          ????#對應(yīng)的域名
          ????server_name?ikeguang.com?www.ikeguang.com;
          ????ssl_certificate?ssl/1_ikeguang.com_bundle.crt;
          ????ssl_certificate_key?ssl/2_ikeguang.com.key;
          ????ssl_session_timeout?5m;
          ????ssl_protocols?TLSv1?TLSv1.1?TLSv1.2;
          ????ssl_ciphers?ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
          ????ssl_prefer_server_ciphers?on;
          ????location?/?{
          ???proxy_set_header?Host?$host;
          ???proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
          ??????proxy_pass?http://宿主機ip:8080;
          ???}
          }
          server{
          ???listen?80;
          ???server_name?ikeguang.com?www.ikeguang.com;
          ???#把http的域名請求轉(zhuǎn)成https
          ???rewrite?^(.*)$?https://$host$1;?#將所有HTTP請求通過rewrite指令重定向到HTTPS。

          ???location?/?{
          ??????proxy_set_header?Host?$host;
          ???proxy_set_header?X-Forwarded-For?$proxy_add_x_forwarded_for;
          ??????proxy_pass?http://宿主機ip:8080;
          ???}
          }

          把前面啟動http的nginx容器刪除,配置好ssl證書,再次啟動,需要啟動80端口和443端口。

          docker?run?-d?-p?80:80?-p?443:443?--name?nginx?-v?/usr/share/nginx/html:/usr/share/nginx/html?-v?/etc/nginx:/etc/nginx?-v?/var/log/nginx:/var/log/nginx?nginx
          • -p 443:443,如果配置ssl,才需要這個參數(shù),開始去掉,這里先把域名綁定成功,http可以訪問了,再進行第二步配置https訪問,ssl證書可以在云服務(wù)商那里申請免費的,然后按照幫助文檔安裝即可,沒啥坑。

          猜你喜歡
          5分鐘安裝docker教程
          Hadoop 數(shù)據(jù)遷移用法詳解
          Hbase修復(fù)工具Hbck
          數(shù)倉建模分層理論
          一文搞懂Hive的數(shù)據(jù)存儲與壓縮
          大數(shù)據(jù)組件重點學習這幾個

          瀏覽 64
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美一级A片在线观看 | 久久九一| 操吊视频| 成人无码做爰www免费 | 精品国产精品一区二区金廿莲 |