#43 楼 @luikore 难道界面又变了,我印象里是在中间有个按钮可以关掉按个人排序的来着,咋没了
https://support.google.com/websearch/answer/35892?p=settings_help#personal
太高深了看不懂啊
Entropy...
其实直接用 TexLive 就挺好的了,当然 Python 的也凑合
原来你们都不会 socket 啊...
不希望 Goliath 以 root 身份运行在 80 端口。
你可以先以 root 去 bind 80 端口,setuid 成 appuser,再去执行 Goliath...
比如用老土的 supervisord 就可以,假如你放心用 root 运行 supervisord,那么你可以用那个fcgi-program
的功能,这个名字起得不好,其实所有 TCP/Unix domain socket 都可以。
而且用于 Unix domain socket 的时候,你可以把user
设置成 appuser,把socket_owner
设置成nginx
,这样两者就完全隔离开了,并且以其他非 root 用户运行的程序也 connect 不了这个 unix domain socket。
当然,这样就需要 supervisord 是 root 了,这显然不是很好。当然也可以尝试去获得连进来的 socket 的 uid,gid 来判断,如果不是 nginx 的直接关掉。但这里要用到一些高级的 socket 操作,而且判断 uid/gid 的逻辑和应用代码搅在一起,这么做是否值得也说不好。
而且最新的 Linux 内核也支持 capability 了,完全可以只给一个仅用于占端口的 capability,bind 完了之后 drop 掉就是了。
可以让 nginx 和 Goliath 通过 socket 进行通讯。不一定非得走 http。
通过 TCP Socket 还是 Unix domain Socket 和用啥协议没啥关系。两种 socket 上面都可以是 HTTP/FastCGI/SCGI 等协议。
在多核服务器上,你需要启动多个 Goliath 进程,分别监听不同的 tcp port,所以前面需要 nginx 做请求分发。
所有的 Goliath 进程当然可以监听同一个 tcp port 了。最简单的办法就是,先 bind 到某个 tcp 端口,fork 成多个进程就好了。但要想动态调整就得写点代码了。
假如你不想自己 fork,你可以试试 supervisord 的fcgi-program
,这个名字起得不好,其实所有 TCP/Unix domain socket 都可以。把numprocs_start
改成 5,在进程里面都listen
fd=0 的那个 socket,看是不是 5 个进程都在监听同一个 tcp 端口了呢...
http://supervisord.org/configuration.html#fcgi-program-x-section-settings
#20 楼 @clearJiang 震惊了,原来你不会 Go 啊...
又改规则了,又变回当天注册就可发帖了...
Go 只是那帮老家伙为了弥补一下当年 C 没搞好的遗憾,大家不必太认真...