当前位置: 首页 > news >正文

个人适合网站类型wordpress密码忘了怎么找回

个人适合网站类型,wordpress密码忘了怎么找回,网站内链检测工具,哪个网站做h5号搭建你的第一个 Docker 应用栈 1.Docker 集群部署2.第一个 Hello World2.1 获取应用栈各节点所需镜像2.2 应用栈容器节点互联2.3 应用栈容器节点启动2.4 应用栈容器节点的配置2.4.1 Redis Master 主数据库容器节点的配置2.4.2 Redis Slave 从数据库容器节点的配置2.4.3 Redis 数… 搭建你的第一个 Docker 应用栈 1.Docker 集群部署2.第一个 Hello World2.1 获取应用栈各节点所需镜像2.2 应用栈容器节点互联2.3 应用栈容器节点启动2.4 应用栈容器节点的配置2.4.1 Redis Master 主数据库容器节点的配置2.4.2 Redis Slave 从数据库容器节点的配置2.4.3 Redis 数据库容器节点的测试2.4.4 APP 容器节点Django的配置2.4.5 HAProxy 容器节点的配置2.4.6 应用栈访问测试 3.开发、测试和发布一体化 1.Docker 集群部署 Docker 是一个新兴的轻量级虚拟化技术其易用、跨平台、可移植的特性使其在集群系统的搭建方面有着得天独厚的优势。Docker 能够标准化封装应用程序所需的整个运行时环境因此基于 Docker我们可以实现分布式应用集群的快速、准确、自动化部署。 考虑到读者可能是初次接触 Docker 的新手我们将降低难度在一台机器上利用 Docker 自带的命令行工具搭建一个 Docker 应用栈利用多个容器来组成一个特定的应用。读者可参考应用栈部署的过程一步一步搭建你的第一个 Docker 应用栈。对于有一定 Docker 使用经验的读者也可尝试在多台机器上搭建一个真正的 Docker 集群相信这个过程将对理解 Docker 相关工作原理大有裨益。 2.第一个 Hello World 在 Docker 中镜像是容器的基础可以通过镜像来运行容器。本节将举例说明如何有效地利用 Docker Hub 中已有的镜像资源来搭建一个 Docker 应用栈。 在开始搭建过程前需要对所要搭建的应用栈进行简单的设计和描述我们将搭建一个包含 6 6 6 个节点的 Docker 应用栈其中包括一个代理节点、两个 Web 的应用节点、一个主数据库节点及两个从数据库节点。应用栈具体结构如下图所示。 上图中HAProxy 是负载均衡代理节点Redis 是非关系型的数据库它由一个主数据库节点和两个从数据库节点组成App 是应用这里是使用 Python 语言、基于 Django 架构设计一个访问数据库的基础 Web 应用。 2.1 获取应用栈各节点所需镜像 在搭建过程中可以从 Docker Hub 获取现有可用的镜像在这些镜像的基础上启动容器按照需求进行修改来实现既定的功能。读者能在此过程中体会到 Docker 的高可移植特性所带来的便利既提高了应用开发的效率又降低了开发的难度。 依据上文所描述的应用栈结构需要从 Docker Hub 获取 HAProxy、Redis 及 Django 的镜像。具体的操作示例如下 $ sudo docker pull ubuntu $ sudo docker pull django $ sudo docker pull haproxy $ sudo docker pull redis $ sudo docker images2.2 应用栈容器节点互联 在搭建第一个 Hello World 应用栈时将在同一主机下进行 Docker 应用栈搭建。如果是一个真正的分布式架构集群还需要处理容器的跨主机通信问题在这里我们将不做介绍。鉴于在同一主机下搭建容器应用栈的环境只需要完成容器互联来实现容器间的通信即可这里采用 docker run 命令的 --link 选项建立容器间的互联关系。 这里介绍一下 --link 选项的用法通过 --link 选项能够进行容器间安全的交互通信使用格式为 name:alias其中 name 为连接容器的名称alias 为连接的别名可在一个 docker run 中重复使用该参数。使用示例如下 $ sudo docker run --link redis:redis --name console ubuntu bash上例将在 ubuntu 镜像上启动一个容器并命名为 console同时将新启动的 console 容器连接到名为 redis 的容器上。在使用 --link 选项时连接通过容器名来确定容器这里建议启动容器时自定义容器名。 通过 --link 选项来建立容器间的连接不但可以避免容器的 IP 和端口暴露到外网所导致的安全问题还可以防止容器在重启后 IP 地址变化导致的访问失效它的原理类似于 DNS 服务器的域名和地址映射。当容器的 IP 地址发生变化时Docker 将自动维护映射关系中的 IP 地址文件示例如下 # 容器启动命令 $ sudo docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash # 容器内查看 /etc/hosts 文件 # cat /etc/hosts 172.17.0.6 08df6a2cb468 127.0.0.1 localhost ... 172.17.0.5 master该容器的 /etc/host 文件中记录了名称为 master 的连接信息其对应 IP 地址为 172.17.0.5即 redis-master 容器的 IP 地址。 通过上面的原理可以将 --link 设置理解为一条 IP 地址的单向记录信息因此在搭建容器应用栈时需要注意各个容器节点的启动顺序以及对应的 --link 参数设置。应用栈各节点的连接信息如下 启动 redis-master 容器节点两个 redis-slave 容器节点启动时要连接到 redis-master 上两个 APP 容器节点启动时要连接到 redis-master 上HAProxy 容器节点启动时要连接到两个 APP 节点上。 综上所述容器的启动顺序应为 redis-master → redis-slave → APP → HAProxy 此外为了能够从外网访问应用栈并通过 HAProxy 节点来访问应用栈中的 APP在启动 HAProxy 容器节点时需要利用 -p 参数暴露端口给主机即可通过主机 IP 加暴露的端口从外网访问搭建的应用栈。 2.3 应用栈容器节点启动 之前已经对应用栈的结构进行了分析获取了所需的镜像资源同时描述了应用栈中各个容器之间的互连关系下面开始利用所获得的镜像资源来启动各个容器。应用栈各容器节点的启动命令如下 # 启动 Redis 容器 $ sudo docker run -it --name redis-master redis /bin/bash $ sudo docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash $ sudo docker run -it --name redis-slave2 --link redis-master:master redis /bin/bash# 启动 Django 容器即应用 $ sudo docker run -it --name APP1 --link redis-master:db -v ~/Projects/Django/App1:/usr/src/app django /bin/bash $ sudo docker run -it --name APP2 --link redis-master:db -v ~/Projects/Django/App2:/usr/src/app django /bin/bash# 启动 HAProxy 容器 $ sudo docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~/Projects/HAProxy:/tmp haproxy /bin/bash以上容器启动时为了方便后续与容器进行交互操作统一设定启动命令为 /bin/bash请在启动每个新的容器时都分配一个终端执行。 启动的容器信息可以通过 docker ps 命令查看示例如下 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bcoa13093fd1 haproxy:latest /bin/bash 5 days ago Up 21 seconds 0.0.0.0:6301-6301/tcp HAProxy f92e170d7c3f django:latest /bin/bash 5 days ago Up 27 seconds APP2 a1705c6e06a8 django:latest /bin/bash 5 days ago Up 34 seconds APP1 7age537b661b redis:latest /entrypoint.sh /bin 5 days ago Up 46 seconds 6379/tcp redis-slave2 08df6a2cb468 redis:latest /entrypoint.sh /bin 5 days ago Up 57 minutes 6379/tcp redis-slave1 bc8e79b3e66c redis:latest /entrypoint.sh /bin 5 days ago Up 58 minutes 6379/tcp redis-master至此所有搭建应用栈所需容器的启动工作已经完成。 2.4 应用栈容器节点的配置 在应用栈的各容器节点都启动后需要对它们进行配置和修改以便实现特定的功能和通信协作下面按照容器的启动顺序依次进行解释。 2.4.1 Redis Master 主数据库容器节点的配置 Redis Master 主数据库容器节点启动后我们需要在容器中添加 Redis 的启动配置文件以启动 Redis 数据库。 需要说明的是对于需要在容器中创建文件的情况由于容器的轻量化设计其中缺乏相应的文本编辑命令工具这时可以利用 volume 来实现文件的创建。在容器启动时利用 -v 参数挂载 volume在主机和容器间共享数据这样就可以直接在主机上创建和编辑相关文件省去了在容器中安装各类编辑工具的麻烦。 在利用 Redis 镜像启动容器时镜像中已经集成了 volume 的挂载命令所以我们需要通过 docker inspect 命令来查看所挂载 volume 的情况。打开一个新的终端执行如下命令 $ sudo docker inspect --format {{ .Volumes }} bc8e map[/data:/var/lib/docker/vfs/dir/f01cd2d7cecba683e74def4ae9c3c6bf5952a8cfafddbe19136d916154afee34]可以发现该 volume 在主机中的目录为 /var/lib/docker/vfs/dir/fo1cd2d7cecba683e74def4ae9c3c6bf5952a8cfafddbe19136d916154afee34在容器中的目录为 /data。此时可以进入主机的 volume 目录利用启动配置文件模板来创建我们的主数据库的启动配置文件执行命令如下 # cd /var/lib/docker/vfs/dir/f01cd2d7cecba683e74def4ae9c3c6bf5952a8cfafddbe19136d916154afee34 # cp your-own-redis-dir/redis.conf redis.conf # vim redis.conf其中your-own-redis-dir 可以是本机上任意与 redis 镜像内 redis 版本兼容的 redis 目录下同。对于 Redis 的主数据库需要修改模板文件中的如下几个参数 daemonize yes pidfile /var/run/redis.pid在主机创建好启动配置文件后切换到容器中的 volume 目录并复制启动配置文件到 Redis 的执行工作目录然后启动 Redis 服务器执行过程如下 # cd /data # cp redis.conf /usr/local/bin # cd /usr/local/bin # redis-server redis.conf以上就是配置 Redis Master 容器节点的全部过程在完成配置另外两个 Redis Slave 节点后再对应用栈的数据库部分进行整体测试。 2.4.2 Redis Slave 从数据库容器节点的配置 与 Redis Master 容器节点类似在启动 Redis Slave 容器节点后需要首先查看 volume 信息。 $ sudo docker inspect --format {{ .Volumes }} 08df map[/data:/var/lib/docker/vfs/dir/f74cebbbod5ceea04e6f47a4750053d9f3a013938abc959d019609c4085cbf4e]# cd /var/lib/docker/vfs/dir/f74cebbbod5ceea04e6f47a4750053d9f3a013938abc959d019609c4085cbf4e # cp your-own-redis-dir/redis.conf redis.conf # vim redis.conf对于 Redis 的从数据库需要修改如下几个参数 daemonize yes pidfile /var/run/redis.pid slaveof master 6379需要注意的是slaveof 参数的使用格式为 slaveof masterip masterport可以看到对于 masterip 使用了 --link 参数设置的连接名来代替实际 IP 地址。通过连接名互连通信时容器会自动读取它的 host 信息将连接名转换为实际 IP 地址。 在主机创建好启动配置文件后切换到容器中的 volume 目录并复制启动配置文件到 Redis 的执行工作目录然后启动 Redis 服务器执行过程如下 # cd /data # cp redis.conf /usr/local/bin # cd /usr/local/bin # redis-server redis.conf同理可以完成对另一个 Redis Slave 容器节点的配置。至此便完成了所有 Redis 数据库容器节点的配置。 2.4.3 Redis 数据库容器节点的测试 完成 Redis Master 和 Redis Slave 容器节点的配置以及服务器的启动后可以通过启动 Redis 的客户端程序来测试数据库。 首先在 Redis Master 容器内启动 Redis 的客户端程序并存储一个数据执行过程如下 # redis-cli 127.0.0.1:6379 set master bc8e OK 127.0.0.1:6379 get master bc8e随后在两个 Redis Slave 容器内分别启动 Redis 的客户端程序查询先前在 Master 数据库中存储的数据执行过程如下 # redis-cli 127.0.0.1:6379 get master bc8e由此可以看到Master 数据库中的数据已经自动同步到了 Slave 数据库中。至此应用栈的数据库部分已搭建完成并通过测试。 2.4.4 APP 容器节点Django的配置 Django 容器启动后需要利用 Django 框架开发一个简单的 Web 程序。为了访问数据库需要在容器中安装 Python 语言的 Redis 支持包执行如下命令 # pip install redis安装完成后进行简单的测试来验证支持包是否安装成功执行过程如下 # pythonimport redisprint(redis._file__) /usr/local/lib/python3.4/site-packages/redis/__init__.py如果没有报错说明已经可以使用 Python 语言来调用 Redis 数据库。接下来就开始创建 Web 程序。以 APP1 为例在容器启动时挂载了 -v ~/Projects/Django/App1:/usr/src/app 的 volume方便进入主机的 volume 目录来对新建 APP 进行编辑。 在容器的 volume 目录 /usr/src/app/ 下开始创建 APP执行过程如下 # 在容器内 # cd /usr/src/app/ # mkdir dockerweb # cd dockerweb/ # django-admin.py startproject redisweb # ls redisweb # cd redisweb/ # ls manage.py redisweb # python manage.py startapp helloworld # ls helloworld manage.py redisweb在容器内创建 APP 后切换到主机的 volume 目录 ~/Projects/Django/App1进行相应的编辑来配置 APP执行过程如下 # 在主机内 $ cd ~/Projects/Django/App1 $ ls dockerweb可以看到在容器内创建的 APP 文件在主机的 volume 目录下同样可见。之后我们来修改 helloworld 应用的视图文件 views.py。 $ cd dockerweb/redisweb/helloworld/ $ ls admin.py __init__.py migrations models.py tests.py views.py # 利用 root 权限修改 views.py $ sudo su # vim views.py为了简化设计只要求完成 Redis 数据库信息输出以及从 Redis 数据库存储和读取数据的结果输出。views.py 文件如下 from django.shortcuts import render from django.http import HttpResponse# 创建你自己的 view import redisdef hello(request):str redis.__file__str brr redis.Redis(hostdb, port6379, db0)info r.info()str (Set Hi br)r.set(Hi,Helloworld-APP1)str (Get Hi: %s br % r.get(Hi))str (Redis Info: br)str (Key: Info Value)for key in info:str (%s: %s br % (key, info[key]))return HttpResponse(str)需要注意的是连接 Redis 数据库时使用了 --link 参数创建 db 连接来代替具体的 IP 地址同理对于 APP2使用相应的 db 连接即可。完成 views.py 文件修改后接下来修改 redisweb 项目的配置文件 setting.py添加新建的 helloworld 应用执行过程如下 # cd ../redisweb/ # ls _init__.py __pycache__ settings.py urls.py wsgi.py # vim setting.py在 setting.py 文件中的 INSTALLED_APPS 选项下添加 helloworld执行过程如下 # Application definition INSTALLED_APPS (django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,helloworld, )最后修改 redisweb 项目的 URI 模式文件 urls.py它将设置访问应用的 URL 模式并为 URL 模式调用视图函数之间的映射表。执行如下命令 # vim urls.py在 urls.py 文件中引人 helloworld 应用的 hello 视图并为 hello 视图添加一个 urlpatterns 变量。urls.py 文件内容如下 from django.conf.urls import patterns, include, url from django.contrib import admin from helloworld.views import hellourlpatterns patterns(,url(radmin/, include(admin.site.urls)),url(rhelloworld$,hello), )在主机下修改完成这几个文件后需要再次进入容器在目录 /usr/src/app/dockerweb/redisweb 下完成项目的生成。执行过程如下 # python manage.py makemigrations No changes detected # python manage.py migrate Operations to perform:Apply all migrations: sessions, contenttypes, admin, auth Running migrations:Applying contenttypes.0001_initial... OKApplying auth.0001_initial... OKApplying admin.0001_initial... OKApplying sessions.0001_initial... OK # python manage.py syncdb Operations to perform:Apply all migrations: admin, auth, sessions, contenttypes Running migrations:No migrations to apply.You have installed Djangos auth system, and dont have any superusers defined. Would you like to create one now? (yes/no): yes Username (leave blank to use root): admin Email address: selsel.com Password: Password (again): Superuser created successfully.至此所有 APP1 容器的配置已经完成另一个 APP2 容器配置也是同样的过程只需要稍作修改即可。配置完成 APP1 和 APP2 容器后就完成了应用栈的 APP 部分的全部配置。 在启动 APP 的 Web 服务器时可以指定服务器的端口和 IP 地址。为了通过 HAProxy 容器节点接受外网所有的公共 IP 地址访问实现均衡负载需要指定服务器的 IP 地址和端口。对于 APP1 使用 8001 端口而 APP2 则使用 8002 端口同时都使用 0.0.0.0 地址。以 APP1 为例启动服务器的过程如下 # python manage.py runserver 0.0.0.0:8001 Performing system checks... System check identified no issues (0 silenced). January 20, 2015 - 13:13:37 Django version 1.7.2, using settings redisweb.settings Starting development server at http://0.0.0.0:8001/ Quit the server with CONTROL-C.2.4.5 HAProxy 容器节点的配置 在完成数据库和 APP 部分的应用栈部署后最后部署一个 HAProxy 负载均衡代理的容器节点所有对应用栈的访问将通过它来实现负载均衡。 首先利用容器启动时挂载的 volume 将 HAProxy 的启动配置文件复制进容器中在主机的 volume 目录 ~/Projects/HAProxy 下执行过程如下 $ cd ~/Projects/HAProxy $ vim haproxy.cfg其中haproxy.cfg 配置文件的内容如下 globallog 127.0.0.1 local0 # 日志输出配置所有日志都记录在本机通过 local0 输出maxconn 4096 # 最大连接数chroot /usr/local/sbin # 改变当前工作目录daemon # 以后台形式运行 HAProXynbproc 4 # 启动 4 个 HAProxy 实例pidfile /usr/local/sbin/haproxy.pid # pid 文件位置defaultslog 127.0.0.1 local3 # 日志文件的输出定向mode http # {tcp|http|health} 设定启动实例的协议类型option dontlognull # 保证 HAProXy 不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包option redispatch # 当 serverId 对应的服务器挂掉后强制定向到其他健康的服务器retries 2 # 重试两次连接失败就认为服务器不可用主要通过后面的 check 检查maxconn 2000 # 最大连接数balance roundrobin # balance 有两个可用选项roundrobin 和 source其中roundrobin 表示# 轮询而 source 表示 HAProxy 不采用轮询的策略而是把来自某个 IP 的请求转# 发给一个固定 IP 的后端timeout connect 5000ms # 连接超时时间timeout client 50000ms # 客户端连接超时时间timeout server 50000ms # 服务器端连接超时时间listen redis_proxy 0.0.0.0:6301stats enablestats uri /haproxy-statsserver APP1 APP1:8001 check inter 2000 rise 2 fall 5 #你的均衡节点server APP2 APP2:8002 check inter 2000 rise 2 fall 5随后进入到容器的 volume 目录 /tmp 下将 HAProxy 的启动配置文件复制到 HAProxy 的工作目录中。执行过程如下 # cd /tmp # cp haproxy.cfg /usr/local/sbin/ # cd /usr/local/sbin/ # ls haproxy haproxy-systemd-wrapper haproxy.cfg 接下来利用该配置文件来启动 HAProxy 代理执行如下命令 # haproxy -f haproxy.cfg需要注意的是如果修改了配置文件的内容需要先结束所有的 HAProxy 进程并重新启动代理。可以使用 killall 命令来结束进程如果镜像中没有安装该命令则需要先安装 psmisc 包执行如下命令 # apt-get install psmisc # killall haproxy至此完成了 HAProxy 容器节点的全部部署同时也完成了整个 Docker 应用栈的部署。 2.4.6 应用栈访问测试 整个应用栈部署完成后就可以进行访问测试。参考应用栈搭建时的结构图可知整个应用栈群的访问是通过 HAProxy 代理节点来进行的。在 HAProxy 容器节点启动时通过 -p 6301:6301 参数映射了容器访问的端口到主机上因此可以在其他主机上通过本地主机的 IP 地址和端口来访问搭建好的应用栈。 在应用栈启动后先在本地主机上进行测试。在浏览器中访问 http:/172.17.0.9:6301/helloworld 可以查看 APP1 或 APP2 的页面内容如下图所示具体访问到的 APP 容器节点会由 HAProxy 代理进行均衡分配。同时可以访问 http://172.17.0.9:6301/haproxy-stats 来查看 HAProxy 的后台管理页面。其中172.17.0.9 为 HAProxy 容器的 IP 地址。 本地测试通过后尝试在其他主机上通过应用栈入口主机的 IP 地址和暴露的 6301 端口来访问该应用栈的 APP即访问http:/10.10.105.87:6301/helloworld如下图所示。其中10.10.105.87 为宿主机的IP地址。 3.开发、测试和发布一体化 从 Docker 集群的搭建过程不难看出通过 Docker 提供的虚拟化方式可以快速建立起一套可复用的开发环境以镜像的形式将开发环境分发给所有开发成员达到了简化开发环境搭建过程的目的。Docker 的优点在于可以简化 CI持续集成和 CD持续交付的构建流程让开发者集中精力在应用开发上同时运维和测试也可以并行进行并保持整个开发、测试、发布和运维的一体化。 Docker 以镜像和在镜像基础上构建的容器为基础以容器为开发、测试和发布的单元将与应用相关的所有组件和环境进行封装避免了应用在不同平台间迁移时所带来的依赖性问题确保了应用在生产环境的各阶段达到高度一致的实际效果。 在开发阶段镜像的使用使得构建开发环境变得简单和统一。随着 Docker 的发展镜像资源也日益丰富开发人员可以轻易地找到适合的镜像加以利用。同时利用 Dockerfile 也可以将一切可代码化的东西进行自动化运行。Docker 最佳实践是将应用分割成大量彼此松散耦合的 Docker 容器应用的不同组件在不同的容器中同步开发互不影响为实现持续集成和持续交付提供了先天的便利。 在测试阶段可以直接使用开发所构建的镜像进行测试直接免除了测试环境构建的烦恼也消除了因为环境不一致所带来的漏洞问题。 在部署和运维阶段与以往代码级别的部署不同利用 Docker 可以进行容器级别的部署把应用及其依赖环境打包成跨平台、轻量级、可移植的容器来进行部署。 Docker 已经逐渐发展成为一个构建、发布、运行分布式应用的开放平台以轻量级容器为核心建立起了一套完整的生态系统它重新定义了应用开发、测试、交付和部署的过程。在当前云计算飞速发展的背景下Docker 将引领着云时代进入一个崭新的发展阶段。
http://www.w-s-a.com/news/569863/

相关文章:

  • wordpress 素材站模板怎么制作网站程序
  • 做ps合成的网站wordpress付费查看下载主题
  • 个人网站建设完整教程wordpress服务器搬迁
  • wordpress.主题广州 网站优化
  • 手机版网站怎样做推广如何用asp做视频网站
  • dede 网站打开慢七牛云 微信 打开 wordpress
  • 哪里网站建设公司比较好教育培训类网站模板
  • 中国建设银行官网首页网站wordpress小工具不能完全显示
  • 企业网站的开发流程是什么网站开发怎么销售
  • 现在网站还用asp做男科医院哪家好一些
  • 服装设计网站素材郑州汉狮做网站网络公司
  • 宜州做网站做仿制网站
  • 中山营销型网站厦门工程建设招聘信息网站
  • 网站开发 外包空心找回微信
  • 长沙市网站推广多少钱网站开发流程图和介绍
  • 网站后缀net施工企业自建自用的工程可以不进行招标是否正确
  • 鄂尔多斯市住房和城乡建设厅网站帮别人做网站赚钱6
  • 宜选科技就是帮人做网站动漫制作专业主修课程
  • 怎么做网站免费的教程温州捷创网站建设
  • 做免费推广的网站有哪些深圳华强北最新消息
  • 电子商务网站建设规划开题报告桂林漓江景区游玩攻略
  • 程序员参与洗钱网站建设做视频网站需要多少钱
  • 网站建设背景是什么企业邮箱怎么写
  • 山东省建设资格中心网站iis wordpress安装教程
  • 做的网站 显示乱码怎么做微信小程序平台
  • 怎样建设打字网站怎样增加网站浏览量
  • 网站建设方案的征求意见网站主机免备案
  • 共享农业网站建设郑州市建网站
  • 成都网站建设四川冠辰网站建设带会员系统的网站模板
  • 水果网站建设方案书wordpress get_the_category