我的基于dart:io
的轻量级网络服务器非常像这样:
import 'dart:io';
void main() {
HttpServer.bind(InternetAddress.ANY_IP_V4, 80).then((server) {
server.listen((HttpRequest request) {
// ... do stuff...
request.response.write('Alright, here is your response...');
request.response.close();
});
});
print("listing....");
}
让我们启动它(在Ubuntu Server 1.04上):
$ nohup dart myServer.dart &
Listening...
到目前为止,一切看起来都很好。我可以退出我的shell并继续提供服务。但是,如果出现严重错误 - 例如抛出未处理的异常 - Dart进程失败。
是否有任何建议如何监控Dart进程并在必要时重新启动它?我想我可以写一个简单的脚本,只是想知道是否有更好的/推荐的方式?
(通过mod_dart在Apache中托管可能是一种选择 - 但感觉有些过分但当前版本不稳定。)
答案 0 :(得分:3)
考虑以下工具:
http://supervisord.org/ Supervisor是一个客户端/服务器系统,允许其用户监视和控制类UNIX操作系统上的许多进程。
http://upstart.ubuntu.com/ Upstart是/ sbin / init守护程序的基于事件的替代,它在启动期间处理任务和服务的启动,在关机期间停止它们并在系统运行时监督它们。
选择最符合您需求的工具,无论如何都可以使用这些工具
答案 1 :(得分:2)
我在我的GCE Debian实例上使用Monit,易于设置和一个漂亮的小网页界面,以便于管理。