3 回答
TA贡献1825条经验 获得超6个赞
不过,令我感到困惑的是,当您运行应用程序(./8.out)时,终端将坐在那里并监听8080端口,直到有人访问页面为止。
在Linux中,每个进程都有一个父级。当您在终端(例如./8.out
或)中运行命令时,find
会生成一个新的进程,它是shell进程的子进程。如果在行(./8.out &
)的末尾没有与号的情况下运行外壳程序,则外壳程序将等待该过程完成,然后再输入其他文本。如果使用与号运行,则当进程在后台运行时,您可以继续使用该外壳程序。但是,当您关闭外壳程序时,您会注意到服务器进程也关闭了。这是因为终止父级时,其所有子级也会终止。
终端是否需要一直保持运行状态以运行Web应用程序?
如果您希望该过程在没有终端的情况下运行,并且您可能不希望这样做,但是如果您确实这样做,则:
jobs disown %jobid
第一个命令为您提供Shell子进程的列表,第二个命令将%jobid的父进程更改为init。初始化是所有进程的父进程。
该应用程序的行为就像apache吗?
apache和此应用程序都侦听操作系统提供的端口,但除此之外,它们是不同的。
是否需要在此应用旁边运行apache?
不,此应用程序与Apache完全分开工作。Apache绝不是神奇的(?),从根本上讲,就像该应用程序一样,Apache只是在端口上侦听。
现在,在服务器环境上进行设置似乎令我感到困惑,因为我不知道实现此目的的最佳方法是什么。
这似乎令人困惑。编写Web服务器/服务非常困难,但这绝不是要部署到之外的示例localhost
。
感谢您的答复。因此,如果Go应用程序本质上像apache一样,是否存在一个预制的,具有apache冗长性的Go服务器应用程序?
我不知道用Go编写的生产质量服务器,在这一点上,Go是一种非常新的语言。
TA贡献1815条经验 获得超6个赞
我想你的问题是 what is a good way to run a Go web application?
只要您继续执行终端会话,就可以在终端中运行它。像screen
这样的程序可以做到这一点。
另一种方法是利用操作系统的启动脚本。例如,大多数Linux系统允许您将脚本添加到/etc/init.d中,从而生成Web应用程序。这是Apache开始的方式。
我认为最好的方法是使用monit
或这类软件daemontools
。进行一些初始配置后,这些应用程序将持续监视Web应用程序,并在应用程序出现故障时重新启动。这就是大多数生产环境的运作方式。
如果要在同一服务器上运行多个Go Web应用程序,则可以使用apache或lighttpd作为网关,并使用fastcgi或scgi之类的协议来处理请求。
- 3 回答
- 0 关注
- 242 浏览
添加回答
举报