Nginx编译安装(非root启动)


操作系统发行版本:openEuler release 20.03 (LTS-SP2)

项目中大量用到Nginx,所以乘着值夜班的时间搭个Nginx测试环境,用于以后项目中Nginx配置验证。以前搭Nginx时都是用root账号,为了更贴近于生产环境这次也用非root权限进行安装启动。

首要保证nginx必要和常用组件已经安装,安装命令如下:

dnf install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

===============使用root操作=============== 新建一个用户nku,命令如下:

useradd -m -d /home/nku nku

passwd为账号配置密码。

===============使用nku操作===============

首先解压nginx源码包,命令就不写了,大家都应该知道。在nku家目录下新建目录nginx用于后期安装nginx。然后进入解包后的目录,这里先不要着急configure。我们需要自定义一些东西,所以./configure需要加入参数,参数可根据自身需要进行添加。

./configure \
    --prefix=/home/nku/nginx \
    --lock-path=/var/lock/nginx.lock \
    --error-log-path=/home/nku/nginx/logs/error.log \
    --http-log-path=/home/nku/nginx/logs/access.log \
    --with-http_gzip_static_module \
    --with-http_stub_status_module \
    --with-http_ssl_module \
    --with-file-aio \
    --with-http_realip_module \
    --with-stream

其中我修改了nginx默认安装目录,以及日志保存路径等,还加入了ssl模块等参数。等待配置完成。执行make开始编译,无错通过编译后,执行make install开始安装,无错通过后表示安装完成。

进入/home/nku/nginx/sbin目录,执行./nginx启动nginx服务。此时会提示13没有权限的错误,如下图:

执行./nginx -t测试也会报13没有权限错误,如下图:

导致这个问题的原因在于nginx监听端口号如果小于1024,则必须用root启动,而默认的nginx监听端口为80。修改nginx.conf中的监听端口号大于1024后,再次执行./nginx即可启动服务。

额外话:关于停止nginx服务

如果查看nginx -help的时候可以发现 -s下有stop和quit两个参数都能用于停止nginx。区别在于stop是直接停掉服务,类似于直接kill进程;而quit则是关闭监听,同时等待当前的链接全部退出后再关闭进程。建议使用quit而不是stop,stop容易引发一些问题。