首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
»
PowerPC
» 使用 Chef 自动化部署一个 Web 服务器(1)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
使用 Chef 自动化部署一个 Web 服务器(1)
发短消息
加为好友
look_w
当前离线
UID
1066743
帖子
8283
精华
0
积分
4142
阅读权限
90
在线时间
233 小时
注册时间
2017-6-23
最后登录
2019-5-18
论坛元老
UID
1066743
1
#
打印
字体大小:
t
T
look_w
发表于 2018-11-16 14:37
|
只看该作者
使用 Chef 自动化部署一个 Web 服务器(1)
这是一个最好的时代,也是一个最坏的时代。他们都在直奔天堂,而我们都在直奔相反的方向。”“ ”的超级课程表融资千万美元、WhatsApp 被 Facebook 以 190 亿美元收购……这个时代仿佛到处都充满了机会。现在假设我们也决定放弃朝九晚五的工作,要开发出一款 Web 应用改变这个世界,顺便当上总经理、出任 CEO、赢取白富美、走向人生巅峰。七拼八凑,我们的应用做出来了。它的架构非常简单,如果非要描述的话,它的架构如图 1 所示:
图 1. 应用架构
这么简单的应用,我们上网浏览一下资料,随便租个服务器,安装一个 Web 服务器,配置一下,应用顺利上线。
幸福总是来得太快,很快我们的应用就火了。随着访问量的增大,我们需要单独的数据库服务器,一个都不够,得来俩;应用服务器也不够用了,再多添几台,上一个负载均衡;对数据库的访问又成了性能瓶颈,增加些数据库缓存吧,最终,应用的架构变成了如下的样子:
图 2. 演进的应用架构
现在问题来了,面对如此复杂的架构,怎么安装和配置这些服务呢?Chef 就是用来解决这个问题的。
第一份“菜谱”(recipe)让我们暂且就此打住,先来看看怎么使用 Chef。首先需要在一台 Linux 机器上安装 。如果您实在找不到一台 Linux 机器也没有关系,可使用一个用于教学用途的 ,该虚拟机上已经预装了 Chef Development Kit,可以直接使用。
Recipe 是 Chef 中主要执行任务的地方,翻译成中文是“菜谱”的意思。我们的第一份“菜谱”的主要功能是使用 Chef 生成一个文本文件,其内容为:Hello Chef。让我们先新建一个 chef-repo 目录,用来存放“菜谱”,然后在该目录下创建第一个“菜谱”:hello.rb,其内容如下:
清单 1. hello.rb
1
2
3
file 'motd' do
content 'Hello Chef’
end
在命令行中执行:chef-client --local-mode hello.rb,输出如下:
图 3. 输出
可以看到,命令执行后生成 motd 文件,该文件的内容为字符串:Hello Chef。这就是我们的第一份“菜谱”,虽然简单,但是却概括了 Chef 的基本工作原理:使用一个 Ruby 文件,即“菜谱”描述服务器应有的状态,然后执行 Chef 命令配置服务器。
您可尝试再次执行 chef-client --local-mode hello.rb,Chef 会检测到 motd 文件已经存在,且文件内容和“菜谱”中所描述的一致,因此不进行任何操作;您还可尝试手动删除 motd 文件,再次执行 chef-client --local-mode hello.rb 后,又重新生成了 motd 文件。这正是配置服务器所需要的,每次配置都能保证状态一致。
当然,我们的第一份“菜谱”只是一道开胃小菜,下面我们看看如何使用 Chef 部署一个 Web 服务器。
部署 Web 服务器部署一个 Web 服务器比生成一个文件复杂,但道理却是相同的,让我们先来看看代码:
清单 2. webserver.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package 'httpd'
service 'httpd' do
action [:start, :enable]
end
file '/var/www/html/index.html' do
content '<html>
<body>
<h1>hello world</h1>
</body>
</html>'
end
service 'iptables' do
action :stop
end
这段代码总共分成四部分:第一部分安装 Apache HTTP Server;第二部分启动 HTTP 服务;第三部分生成主页面;第四部分停用 iptables 服务,这一步主要是因为有些 Linux 安装后,默认只打开 22 端口,其他端口是被禁止的,停用 iptables 服务后,就可以顺利访问 80 端口了,即 HTTP 协议所使用的端口。聪明的您朋友们,您能将这四部分和代码对应起来吗?
这里要注意的是,这四部分的顺序非常重要,必须先安装 Apache HTTP Server,然后启动它,这一点也不难想象,我们手动配置服务器时不也如此吗?
将文件保存后,让我们再来运行 sudo chef-client --local-mode webserver.rb,因为脚本里包含安装软件包的操作,所以需要 root 权限,如果您不是以 root 账号登录(相信您不会真的这样做吧?),务必在命令行前加 sudo,否则,Chef 会报错。如果得到类似下面的输出,就证明服务器配置成功,打开浏览器,输入 ,可以看到刚才定制的主页了吧?
图 4. 输出
然而,作为有“洁癖”的程序员,不难发现“菜谱”的第二部分好像混入了什么奇怪的东西:一段 HTML 代码。这段 HTML 代码明显和其他部分不协调,如果网页再变得复杂点,这份“菜谱”会变得很难管理。因此,我们得想点什么办法,管理“菜谱”。方法就是“烹饪手册”(cookbook)。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议