手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表分类:苹果相关

DBANOTES:学习 HeroKu 的架构设计

网址:

以上是作者和原文的信息。因为可能会布置一台服务器,所以对这方面就有点想法,作者是在对RUBY方面的架构进行学习和分析,但我想,对于PHP方面,应该也会有参考价值。已经开始有想法转硬件了,哈哈。说说而己……

原文如下:

这几天给我印象比较深的是 HeroKu ,提供 Ruby 快速部署环境并提供托管能力,他们的架构图做得十分漂亮,一幅图胜过千言万语,要是对 Web 架构感兴趣,都别问架构师了,看看 HeroKu 的架构估计就明白个差不多了 :)

概览图

好的架构图是画出来的,好的架构未必是设计出来的,最后架构好不好,还要看持续的改进能力。

HeroKu Overview.jpg


HTTP 反向代理

使用 Nginx , 这一层只进行 HTTP-level 的处理。Nginx 现在是不二选择。

HeroKu Reverse Proxy.jpg


HTTP Cache

对于静态内容,使用 Varnish 进行缓存。如果你在 Squid 和 Varnish 之间作选择,这里已经投了一票。

HeroKu HTTP cache.jpg


路由网(Routing Mesh)

Erlang 实现的架构组件,路由寻址,用以提升可用性和扩展性。

HeroKu Routing Mesh.jpg


动态网格(Dyno Grid)

用户部署的代码运行在这里,可以简单看成是应用服务器集群环境,只是粒度更小一点而已。

HeroKu Dyno Grid.jpg

对于 Dyno Grid 的进一步信息:

HeroKu Dyno Grid Arch.jpg

服务器操作系统是 Debian ;Ruby VM 是 MRI ,开源,C 写的;App Server 用的 Thin,他们说 Thin 比 Mongrel 更精炼;Rack,应用服务器接口;Rack 中间件,可选组件;框架,任何 Rack 兼容的都成;最后是客户托管的代码。

数据库

PostgreSQL,也可以采用远程数据库。

HeroKu Database.jpg


Memory Cache

Memcached ,居家旅行架构必备。

HeroKu Memcached.jpg

这几张图看下来,多少算是对 Ruby 环境有了一些感性认识。可以进一步查看 HeroKu 提供的文档,包含了一些代码实现上的准则。

部署是基于 Git 的。不知道大家有没有注意到 Git 在最近一年来的爆发? 超过 SVN 或许不是不可能的。

国内热炒"云计算"的,跟人家学学吧,与其整天帮着客户开发定制软件,还不如给客户提供一些弹性应用托管环境,起码看起来靠谱一些。

HeroKu ,不读 Hero-Ku, 读作 Her-oh-koo, 挺有趣

--EOF--

图的来源:HeroKu Platform Architecture

Tags: 架构

翻译:crontab的介绍

以下内容来自于linux的101个hack,昨天看到了,顺手翻译了一下,毕竟看中文比看英文舒服。翻译的还是有点问题的,理解一下下啦。。。

Hack 74. Crontab
第74个hack:Crontab

Using cron you can execute a shell-script or Linux commands at a specific time and date. For example a sysadmin can schedule a backup job that can run every day. 
使用cron功能你可以在任意的时间执行一条shell指令或者Linux的命令。例如系统管理员可以运行一个计划任务来进行每天的备份工作。

How to add a job to the cron?
那么,怎么样把一个任务加入到cron呢?

# crontab –e
0 5 * * * /root/bin/backup.sh

This will execute /root/bin/backup.sh at 5 a.m every day.
上面这条指令,让你在每天上午5点 运行 /root/bin/目录下的 backup.sh 指令

Description of Cron fields.
Cron命令的各个字段的注释。

Following is the format of the crontab file.
crontab文件的格式均以下格式 

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
{分钟} {小时} {每月的第几天} {月份} {每周的第几天} {指令的全路径}
 
o  minute: Allowed range 0 -59
o  分钟的取值范围是 0-59

o  hour: Allowed range 0 -23
o  小时的取值范围是 0-23

o  day-of-month: Allowed range 0 - 31
o  每月的第几天,取值范围为 0-31

o  month: Allowed range 1 -12.  1 = January. 12 = December.
o  月份的取值范围为 1-12 ,1是1月,12是12月

o  Day-of-week: Allowed range 0 -7. Sunday is either 0 or 7.
o  每周的第几天,取值范围为0-7,0或者7都代表星期天
 
Crontab examples
Crontab 的例子

1. Run at 12:01 a.m. 1 minute after midnight everyday. This is a good time to run backup when the system is not under load. 
1. 每天午夜12点零1分 ,当系统不再被加载时就是进行备份的好时机(not under load翻译不来)
 
1 0 * * * /root/bin/backup.sh
 

2.  Run backup every weekday (Mon – Fri) at 11:59 p.m. 
每周1-5晚上11点59分执行备份操作

59 11 * * 1,2,3,4,5 /root/bin/backup.sh
 
Following will also do the same.
下面的例子则是另一种格式,功能完全一致

59 11 * * 1-5 /root/bin/backup.sh

3. Execute the command every 5 minutes.
 每五分钟执行一条命令
*/5 * * * * /root/bin/check-status.sh
 
4. Execute at 1:10 p.m on 1st of every month
 每月第一天的下午1点10分执行备份
10 13 1 * * /root/bin/full-backup.sh
 
5. Execute 11 p.m on weekdays.
每周工作日的下午11点执行备份
0 23 * * 1-5 /root/bin/incremental-backup.sh
 
Crontab Options
Crontab 的一些参数

Following are the available options with crontab:
以下是crontab所支持一些参数

o  crontab –e : Edit the crontab file. This will create a crontab, if it doesn’t exist
o  crontab -e : 编辑crontab文件,如果文件不存在,则创建一个crontab

o  crontab –l : Display the crontab file.
o  crontab -l : 显示crontab文件

o  crontab -r : Remove the crontab file.
o  crontab -r : 删除crontab文件

o  crontab -ir : This will prompt user before deleting a crontab. 
o  crontag -ir : 删除crontab文件,但在删除前会让用户进行确认

Tags: crontab

ZF在ubuntu下的运行

ZEND FRAMEWORK要想正常的在ubuntu的AMP平台下运行 ,得打开apache的rewrite模块。这和windows下面把rewrite前的注释去掉可不一样。

进入命令行:a2enmod rewrite

会提示你成功打开rewrite模块

然后:

/etc/init.d/apache2 force-reload

重新加载一下,不过,这样还是不能成功的,因为默认的virtualhost中 有一个参数的值默认为NONE,要改成ALL

运行 :

vim /etc/apache2/sites-enabled/000-default

修改 

        <Directory /var/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>
把AllowOverride None 的 None 改为 All

然后

/etc/init.d/apache2 restart

OK,现在运行ZEND的例子,正常了吧,呵呵

Tags: zend, framework, ubuntu, rewrite

笔记:chgrp、chown、chmod和tar打包的用法

这四个命令可能用的最多的还是chmod,改变权限

该命令在PHP中有模拟实现,在linux下使用方法大致为
chmod -R 0777 目录名

参数 -R 表示遍历

该变目录的所有者
chown -R aaa.bbb 目录名
-R同样为遍历 aaa为组bbb为用户

chgrp 好象没有-R 功能,用法与chown一样

tar功能常用的就是解压和打包

解压时,大多为tar zxvf xxxx.tar.gz

打包时:tar zxvf xxx.tar.gz 目标目录

Tags: linux, chgrp, chown, chmod, tar

笔记:在Ubuntu中设置samba共享可读写文件夹

在ubuntu SERVER最初创建的时候就可以选择samba进行安装,如果你没有安装过,那就先运行
apt-get install samba
在网上看到还有资料写需要安装smbfs,不知道有没有什么用。

安装成功后,进入samba目录:/etc/samba
先备份,smb.conf文件
cp smb.conf smb.conf.bak
然后打开smb.conf
找到 ; security = user
把前面的分号注释掉,再加上一行
username map = /etc/samba/smbusers
(这个文件是不存在的,到时候需要单独建立)

还在smb.conf文件里,找到[global]
默认在ubuntu里面workgroup = WORKGROUP,好象说有的版本是 workgroup = MSHOME,如果是这种就改为WORKGROUP吧,毕竟在XP里面工作组都是workgroup
再加上:
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936

再到文件的结束处加上
[www]
comment = '这是该共享的注释'
path = /var/www
public = yes
writable = yes
valid users = www
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
available = yes
browseable = yes

保存退出。
然后打开smbusers文件,加入
www = "netwok username"
保存退出

运行
useradd www
添加一个Www用户
再运行smbpasswd -a www
为www的访问设定一个密码

现在就OK了,使用testparm看一下smb的情况
最后/etc/init.d/samba restart
重启。
OVER
在windows下面就可以访问了。。。

下面是对配置的简单注释
[www]     //这是共享时显示的名称
comment = '这是该共享的注释'   //注释
path = /var/www  //路径
public = yes          //是否开放
writable = yes       //是否可写
valid users = www //访问的用户
create mask = 0777   //创建权限 (0777为最大权限)
directory mask = 0777 //目录权限
force user = nobody    //目标用户
force group = nogroup//目标组
available = yes              //是否启用
browseable = yes         //是否可浏览

Tags: ubuntu, samba