admin管理员组文章数量:1565805
目录
背景
问题描述
原因分析
解决方案
解决步骤
背景
某个客户现场需要安装、部署nginx,可是客户不给root用户,也不给root权限,只给了p05_dev普通用户。
因此安装nginx的时候,需要将nginx安装到用户有权限的目录下,包括相关的配置文件、日志文件。
问题描述
没有root权限,缺少gcc等依赖,因此无法直接使用源码编译、安装nginx。
从公司内部的服务器上,压缩并复制了一个使用正常的nginx。该nginx是用root用户,使用源码编译安装的,路径是默认的nginx安装路径 /usr/local/nginx
打包复制到客户服务器上的路径/home/ap/p05_dev/nginx之后,使用-c指定了使用的配置文件,可是还是启动报错:
[p05_dev@localhost sbin]$ ./nginx -c /home/ap/p05_dev/nginx/conf/nginx.conf
nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (2: No such file or directory)
2022/08/07 12:16:31 [warn] 5255#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/ap/p05_dev/nginx/conf/nginx.conf:2
2022/08/07 12:16:31 [emerg] 5255#0: mkdir() "/usr/local/nginx/client_body_temp" failed (2: No such file or directory)
nginx.conf配置:
原因分析
看错误描述,使用的配置文件已经是/home/ap/p05_dev/nginx/conf/nginx.conf了,不过有几个问题:
1.错误日志的路径是/usr/local/nginx/logs/error.log,而不是配置文件里配置的/home/ap/p05_dev/nginx/logs/error.log
2.配置文件里配置的用户不生效,因为不是用super-user(超级管理员)来启动
3.client_body_temp的路径还是/usr/local/nginx
查看进程之后,发现nginx没有启动成功。error.log、client_body_temp这些都还是在/usr/local/nginx目录下,可以推断说使用的还是编译好的nginx里配置的,nginx.conf里的配置不全或没生效。
解决方案
既然是在编译好的nginx里就指定了默认的日志文件、模块等的路径,那么即使解决了上面的三个问题,也有可能出现新的问题。解决方法就是不偷懒,按照新的路径、模块,重新编译安装nginx。
但是编译安装nginx需要安装gcc、openssl-devel、pcre-devel等,需要有root权限,而客户不给root权限,只能找变通方式:
1.离线安装gcc、openssl-devel、pcre-devel等
可以参考博文:Linux系统无网络安装nginx_霍三三!的博客-CSDN博客_linux无网络安装nginx
2.在有root权限的服务器上编译、安装好nginx,再压缩复制到客户现场。
解决步骤
以下步骤,没做特殊说明的话,默认使用p05_dev用户来操作
1.下载nginx源码,比如nginx-1.16.1.tar.gz
nginx: download 或者 Tags · nginx/nginx (github)
2.使用root用户安装依赖
yum install gcc openssl-devel pcre-devel zlib-devel
3.上传、解压nginx源码
4.使用root用户或p05_dev创建目标文件夹,比如/home/ap/p05_dev,并将文件夹的用户和用户组更改成p05_dev
[root@localhost home]# chown p05_dev:p05_dev p05_dev
5.编译
编译命令的选项,参考官方文档: Building nginx from Sources
也可以使用命令查看:./configure --help
这里主要指定了目标文件夹位置、配置文件位置、用户等
./configure --prefix=/home/ap/p05_dev/nginx --conf-path=/home/ap/p05_dev/nginx/conf/nginx.conf --pid-path=/home/ap/p05_dev/nginx/nginx.pid --user=p05_dev --sbin-path=/home/ap/p05_dev/nginx/sbin/nginx --with-http_ssl_module
6.安装
make && make install
安装完之后,会在目标路径/home/ap/p05_dev/生成nginx文件夹。
7.更改配置文件nginx.conf
因为不是root权限来启动监听端口不能小于1024,修改conf下的nginx.conf配置文件,将server里的端口改成大于1024(默认是80)
8.测试、启动、停止、重启nginx
nginx -t
9.将nginx文件夹打包之后,移动并解压到目标服务器的指定文件夹/home/ap/p05_dev/nginx
10.验证
版权声明:本文标题:非root用户,没有root权限,安装nginx 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1727081005a1096834.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论