为了账号安全,请及时绑定邮箱和手机立即绑定

从服务器的角度来看,Go Web应用程序如何工作?

从服务器的角度来看,Go Web应用程序如何工作?

Go
子衿沉夜 2021-03-30 12:50:17
我遵循了有关如何使用Go创建Web应用程序的说明,并且能够使应用程序正常运行。不过,令我感到困惑的是,当您运行应用程序(./8.out)时,终端将坐在那里并监听8080端口,直到有人访问页面为止。终端是否需要一直保持运行状态以运行Web应用程序?该应用程序的行为就像apache吗?是否需要在此应用旁边运行apache?现在,在服务器环境上进行设置似乎令我感到困惑,因为我不知道实现此目的的最佳方法是什么。
查看完整描述

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是一种非常新的语言。


查看完整回答
反对 回复 2021-04-26
?
红糖糍粑

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之类的协议来处理请求。


查看完整回答
反对 回复 2021-04-26
  • 3 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信