Nginx安装后找不到配置文件,编译安装路径
前言
编译安装 Nginx 后,想用 nginx 命令提示 command not found,找配置文件也找不到。这是因为编译安装的 Nginx 不在系统默认 PATH 里,路径和包管理器安装的不一样。
编译安装的默认路径
一般编译安装 Nginx,默认装在:
/usr/local/nginx/
目录结构:
/usr/local/nginx/
├── sbin/
│ └── nginx # 主程序
├── conf/
│ ├── nginx.conf # 主配置文件
│ ├── mime.types
│ └── fastcgi_params
├── html/ # 默认网站目录
└── logs/
├── access.log
└── error.log
怎么确认安装路径
方法一:nginx -V
/usr/local/nginx/sbin/nginx -V
输出里 --prefix= 后面就是安装路径。
方法二:ps 命令看进程
ps aux | grep nginx
进程路径就是 Nginx 在哪。
把 nginx 加到 PATH
不想每次都输完整路径,加个软链接:
ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx
之后直接用 nginx 命令就行。
配置文件在哪
编译安装的配置文件在:
/usr/local/nginx/conf/nginx.conf
编辑:
vi /usr/local/nginx/conf/nginx.conf
常用命令
# 启动
/usr/local/nginx/sbin/nginx
# 重载
/usr/local/nginx/sbin/nginx -s reload
# 停止
/usr/local/nginx/sbin/nginx -s stop
# 检查配置
/usr/local/nginx/sbin/nginx -t
开机自启
编译安装的 Nginx 没有 systemd 服务,需要自己写:
vi /etc/systemd/system/nginx.service
内容:
[Unit]
Description=Nginx Web Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target
然后:
systemctl daemon-reload
systemctl enable nginx
systemctl start nginx
常见坑
坑1:nginx: command not found
执行 nginx 提示找不到命令。
原因: 编译安装的不在 PATH 里。
解决: 加软链接,或者用完整路径。
坑2:改了配置不生效
改了 /etc/nginx/nginx.conf,但重载后还是老配置。
原因: 你改的是包管理器安装的配置文件,实际跑的是编译安装的。
解决: 用 nginx -t 确认一下实际加载的是哪个配置文件。
坑3:多个 nginx 共存
系统里同时有 yum 安装的和编译安装的 Nginx,不知道哪个在跑。
解决: 先停掉一个,再看进程。
坑4:日志找不到
日志不在 /var/log/nginx/。
原因: 编译安装的日志在自己的目录里。
解决: 看 nginx.conf 里的 error_log 和 access_log 配置。
总结
编译安装 Nginx 记住三个路径:
| 内容 | 路径 |
|---|---|
| 主程序 | /usr/local/nginx/sbin/nginx |
| 配置文件 | /usr/local/nginx/conf/nginx.conf |
| 日志 | /usr/local/nginx/logs/ |
记住: 编译安装的和 yum 安装的路径不一样,别搞混了。
遇到问题加QQ23979811 协助处理
Nginx查看配置文件位置,nginx.conf在哪
前言
刚装完 Nginx,想改个配置,发现不知道 nginx.conf 在哪。不同安装方式,配置文件位置不一样。本文讲一下怎么找 Nginx 配置文件。
方法一:nginx -t 命令
最直接的方法:
nginx -t
输出会显示配置文件路径:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
第一行就是配置文件位置。
方法二:ps 命令看进程
看 Nginx 进程启动时用的哪个配置:
ps aux | grep nginx
或者:
ps -ef | grep nginx
输出里 master 进程后面的 -c 参数就是配置文件路径。
方法三:nginx -V 看编译参数
nginx -V
输出里 --conf-path= 后面就是默认配置文件路径。
常见安装方式的默认路径
yum/apt 安装(包管理器)
/etc/nginx/nginx.conf
子配置一般在:
/etc/nginx/conf.d/
/etc/nginx/sites-available/
编译安装
默认在:
/usr/local/nginx/conf/nginx.conf
或者:
/usr/local/nginx/conf/
Docker 安装
容器里的路径是:
/etc/nginx/nginx.conf
如果挂载了宿主机目录,就在宿主机对应目录里。
常用配置文件结构
/etc/nginx/
├── nginx.conf # 主配置文件
├── conf.d/ # 子配置目录
│ ├── aaa.conf
│ └── bbb.conf
├── fastcgi_params # FastCGI 参数
├── mime.types # MIME 类型
└── nginx.conf.default # 默认配置模板
怎么查看完整配置
看主配置
vi /etc/nginx/nginx.conf
看所有加载的配置
nginx -T
-T 会打印所有配置文件的内容,包括 include 进来的子配置。
常见坑
坑1:改了配置不生效
改了 nginx.conf,但重载后还是老配置。
原因: 你改的不是 Nginx 实际加载的配置文件。
解决: 用 nginx -t 确认一下到底加载的是哪个配置文件。
坑2:找不到 nginx.conf
执行 find / -name nginx.conf 找不到。
原因: 可能是编译安装的,不在标准路径。
解决: 用 nginx -V 看 --conf-path= 参数。
坑3:conf.d 里的配置没生效
在 conf.d 里加了 .conf 文件,但没生效。
原因1: 后缀不是 .conf
原因2: 主配置里没 include conf.d/*.conf
解决: 确认 nginx.conf 里有这一行:
include /etc/nginx/conf.d/*.conf;
总结
| 方法 | 命令 |
|---|---|
| 最推荐 | nginx -t |
| 看进程参数 | ps aux \| grep nginx |
| 看编译参数 | nginx -V |
| 看全部配置 | nginx -T |
记住: 找不到配置文件先跑 nginx -t,一目了然。
遇到问题加QQ23979811 协助处理