非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顯示的文件夾全改成普通用戶了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM