nginx使用非root用户启动的一些总结

本文仅作为一次上线遇到的问题进行总结。

事情是这样的,一次上生产,甲方的安全组对线上环境的中间件进行漏洞扫描,然后发现了一些漏洞,需要升级中间件,其中有一个nginx的升级,由于nginx是服务器分配时自带的,我们理所应当的认为,它是具备nginx的编译环境的,所以我们只上传了nginx的源码包,然后就出现了下面一幕。

执行下面命令正常进行了配置

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

执行编译并安装,然后就是这一步,就报了下面的错误

make && make install

 

经过一番百度,发现是没有编译环境,然后执行了编译环境的验证命令

验证是否安装执行命令 gcc -v 

验证g++,执行命令 g++ -v 

 

验证pcre

pcre-config --version

验证openssl  

openssl version -a

经过一番验证,发现少了好多编译依赖环境,然后我们怀疑这个nginx是编译之后上传到服务器的,经过一番询问,果真是这样的,结果导致上线失败。

第二天找了硬件组要了一份编译后的nginx升级包,为了防止再次上线失败,就在开发环境进行了测试。正常,我们启动是用下面的命令进行启动,但是发现不可以。

./nginx -s reload

报了一个错误

nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)

然后经过一番查询,发现原因是我们使用的是非root用户进行启动的,所以不能使用这种方法,

使用非root用户启动nginx时,需要知道配置文件。执行下面命令进行启动

./nginx -c /usr/local/nginx/conf/nginx.conf

自此启动成功

总结:

1.在不清楚部署环境时不要盲目的去升级中间件。

2.nginx可以使用编译后的包进行部署,前提是编译环境跟运行环境的操作系统一致。

3.nginx使用非root用户启动时,需要使用下面命令。

启动
./nginx -c /usr/local/nginx/conf/nginx.conf
停止
./nginx -c /usr/local/nginx/conf/nginx.conf -s stop
重启
./nginx -c /usr/local/nginx/conf/nginx.conf -s reload

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值