docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https
假设docker
已经安装好了,如果没有安装,可以照着 5分钟安装docker教程。
一. 下载镜像
默认下载最新版本,如果想指定对应版本,可以用冒号后加版本,像这样mysql:5.7
:
docker pull mysql:5.7
docker pull wordpress
docker pull nginx
二. 启动container实例
已经下载好了image,接下来启动container,需要分别启动mysql,wordpress,nginx。
1. 启动mysql
因为wordpress是需要安装数据库的,这里安装mysql并且启动:
docker container run -d \
--name wordpressdb \
-p 3306:3306 \
--env MYSQL_ROOT_PASSWORD=123456 \
--env MYSQL_DATABASE=wordpress \
mysql:5.7
各个参数含义:
-d
: 指定容器以守护进程方式在后台运行;
--name
: 指定容器名称,此处我指定的是wordpressdb;
-env
环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码
-p
: 指定主机与容器内部的端口号映射关系,
[宿主机端口号]:[容器内部端口],此处我使用了主机3306端口,映射容器3306端口;
mysql:5.7
是nginx的镜像IMAGE ID前4位
这些参数中涉及了一些名词,如果看不懂,建议去看看docker
的基本概念。简单来说就是,docker技术通过image
这种模板
,生成contaienr
实例,下次还可以再生成一个contaienr
实例,image像是一个模板,可以多次使用。contaienr
实例可以看作小型的虚拟机,多个虚拟机在局域网里面,需要将端口映射到宿主机上面,我们都知道直接访问局域网的内网ip是不能访问的,通过宿主机的公网ip:映射的端口即可访问了。
2. 启动wordpress
docker安装wordpress,相比docker安装mysql,这里相比多了两个参数,后面会解释。如果安装成功,通过docker ps
可以看到wordpress
的进程,浏览器输入ip:8080,应该是可以在网页安装wordpress了。
docker run -d \
--name wordpress \
--link wordpressdb:mysql \
--volume "$PWD/wordpress":/var/www/html \
-p 8080:80 \
wordpress
--link
:关联mysql容器,如果是使用非docker安装的mysql,比如自己手动安装的mysql,可以通过参数--env
指定数据库连接:
-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一般要监听80端口,云服务商一般配置域名:ikeguang.com绑定云主机的80端口,所以最后nginx只能由nginx占用宿主机的80端口,避免不必要的麻烦。
3. 启动nginx
如果上面wordpress安装好了,网站可以通过ip地址正常访问,发布文章了,可以考虑绑定域名了,加个nginx进行反向代理。
1). 配置http访问:
nginx配置
http访问的时候,默认一个server监听80端口即可;如果配置https,需要加个server,监听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),并且云服务商配置的域名也是绑定80端口,这样访问域名,就访问了8080端口的wordpress了,就能访问网站了。
说明:因我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
命令复制一份完整nginx的目录到宿主机,然后修改文件,再执行上面docker run
命令。文件夹映射的时候,文件夹里面的所有文件应该是一样的,文件内容可以不一样。
经过上面的配置,应该是可以通过浏览器输入域名:ikeguang.com访问网站了。
2). 配置https访问:
经过前面的配置,通过域名应该可以访问网站了,接下来配置https:
nginx.conf配置:
include /etc/nginx/conf.d/*.conf;
server {
#监听443端口
listen 443 ssl;
#对应的域名
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的域名请求转成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,才需要这个参数,开始去掉,这里先把域名绑定成功,http可以访问了,再进行第二步配置https访问,ssl证书可以在云服务商那里申请免费的,然后按照帮助文档安装即可,没啥坑。
docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https的更多相关文章
- Nginx反向代理的配置
Chapter: Nginx基本操作释疑 1. Nginx的端口修改问题 2. Nginx 301重定向的配置 3. Windows下配置Nginx使之支持PHP 4. Linux下配置Nginx使之 ...
- nginx反向代理的配置优化
作者:守住每一天 blog:liuyu.blog.51cto.combbs:bbs.linuxtone.orgmsn:liuyubj520#hotmail.comemail:liuyu105#gmai ...
- Centos7 nginx 反向代理的配置
一.正向代理与反向代理 1.正向代理 正向代理往VPN理解 正向代理,也就是传说中的代理,他的工作原理就像一个跳板(VPN),简单的说: 我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这 ...
- 【netcore基础】CentOS 7.6.1810 搭建.net core 2.1 linux 运行环境 nginx反向代理 supervisor配置自启动
之前写过一篇Ubuntu的环境搭建博客,感觉一些配置大同小异,这里重点记录下 nginx 作为静态 angular 项目文件服务器的配置 参考链接 [netcore基础]ubuntu 16.04 搭建 ...
- 腾讯云下安装 nodejs + 实现 Nginx 反向代理
本文将介绍如何给腾讯云上的 Ubuntu Server 12.04 LTS 64位主机安装 node 及 nginx,并简单配置反向代理. 笔者在整个安装过程中遇到不少麻烦(不赘述),如果你希望少踩坑 ...
- Nginx反向代理websocket配置实例
最近有一个需求,就是需要使用 nginx 反向代理 websocket,经过查找一番资料,目前已经测试通过,本文只做一个记录 复制代码 代码如下: 注: 看官方文档说 Nginx 在 1.3 以后的版 ...
- 服务器上nginx反向代理的配置
Nginx不但是一款高性能的Web服务器,也是高性能的反向代理服务器.下面简单说说Nginx的反向代理功能. 反向代理是什么? 反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发 ...
- nginx反向代理缓存配置
关于nginx的反向代理缓存配置,用的最多的就是CDN公司,目前CDN公司用纯nginx做缓存的已经很少了,基本都用tnginx(阿里的).openresty:但是这两款软件都是基于nignx开发的, ...
- Nginx反向代理搭建配置
1.反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将服务器上得到的结果返回给internet 上请求连接的客户端,此时代理服务器对外就表现为一个 ...
- Tomcat多个项目部署,通过Nginx反向代理分别配置二级域名的流程
购买域名.示例:example.com 设置多个二级域名.如图: 配置tomcat文件: 修改tomcat/conf目录下的server.xml文件: 如下配置配置了3个容器,使用三个不同的端口. 请 ...
随机推荐
- 1.3RDD的设计与运行原理
此文为个人学习笔记如需系统学习请访问http://dblab.xmu.edu.cn/blog/1709-2/ 提供一种通用的数据抽象 RDD典型的执行过程如下: RDD读入外部数据源(或者内存中的集合 ...
- 统计MySQL数据库硬盘占用量大小
select TABLE_NAME, concat(truncate(data_length/1024/1024,2),' MB') as data_size, concat(truncate(ind ...
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- java 常用Bean 转换工具类
package com.hnf.framework.utils; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.data ...
- [题解] Luogu P5446 [THUPC2018]绿绿和串串
[题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n)\),表示对于一个字符串\(S_n\), 有\(f(S)= \{S_1,S_2,..., ...
- 一文彻底弄懂this关键字用法
哈喽,大家好,我是指北君. 介绍完 native.static.final 关键字后,指北君再接再厉,接着为大家介绍另一个常用的关键字--this. this 也是Java中的一个关键字,在<J ...
- Git工具的使用教程二
1.3时光穿梭机--版本回退 版本回退分为两步骤进行操作: 步骤: 1.查看版本,确定需要回到的时候点 指令: git log git log ...
- golang 模板 html/template与text/template
html模板生成: html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出.它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用t ...
- 剑指 Offer 33. 二叉搜索树的后序遍历序列
剑指 Offer 33. 二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. ...
- 你的 SQL 还在回表查询吗?快给它安排覆盖索引
什么是回表查询 小伙伴们可以先看这篇文章了解下什么是聚集索引和辅助索引:Are You OK?主键.聚集索引.辅助索引,简单回顾下,聚集索引的叶子节点包含完整的行数据,而非聚集索引的叶子节点存储的是每 ...