Docker 安裝 wordpress,通過nginx反向代理,綁定域名,配置https
假設(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ù)組件重點學習這幾個
