从零开始安装nginx
在公司的服务器上安装nginx,全新的服务器,啥都没有,踩了很多坑记录一下
使用yum命令报错 “there are no enabled repos”
说明yum命令无法安装nginx
首先使用yum list
,可以查出数来,证明ISO系统镜像是关联的且挂载成功
再使用yum repolist
,显示仓库数目为0
说明.repo文件出错了。
一般来说,默认携带的.repo文件位置是
/etc/yum.repos.d/*.repo
,不过一般需要换成国内的景象文件,一般常用的是163镜像和阿里云镜像。
解决方案
首先,查看是否安装了yum工具,如果没有则安装yum工具。
rpm -qa | grep yum
CentOS 报错:There are no enabled repos:
接下来进入repo文件的目录,先备份源文件
cd /etc/yum.repos.d
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
然后下载系统对应的国内镜像
163:http://mirrors.163.com/.help/centos.html
阿里云:https://mirrors.aliyun.com
下载对应版本repo文件后, 放入/etc/yum.repos.d/(操作前请做好相应备份)。可以使用xftp、filezila等工具上传。
然后运行一下命令生成缓存
yum clean all
yum makecache
这里可能会有一个问题,上传到这个文件夹需要root权限,使用第三方工具不一定能成功。可以先将文件上传到其他地方,再在服务器上进行复制转移。
还有一个问题,如果直接在服务器上使用curl、wget下载,使用yum会报错
File contains no section headers
,接下来详细说明一下
使用yum命令报错 “File contains no section headers”
问题可能出现在:
- 多repo文件混用,系统无法识别
- 下载的repo文件有问题
- 网络出口限制,网络问题(校园网常见)
总而言之,repo文件有问题。
多repo文件混用
进入repo文件的目录,可以看到存在多个repo文件,没必要,理论上有一个就行,建议将其他repo文件备份,只留一个
CentOS-Debuginfo.repo
CentOS-Vault.repo
CentOS-Base.repo (在线yum源安装使用的配置文件)
CentOS-Media.repo (光盘yum源使用的配置文件)
下载的repo文件有问题
进入repo文件目录,使用cat命令查看刚刚下载的repo文件内容
cat /etc/yum.repos.d/CentOS-Base.repo
在使用浏览器下载这个文件,本地看一下文件内容,如果发现和服务器的repo文件有较大差异,说明下载过程出错了。
复制粘贴正确的内容,然后在服务器上使用vim编辑repo文件,粘贴过去,保存。
所以建议下载到本地然后上传到服务器。比较保险、方便。
网络问题
常见于校园网选手,一般安装过程中会有明显提示,显示网络中断等。可以使用手机热点尝试一下。
yum命令安装nginx报错:“curl: (6) Could not resolve host: mirrors.163.com; Unknown error“
解决上述问题后,开始联网安装时可能会报错:curl: (6) Could not resolve host: mirrors.163.com; Unknown error
这是DNS域名解析问题,可以添加nameserver解决
echo nameserver 8.8.8.8 > /etc/resolv.conf
# or
echo nameserver 8.8.4.4 > /etc/resolv.conf
yum命令安装nginx报错 “No package nginx available. Error: Nothing to do“
真是服了,居然还能报错。出现这个的原因是因为本地yum源中没有我们想要的nginx,nginx位于第三方的yum源里面,而不在centos官方yum源里面
可以尝试安装epel(Extra Packages for Enterprise Linux)
sudo yum install -y epel-release
sudo yum -y update
如果没用的话,可能要再更换repo文件。。。。。
接下来在安装nginx就可以啦。记得打开防火墙的80和443端口。
sudo yum install -y nginx
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
总结
因为是基础的服务器设置问题,所以遇到的情况一般网上都有现成的答案,要多搜搜多看看,慢慢来
本作品采用 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议 (CC BY-NC-ND 4.0) 进行许可。