docker創建WordPress並強制使用https


1、創建數據文件夾 mkdir /data ,所有文件都在此配置。

2、安裝docker,參見: https://www.cnblogs.com/yanglei-xyz/p/install_docker.html

3、配置mysql:

mkdir /data/mysql cd /data/mysql docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yourpassword -m 512m --memory-swap -1 --oom-kill-disable -d mysql:5.7

說明:

  • -p 3306:3306 端口映射
  • --name mysql 自定義容器名
  • -e MYSQL_ROOT_PASSWORD=yourpassword 配置mysql默認密碼
  • -m 512m --memory-swap -1 配置允許最大內存及交換空間-1表示無限
  • --oom-kill-disable 防止系統內存不足時自動殺進程

設置mysql允許外網訪問

docker exec -it mysql bash #進入容器內部
mysql -u root -p #進入mysql,密碼為剛設置的密碼
grant all privileges on *.*  to 'root'@'%' ; #允許遠程登錄
flush privileges; #刷新權限
exit #退出mysql
exit #退出容器
#重啟mysql容器
docker restart mysql

4、配置WordPress:

mkdir /data/wordpress
cd /data/wordpress
docker run --name wordpress -p 8002:80 -e WORDPRESS_DB_HOST=172.17.0.1:3306 -v /data/wordpress/www/html/:/var/www/html/ -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=yourpassword -m 512m --memory-swap -1 --oom-kill-disable -d wordpress

說明:

  • -p 8002:80將主機8002端口映射到容器80端口
  • -e WORDPRESS_DB_HOST=172.17.0.1:3306 使用外部mysql
  • -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=yourpassword 外部mysql用戶名密碼
  • -v /data/wordpress/www/html/:/var/www/html/ 映射WordPress的程序文件夾
  •    -m 512m --memory-swap -1 配置允許最大內存及交換空間-1表示無限
  •    --oom-kill-disable 防止系統內存不足時自動殺進程

5、配置nginx:

docker run -p 80:80 -p 443:443 --name nginx -v /data/nginx/www:/www -v /data/nginx/conf.d:/etc/nginx/conf.d -v /data/nginx/cert:/etc/nginx/cert -v /data/nginx/logs:/wwwlogs -m 64m --memory-swap -1 --oom-kill-disable -d nginx

說明:

  • -v /data/nginx/conf.d:/etc/nginx/conf.d 映射配置文件
  • -v /data/nginx/cert:/etc/nginx/cert 映射證書文件

證書可以選擇使用阿里雲的證書,免費一年,到期再申請一次就行了。

下載nginx證書,並上傳到/data/nginx/cert目錄

配置反向代理:

cd /data/nginx/conf.d
vi home.conf
server {
    listen 80;
    server_name  www.yoursite.com;

    return 301 https://www.yoursite.com$request_uri; #自動跳轉http到https
}
server {
    listen 443;
    server_name  www.yoursite.com;

    ssl on;
    ssl_certificate /etc/nginx/cert/3666270_yanglei.xyz.pem;
    ssl_certificate_key /etc/nginx/cert/3666270_yanglei.xyz.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    ssl_prefer_server_ciphers on;

    location / {
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;  #獲取真實ip
        proxy_connect_timeout   90;
        proxy_send_timeout      90;
        proxy_read_timeout      90;
        proxy_buffer_size       4k;
        proxy_buffers           4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://172.17.0.1:8002;
        client_max_body_size 10240m;
   }

}

保存重啟nginx: docker restart nginx 

6、修改WordPress:

配置完之后發現無法加載js及css,解決辦法如下:

進入WordPress程序目錄 cd /data/wordpress/www/html ,修改配置 vi wp-config.php 

在第一段注釋后面增加以下代碼:

$_SERVER['HTTPS'] = 'on';
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

修改完如圖:

 之后訪問WordPress並安裝就可以了,而且已經全站https了,不需要再做其他額外配置。如果在修改前安裝好了WordPress,不知道再這樣改行不行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM