当我运行Node HTTP服务器应用程序时,通常会调用自定义函数
function runAsWWW()
{
try
{
process.setgid('www-data');
process.setuid('www-data');
} catch (err)
{
console.error('Cowardly refusal to keep the process alive as root.');
process.exit(1);
}
}
从 server.listen(8080,'localhost',null,runAsWWW);
因此服务器实际上以www-data
用户身份运行,以提供更好的安全性。通过发出启动Golang Web服务器时,我可以做些类似的事情go run index.go
吗?
扩展@ JimB 的答案:
使用流程主管以特定用户的身份运行您的应用程序(并处理重新启动/崩溃,日志重定向等)。对于多线程应用程序来说setuid
,这setgid
通常是个坏主意。
使用操作系统的进程管理器(Upstart,systemd,sysvinit)或独立的进程管理器(Supervisor,runit,monit等)。
这是主管的示例:
[program:yourapp]
command=/home/yourappuser/bin/yourapp # the location of your app
autostart=true
autorestart=true
startretries=10
user=yourappuser # the user your app should run as (i.e. *not* root!)
directory=/srv/www/yourapp.com/ # where your application runs from
environment=APP_SETTINGS="/srv/www/yourapp.com/prod.toml" # environmental variables
redirect_stderr=true
stdout_logfile=/var/log/supervisor/yourapp.log # the name of the log file.
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
此外:如果您不是反向代理,并且您的Go应用程序需要绑定到<1024端口(例如端口80或443),请使用setcap-例如:setcap cap_net_bind_service=+ep /home/yourappuser/bin/yourapp
PS:我写了一篇关于如何使用Supervisor运行Go应用程序的文章(从“我没有安装Supervisor”开始)。
这里的新手。 目前正在学习grpc的工作原理,并正在通过此链接中的教程 https://grpc.io/docs/quickstart/go.html#update-and-run-the-application 当我使用helloworld运行这个示例时。PB去提供的文件,就行了。但当我删除了那个文件并运行了要再次生成该文件,我发现我无法再运行迎宾服务器。 我得到的错误是 google.gola
问题内容: 我想清除所有超过1周的SQL数据库,我想每晚进行一次。所以,我要安排一份工作。如何查询mySQL,而不必每次都手动输入密码? PHP中的查询如下: 有没有办法将其作为shell脚本运行?如果没有,有没有一种方法可以使cron运行php文件? 问题答案: 尝试创建如下所示的shell脚本: 然后可以将其添加到cron
您可以通过将spring-cloud-sleuth-stream jar作为依赖关系来累加并发送跨越Spring Cloud Stream的数据,并为RabbitMQ或spring-cloud-starter-stream-kafka添加通道Binder实现(例如spring-cloud-starter-stream-rabbit)为Kafka)。通过将spring-cloud-sleuth-st
我有这个在我的. htaccess文件: 但是每当我访问根目录上的文件时,就像它将重定向到。 我如何纠正它,以便它将正确地重定向到?
问题内容: 我从dockerfile构建了Docker映像。我看到映像已成功构建,但是该如何处理?它不应该能够作为容器运行吗? 问题答案: 运行它的具体方法取决于您是否为图像指定了标签/名称。 使用名称(让我们使用 Ubuntu ): 没有名称,只需使用ID: 请参阅 Docker运行参考 以获取更多信息。
是否可以将iOS7设备作为蓝牙LE外设(iBeacon)运行并在后台发布广告?我已经能够让它在前台用下面的代码做广告,并且可以从另一个iOS设备上看到它,但是一旦我回到主屏幕,它就停止了广告。我确实在plist中添加了蓝牙外围后台模式,但这似乎没有帮助,尽管我确实得到提示说设备想要在后台使用蓝牙。是我做错了什么,还是在iOS不可能? 以下是接收/侦听端的代码: