3 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
不過,令我感到困惑的是,當(dāng)您運(yùn)行應(yīng)用程序(./8.out)時(shí),終端將坐在那里并監(jiān)聽8080端口,直到有人訪問頁(yè)面為止。
在Linux中,每個(gè)進(jìn)程都有一個(gè)父級(jí)。當(dāng)您在終端(例如./8.out
或)中運(yùn)行命令時(shí),find
會(huì)生成一個(gè)新的進(jìn)程,它是shell進(jìn)程的子進(jìn)程。如果在行(./8.out &
)的末尾沒有與號(hào)的情況下運(yùn)行外殼程序,則外殼程序?qū)⒌却撨^程完成,然后再輸入其他文本。如果使用與號(hào)運(yùn)行,則當(dāng)進(jìn)程在后臺(tái)運(yùn)行時(shí),您可以繼續(xù)使用該外殼程序。但是,當(dāng)您關(guān)閉外殼程序時(shí),您會(huì)注意到服務(wù)器進(jìn)程也關(guān)閉了。這是因?yàn)榻K止父級(jí)時(shí),其所有子級(jí)也會(huì)終止。
終端是否需要一直保持運(yùn)行狀態(tài)以運(yùn)行Web應(yīng)用程序?
如果您希望該過程在沒有終端的情況下運(yùn)行,并且您可能不希望這樣做,但是如果您確實(shí)這樣做,則:
jobs disown %jobid
第一個(gè)命令為您提供Shell子進(jìn)程的列表,第二個(gè)命令將%jobid的父進(jìn)程更改為init。初始化是所有進(jìn)程的父進(jìn)程。
該應(yīng)用程序的行為就像apache嗎?
apache和此應(yīng)用程序都偵聽操作系統(tǒng)提供的端口,但除此之外,它們是不同的。
是否需要在此應(yīng)用旁邊運(yùn)行apache?
不,此應(yīng)用程序與Apache完全分開工作。Apache絕不是神奇的(?),從根本上講,就像該應(yīng)用程序一樣,Apache只是在端口上偵聽。
現(xiàn)在,在服務(wù)器環(huán)境上進(jìn)行設(shè)置似乎令我感到困惑,因?yàn)槲也恢缹?shí)現(xiàn)此目的的最佳方法是什么。
這似乎令人困惑。編寫Web服務(wù)器/服務(wù)非常困難,但這絕不是要部署到之外的示例localhost
。
感謝您的答復(fù)。因此,如果Go應(yīng)用程序本質(zhì)上像apache一樣,是否存在一個(gè)預(yù)制的,具有apache冗長(zhǎng)性的Go服務(wù)器應(yīng)用程序?
我不知道用Go編寫的生產(chǎn)質(zhì)量服務(wù)器,在這一點(diǎn)上,Go是一種非常新的語言。

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
我想你的問題是 what is a good way to run a Go web application?
只要您繼續(xù)執(zhí)行終端會(huì)話,就可以在終端中運(yùn)行它。像screen
這樣的程序可以做到這一點(diǎn)。
另一種方法是利用操作系統(tǒng)的啟動(dòng)腳本。例如,大多數(shù)Linux系統(tǒng)允許您將腳本添加到/etc/init.d中,從而生成Web應(yīng)用程序。這是Apache開始的方式。
我認(rèn)為最好的方法是使用monit
或這類軟件daemontools
。進(jìn)行一些初始配置后,這些應(yīng)用程序?qū)⒊掷m(xù)監(jiān)視Web應(yīng)用程序,并在應(yīng)用程序出現(xiàn)故障時(shí)重新啟動(dòng)。這就是大多數(shù)生產(chǎn)環(huán)境的運(yùn)作方式。
如果要在同一服務(wù)器上運(yùn)行多個(gè)Go Web應(yīng)用程序,則可以使用apache或lighttpd作為網(wǎng)關(guān),并使用fastcgi或scgi之類的協(xié)議來處理請(qǐng)求。
- 3 回答
- 0 關(guān)注
- 281 瀏覽
添加回答
舉報(bào)