1
我使用Ansible將Puma作爲Web服務器部署Ruby on Rails應用程序。作爲部署的一部分,彪馬配置綁定到服務器的IP地址,端口8080:使用Ansible查找下一個可用端口
bind "tcp://{{ ip_address }}:8080"
這是然後在nginx的虛擬主機配置用於訪問應用程序:
upstream {{ app_name }} {
server {{ ip_address }}:8080;
}
所有這是工作正常。但是,我現在想要將應用程序的多個副本(分段,生產)部署到同一臺服務器上,並且顯然在8080上有幾個綁定會導致問題,所以我需要使用不同的端口。
最簡單的解決方案是將端口包含在組var中,然後在部署應用程序時將其放入。但是,這需要有關已在服務器上運行的應用程序的背景知識,並且感覺部署應該能夠「發現」要使用的端口。
相反,我正在考慮通過端口從8080開始進行某種迭代,然後檢查每個端口直到沒有被使用。 netstat -anp | grep 8080
給出了一個返回碼0,如果端口正在被使用,所以也許我可以使用該命令來測試(雖然我不知道如何做循環位)。
有沒有人遇到過這個問題?我忽略了更優雅的解決方案嗎?