使用docker-compose搭建WordPress網站並開啓https教程

一、前言

之前一直採用LANMP直接搭建服務,但後來使用docker後,搭建和遷移數據都很方便,所以將服務都容器化。

下面介紹一下使用docker-compose搭建WordPress網站,並且使用Nginx的反向代理開啓https的方法。

直接搭建的文章可以參考我的這一篇博文:最新Centos 7.6 LANMP搭建WordPress詳細教程

二、環境準備

基礎環境的搭建這裏不做細講,默認環境已經安裝或者擁有下面的服務和文件:

  • Nginx服務器
  • docker
  • docker-compose
  • 域名證書(Nginx適用)

docker的安裝可以參考我的這一篇博文:Ubuntu使用Docker搭建編譯環境完整教程

三、docker-compose配置

(一)docker-compose.yml

注意點:

  • 數據庫掛載到當前./db文件夾
  • WordPress掛載到當前./wordpress文件夾
  • 主機ports使用的是17080端口,可以自行修改,後面Nginx需要反向代理到這個端口
  • WORDPRESS_DB_PASSWORD是我設置的數據庫密碼,可自行修改,但是需要和下面的MYSQL_PASSWORD值相同。
version: '3.1'

services:

  wordpress:
    image: wordpress
    container_name: wordpress
    restart: always
    ports:
      - 17080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: KDM2RwB5fcQ2X2
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wordpress:/var/www/html

  db:
    image: mysql:5.7
    container_name: wordpress_db
    restart: always
    environment:
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: KDM2RwB5fcQ2X2
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - ./db:/var/lib/mysql

(二)啓動運行

docker-compose.yml所在文件夾運行下面的命令啓動:

docker-compose up -d

可以使用下面的命令查看運行日誌:

docker-compose logs -f

等日誌顯示啓動完畢後,我們在瀏覽器裏輸入http://127.0.0.1:17080應該可以看到安裝界面了,如果你只需要使用ip和端口進行訪問,安裝完畢就可以用使用了,不需要閱讀下面的步驟

但是我們一般使用域名訪問,而且本文還開啓了https,所以還需要配置Nginx反向代理。

溫馨提示:

如果你確定使用域名訪問並開啓htpps,建議可以等反向代理配置完畢後再輸入域名進行安裝,這樣後面不用修改站點地址。

四、Nginx配置

/etc/nginx/conf.d裏創建wordpress.conf

注意點:

  • server_name換成你的域名
  • ssl_certificatessl_certificate_key換成你的域名證書
  • proxy_pass換成你的鏈接和端口號
server {
    listen 80;
    listen [::]:80;

    server_name shangyexin.com www.shangyexin.com;

    # redirect all HTTP requests to HTTPS with a 301 Moved Permanently response.
    return 301 https://www.shangyexin.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name www.shangyexin.com;

    location / {
          proxy_pass http://127.0.0.1:17080;

          proxy_http_version    1.1;
          proxy_cache_bypass    $http_upgrade;

          proxy_set_header Upgrade              $http_upgrade;
          proxy_set_header Connection           "upgrade";
          proxy_set_header Host                 $host;
          proxy_set_header X-Real-IP            $remote_addr;
          proxy_set_header X-Forwarded-For      $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto    $scheme;
          proxy_set_header X-Forwarded-Host     $host;
          proxy_set_header X-Forwarded-Port     $server_port;
    }

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /yasin/ssl/nginx/www_shangyexin_com/www.shangyexin.com.pem;
    ssl_certificate_key /yasin/ssl/nginx/www_shangyexin_com/www.shangyexin.com.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    # intermediate configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;

重啓Nginx使配置生效:

systemctl restart nginx

五、WordPress配置

這時候還不要使用域名直接訪問你的網站,需要在WordPress的配置裏將網站地址改成你的域名:

wordpress

修改完成後,瀏覽器裏輸入你的域名,應該就可以看到https開啓成功了。

如果之前訪問過域名鏈接,因爲開啓了HSTS,所以可以會自動跳轉到域名+端口的地址,這時候需要清除緩存和cookie後再重新訪問,或者使用瀏覽器的隱身模式,可以先確認網頁可以打開。

六、結束

就這?是的,就這。

是不是超級簡單?所以也許這就是容器的魅力吧。

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