修正错别字

This commit is contained in:
astaxie
2012-12-13 09:41:25 +08:00
parent d15042b9de
commit 4749de5ad1

12
12.3.md
View File

@@ -1,7 +1,7 @@
# 12.3 应用部署 # 12.3 应用部署
程序开发完毕之后我们现在要部署Web应用程序了但是我们如何来部署这些应用程序呢因为Go程序编译之后是一个可执行文件编写过C程序的读者一定知道使用demon就可以完美的实现程序后台运行但是目前Go还无法完美的实现demon因此针对Go的应用程序部署我们可以利用第三方工具来管理第三方的工具有很多例如Supervisord、upstart、daemontools等这小节我介绍目前自己系统中采用的工具Supervisord。 程序开发完毕之后我们现在要部署Web应用程序了但是我们如何来部署这些应用程序呢因为Go程序编译之后是一个可执行文件编写过C程序的读者一定知道使用daemon就可以完美的实现程序后台运行但是目前Go还无法完美的实现daemon因此针对Go的应用程序部署我们可以利用第三方工具来管理第三方的工具有很多例如Supervisord、upstart、daemontools等这小节我介绍目前自己系统中采用的工具Supervisord。
## deamon ## deamon
目前Go程序如果要实现deamon还不行详细的见这个Go语言的bughttp://code.google.com/p/go/issues/detail?id=227大概的意思说很难从现有的使用的线程中fork一个出来因为没有一种简单的方法来确保所有已经使用的线程的状态一致性问题。 目前Go程序如果要实现daemon还不行详细的见这个Go语言的bughttp://code.google.com/p/go/issues/detail?id=227大概的意思说很难从现有的使用的线程中fork一个出来因为没有一种简单的方法来确保所有已经使用的线程的状态一致性问题。
但是我们可以看到很多网上的一些实现deamon的方法例如下面两种方式 但是我们可以看到很多网上的一些实现deamon的方法例如下面两种方式
@@ -104,12 +104,12 @@
return 0 return 0
} }
上面提出了两种实现Go的deamon方案但是我还是不推荐大家这样去实现因为官方还没有正式的宣布支持deamon当然第一种方案目前来看是比较可行的而且目前开源库skynet也在采用这个方案做deamon。 上面提出了两种实现Go的daemon方案但是我还是不推荐大家这样去实现因为官方还没有正式的宣布支持daemon当然第一种方案目前来看是比较可行的而且目前开源库skynet也在采用这个方案做daemon。
## Supervisord ## Supervisord
上面已经介绍了Go目前是有两种方案来实现他的deamon但是官方本身还不支持这一块所以还是建议大家采用第三方成熟工具来管理我们的应用程序这里我给大家介绍一款目前使用比较广泛的进程管理软件Supervisord。Supervisord是用Python实现的一款非常实用的进程管理工具。supervisord会帮你把管理的应用程序转成daemon程序而且可以方便的通过命令开启、关闭、重启等操作而且它管理的进程一旦奔溃会自动再次重新开启这样就可以保证程序中断的情况下有自我修复功能。 上面已经介绍了Go目前是有两种方案来实现他的daemon但是官方本身还不支持这一块所以还是建议大家采用第三方成熟工具来管理我们的应用程序这里我给大家介绍一款目前使用比较广泛的进程管理软件Supervisord。Supervisord是用Python实现的一款非常实用的进程管理工具。supervisord会帮你把管理的应用程序转成daemon程序而且可以方便的通过命令开启、关闭、重启等操作而且它管理的进程一旦奔溃会自动再次重新开启这样就可以保证程序中断的情况下有自我修复功能。
>我前面在应用中踩过一个坑就是因为所有的应用程序都是由Supervisord父进程生出来的那么当你修改了操作系统的文件描述符之后别忘记重启Supervisord光重启下面的应用程序没用。当初我就是系统安装好之后就先装了Supervisord然后开始部署程序修改文件描述符重启程序以为文件描述符已经是100000了其实Supervisord这个时候还是默认的1024个导致他管理的进程所有的描述符也是1024.开放之后压力一上来里面狂暴文件描述符用光了,查了很久才找到这个坑。 >我前面在应用中踩过一个坑就是因为所有的应用程序都是由Supervisord父进程生出来的那么当你修改了操作系统的文件描述符之后别忘记重启Supervisord光重启下面的应用程序没用。当初我就是系统安装好之后就先装了Supervisord然后开始部署程序修改文件描述符重启程序以为文件描述符已经是100000了其实Supervisord这个时候还是默认的1024个导致他管理的进程所有的描述符也是1024.开放之后压力一上来系统就开发报文件描述符用光了,查了很久才找到这个坑。
### Supervisord安装 ### Supervisord安装
Supervisord可以通过`sudo easy_install supervisor`安装当然也可以通过Supervisord官网下载后`setup.py install`安装。 Supervisord可以通过`sudo easy_install supervisor`安装当然也可以通过Supervisord官网下载后`setup.py install`安装。
@@ -172,7 +172,7 @@ Supervisord安装完成后有两个可用的命令行supervisor和supervisorctl
- supervisorctl reload载入最新的配置文件并按新的配置启动、管理所有进程。 - supervisorctl reload载入最新的配置文件并按新的配置启动、管理所有进程。
## 小结 ## 小结
这小节我们介绍了如何实现Go的deamon但是我们知道由于目前Go的deamon实现不是很完美我们需要依靠第三方工具来实现应用程序的deamon管理这里介绍了一个python写的进程管理工具Supervisord通过Supervisord可以很方便的把我们的Go应用程序管理起来。 这小节我们介绍了如何实现Go的daemon但是我们知道由于目前Go的daemon实现不是很完美我们需要依靠第三方工具来实现应用程序的daemon管理这里介绍了一个python写的进程管理工具Supervisord通过Supervisord可以很方便的把我们的Go应用程序管理起来。
## links ## links