• 非root用户启动nginx


    非root用户启动nginx

    背景:

    公司服务器申请root权限一般会比较麻烦。所以希望能以公共账号(普通用户)来启动nginx,方便后续运维。

    nginx启动进程可以在/etc/nginx/nginx.conf中,指定user (user www-data), 但是这个只有在root用户启动的情况才有意义,启动之后,master process还是root用户的,并不能满足我们的需求 。

    我们需要能用非root用户启动nginx master process

    做法如下:
    1. 注释掉/etc/nginx/nginx.conf的:user www-data 这行
    2. 此时用普通用户执行 /usr/sbin/nginx -t测试配置,报如下错误nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
    3. 直接在/etc/nginx/目录下, 执行mkdir pid新建目录,修改/etc/nginx/nginx.conf的: pid /run/nginx/nginx.pidpid /etc/nginx/pid/nginx.pid
    4. 修改相关文件夹/etc/nginx /var/log/nginx的权限。 如执行:chown -R user:usergroup /etc/nginx

    此时,执行nginx -t测试配置没问题,即可正常以普通用户启动nginx了

    后续

    运行一天后,发现部分有些页面的数据不能正常加载,排查发现response中返回的json被截断了
    进一步排查,发现nginx错误日志中显示: open() "/var/lib/nginx/proxy/8/04/0000000048" failed (13: Permission denied)

    解决:执行chown -R user:usergroup /var/lib/nginx 修改/var/lib/nginx/文件夹的权限。同时为稳妥起见,将whereis nginx显示的文件夹全改成普通用户了

  • 相关阅读:
    Flutter TextField 文本输入框的基本属性
    Flutter 之网络请求Dio, FormData, 表单网络请求, x-www-form-urlencoded
    操作DataTable数据,修改某列的值
    获取DataTable某一列所有值
    ajax将数据遍历给select的option选项
    Flutter 获取网络数据及渲染列表
    Flutter实现APP版本更新
    Flutter 一些常用库插件
    flutter_screenutil屏幕適配
    前端组件学习
  • 原文地址:https://www.cnblogs.com/wchaos/p/14513025.html
Copyright © 2020-2023  润新知