如果在CentOS 7上安装Nginx,有时候可能会出现“Welcome to nginx on Fedora!”的提示,而且conf.d目录下也找不到default.conf文件。这通常是由于安装Nginx之前未完全删除以前安装的HTTPd(Apache)软件造成的。
以下是解决该问题的完整攻略:
-
确认是否安装了httpd软件:
rpm -qa| grep httpd
如果输出中有httpd相关的软件,则需要将其卸载掉:
sudo yum remove httpd*
-
清除旧的yum元数据并重新安装Nginx:
sudo yum clean all
sudo yum install nginx
接下来,您可以尝试在浏览器上访问Nginx的默认安装页,应该已经没有看到“Welcome to nginx on Fedora!”的提示了。
示例1:
假设我们在安装之前已经安装了httpd和httpd-devel,然后安装了Nginx。此时通过命令nginx -v
可以看到Nginx已经成功安装,但是在浏览器中访问时会看到“Welcome to nginx on Fedora!”的提示。
通过运行rpm -qa| grep httpd
我们可以发现这里的确安装了httpd相关的软件:
httpd-devel-2.4.6-93.el7.centos.x86_64
httpd-tools-2.4.6-93.el7.centos.x86_64
httpd-2.4.6-93.el7.centos.x86_64
此时我们需要将这些软件卸载掉,可以运行sudo yum remove httpd*
进行卸载。
然后运行sudo yum clean all
清除旧的yum元数据,并重新安装Nginx:sudo yum install nginx
最后在浏览器中访问Nginx的默认安装页,应该已经没有看到“Welcome to nginx on Fedora!”的提示了。
示例2:
如果您有多个CentOS 7服务器,可以使用Ansible自动化工具来批量卸载httpd软件并重新安装Nginx。
例如,新建一个名为“nginx.yml”的YAML文件,内容如下:
---
- hosts: all
remote_user: centos
become: yes
tasks:
- name: Uninstall httpd
yum: name=httpd* state=absent
- name: Clean yum metadata
command: sudo yum clean all
- name: Install Nginx
yum: name=nginx state=latest
这里假设远程主机的用户名为“centos”,使用sudo权限进行安装和卸载,且所有主机都已经配置好SSH连接。
然后运行以下命令来执行Ansible Playbook:
ansible-playbook nginx.yml -i inventory_file
其中,“inventory_file”为包含要执行操作的所有主机的文件。执行该命令后,Ansible将自动卸载httpd软件并重新安装Nginx,使您的所有CentOS 7服务器都能正常访问Nginx。