Nginx 安装的权限问题
安装详细步骤:项目手动部署到Linux服务器
在公司里,往往不能直接使用 root 用户来进行 Nginx 的安装,这就意味着安装 Nginx 的时候会出现各种权限问题。
报错 1
Nginx 默认会安装在 /usr/local/nginx
下,但是可能没有直接操作该目录的权限。
一开始使用的是:
make install DESTDIR=/home/song/services/nginx/home
在编译安装 make install
的时候,指定输出目录。但是启动的时候,仍然报错:
还是去操作 /usr/local/nginx
这个目录了。
然后想着,手动在 nginx.conf 中指定一下日志目录吧:
vim /home/song/services/nginx/build/usr/local/nginx/conf/nginx.conf
这里参考了:https://www.cnblogs.com/wangchengxu/p/14172261.html
但还是没用?
后来发现,其实在使用 configure 设置系统配置参数的时候,可以使用 --prefix
指定前缀,这里才是指定安装目录。
./configure --prefix=/home/song/services/nginx/home
--prefix
和 DESTDIR
的区别:
--prefix
- 指定了 Nginx 的安装目录。例如,使用
--prefix=/usr/local/nginx
,那么 Nginx 将会被安装到/usr/local/nginx
目录下。 - 这个目录是 Nginx 的“根目录”,配置文件、二进制文件、日志文件等都会放在这个目录下。
--prefix
是永久性的,它决定了 Nginx 的安装位置。
DESTDIR
- 是一个临时性的安装目录前缀,用于打包和分发软件。
- 例如,使用
make install DESTDIR=/tmp/nginx
,那么 Nginx 会安装在/tmp/nginx/usr/local/nginx
(假设--prefix
是/usr/local/nginx
)。 DESTDIR
的用途是在不实际安装到最终目的地的情况下构建包。这样就可以将整个目录结构打包,然后移动到其他机器或目录。- 使用
DESTDIR
不会影响 Nginx 的实际运行路径或配置文件路径。
报错 2
nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/song/services/nginx/home/conf/nginx.conf:2
这个报错也是权限问题,网上搜了一堆,大部分是说用 root 来启动 nginx。但是在公司里,根本不会给你 root 用户。。。
后面发现这个报错也无关紧要,ps -ef | grep nginx
发现 nginx 跑的好好的。
报错 3
nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)
权限不够,80 端口可能需要 root 权限才能绑定,在 nginx 配置文件中,换一个监听端口即可,比如 8181。