手把手教你在CoreOS部署一个WordPress程序

摘要:你可能听过服务器操作系统CoreOS的名字,那你试过在上面建立个小程序么?今天,我们就来手把手地教你建立一个简单的WordPress程序。

CoreOS是一个专门为大规模服务器部署定制的Linux精简系统,它将操作系统和应用程序完全分离,从而降低操作系统和应用程序的耦合度,同时解决了现有Linux服务器在容器资源、权限管理方面出现的问题。就目前来说,CoreOS会是未来操作系统的发展趋势。

那你有没有亲自在CoreOS上部署一个应用程序呢?相信大多数人都没有过这样的经验,在CoreOS上建立一个应用程序可以说是非常辛苦及沮丧的。因为在开始建立程序之前你首先必须了解所有不同的技术。

下面,我们将手把手地教你来创建一个简单的WordPress应用程序,采用MySQL作为服务器,在CoreOS上运行。

1. 安装CLI来控制CoreOS

如果你的电脑是Mac,可以在本机安装fleetctl和etcdctl来控制CoreOS集群:

$ brew install go etcdctl
$ git clone https://github.com/coreos/fleet.git
$ cd fleet
$ ./build
$ mv bin/fleetctl /usr/local/bin/

2. 安装本地集群

使用部署虚拟化开发环境Vagrant来安装本地集群很容易:

$ git clone https://github.com/CenturyLinkLabs/coreos-vagrant
$ cd coreos-vagrant/cluster
$ vagrant up --provision

现在集群就安装好了,简单吧!下面就让我们来检查一下本地fleetctl:

$ fleetctl list-machines
MACHINE	IP	METADATA
09fd0a88...	10.0.2.15	-
77763947...	10.0.2.15	-
f31c383c...	10.0.2.15	-

真棒,它起作用了!3. 使用fleet部署一个应用程序

fleetctl命令可把应用程序部署到CoreOS集群的节点中,但要为fleet写服务文件真的是太糟糕了。幸运的是,你不必自己编写,你可以使用yaml format来生成服务文件:

$ sudo gem install bundler fig2coreos
 
$ cat fig.yml
web:
  image: ctlc/wordpress
  ports:
    - 80:80
  environment:
    DB_USER: root
    DB_PASSWORD: qa1N76pWAri9
  links:
    - db
db:
  image: ctlc/mysql
  ports:
    - 3306:3306
  environment:
    MYSQL_DATABASE: wordpress
    MYSQL_ROOT_PASSWORD: qa1N76pWAri9
 
$ fig2coreos myapp fig.yml coreos-files
 
$ cd coreos-files
 
$ ls
db-discovery.1.service
db.1.service
web-discovery.1.service
web.1.service

fleetctl客户端工具使用的是etcd系统的Key/Value存储形式,以分享配置和服务发现。下面教大家如何把程序部署到集群中:

$ fleetctl start db.1.service
 
$ fleetctl list-units
UNIT		LOAD	ACTIVE	SUB	DESC		MACHINE
db.1.service	loaded	active	running	Run db_1	9c008961.../10.0.2.15
 
$ fleetctl start web.1.service
 
$ fleetctl list-units
UNIT		LOAD	ACTIVE	SUB	DESC		MACHINE
db.1.service	loaded	active	running	Run db_1	9c008961.../10.0.2.15
web.1.service	loaded	active	running	Run web_1	9c008961.../10.0.2.15

现在程序就运行了,但是还没有注册etcd的服务,幸运的是fig2coreos生成的服务发现文件可以帮助我们:

$ fleetctl start db-discovery.1.service
$ fleetctl start web-discovery.1.service
 
$ fleetctl list-units
UNIT			LOAD	ACTIVE	SUB	DESC		MACHINE
db-discovery.1.service	loaded	active	running	Announce db_1	9c008961.../10.0.2.15
db.1.service		loaded	active	running	Run db_1	9c008961.../10.0.2.15
web-discovery.1.service	loaded	active	running	Announce web_1	9c008961.../10.0.2.15
web.1.service		loaded	active	running	Run web_1	9c008961.../10.0.2.15
 
$ etcdctl ls --recursive
/services
/services/web
/services/web/web_1
/services/db
/services/db/db_1
 
$ etcdctl get /services/web/web_1
{ "host": "core-03", "port": 80, "version": "52c7248a14" }
 
$ etcdctl get /services/db/db_1
{ "host": "core-03", "port": 3306, "version": "52c7248a14" }

这样就完成了!如果你使用的是Vagrant 1.5及Vagrant Cloud,那么你就可以实现 WordPress程序并看到它可以实行了:

$ cd ~/coreos-vagrant/cluster/
 
# find out which box is hosting your port 80
$ etcdctl get /services/web/web_1
{ "host": "core-03", "port": 80, "version": "52c7248a14" }
 
$ vagrant share core-03 --http 80
==> core-03: Detecting network information for machine...
    core-03: Local machine address: 192.168.65.2
    core-03: Local HTTP port: 80
    core-03: Local HTTPS port: disabled
==> core-03: Checking authentication and authorization...
==> core-03: Creating Vagrant Share session...
    core-03: Share will be at: quick-iguana-4689
==> core-03: Your Vagrant Share is running! Name: quick-iguana-4689
==> core-03: URL: http://quick-iguana-4689.vagrantshare.com

下面就是做好的效果图:

其实我们可以在CoreOS上能做很多事,今天这个只是基础,感兴趣的你可以动手试一试

原文链接:http://www.csdn.net/article/2014-03-26/2818984

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Django中文社区

用 Windows 跟着官方教程学 Docker 之一步一坑记

据说 Docker 可以提供一种更加现代化的部署方式,于是乎想趁着一个空闲周末来好好撸一遍 Dcoker 入门文档。之前花了一个小时通读了一遍 Docker 的...

9308
来自专栏aCloudDeveloper

CPU 虚拟化

前面 虚拟化技术总览 中从虚拟平台 VMM 的角度,将虚拟化分为 Hypervisor 模型和宿主模型,如果根据虚拟的对象(资源类型)来划分,虚拟化又可以分为计...

3166
来自专栏Samego开发资源

ubuntu如何修复引导

1.3K4
来自专栏云计算

将基于MicroProfile的应用程序部署到IBM Cloud Private

Eclipse MicroProfile是一个开源项目,用于优化Java企业版的微服务体系结构。基于MicroProfile的应用程序可以部署到K...

22310

将基于MicroProfile的应用程序部署到IBM Cloud Private上

Eclipse MicroProfile是一个用于优化微型服务体系结构的企业级Java的开源项目。基于MicroProfile的应用程序可以部署到Kuberne...

2699
来自专栏JasonhavenDai

Docker初尝试1.What is Docker?2.Try It3.Use It

1.What is Docker? 关于Docker,网上有很多讲解,不在此处赘述,提供两个不错的学习链接,望自行学习。 Docker Github Do...

2975
来自专栏云计算D1net

八种最常见Docker开发模式 别说你还不知道

Docker已迅速成为本人最喜欢的基础工具之一,以便构建可重复软件产品,从而带来尽可能静态的服务器环境。   我在本文中将概述我在使用Docker的过程中开始...

3456
来自专栏数据和云

Oracle 11g R2 RAC 高可用连接特性 – SCAN 详解

许春植(Luocs) (阿里巴巴高级数据库管理员,7年以上数据库运维管理经验,擅长MySQL、Oracle及MongoDB数据库,目前主要研究并建设Mongo...

4205
来自专栏宝哥的专栏

Docker系列学习文章 - 镜像仓库的介绍(七)

| 导语 前面我们讲了镜像的制作,知道了镜像是怎么生成的。但是镜像制作好了后,要怎么管理?他们存在哪里。通过本篇文章的讲解,大家就清楚了。

2.3K17
来自专栏云计算

如何让你的微服务保持稳定

在用微服务工作时,我们通常还需要在本地进行一些开发,这可能是一个痛点。在本篇文章中,我们将探讨一个可能有效的解决方案。

1602

扫码关注云+社区

领取腾讯云代金券