nginx是一个高性能的HTTP和反向代理服务器,由俄罗斯程序员Igor Sysoev开发,因其轻量级、高并发、低资源消耗的特点被广泛应用于Web服务、负载均衡、反向代理等场景,在Linux系统上安装nginx是搭建基础服务的关键操作,本文将详细介绍主流Linux发行版下通过包管理器和源码编译两种方式安装nginx的步骤,以及安装后的基础配置与问题排查。
安装前准备:系统更新
无论采用何种安装方式,建议先更新系统包列表和已安装的软件包,确保依赖库的版本兼容性,避免因依赖版本不匹配导致安装失败。
- Ubuntu/Debian系统:执行
sudo apt update && sudo apt upgrade -y
,更新包列表并升级已安装包。 - CentOS/RHEL 7+系统:执行
sudo yum update -y
(CentOS 8+使用sudo dnf update -y
),更新系统软件包。
通过包管理器安装(推荐新手)
包管理器安装是最简单的方式,适合快速部署,但版本可能略滞后于官方最新版,主流发行版的安装步骤如下:
Ubuntu/Debian系统
Ubuntu和Debian系统使用apt
包管理器,nginx已包含在官方软件源中,直接安装即可:
sudo apt install nginx -y # 安装nginx及依赖
安装完成后,启动nginx服务并设置开机自启:
sudo systemctl start nginx # 启动服务 sudo systemctl enable nginx # 设置开机自启
检查服务状态:
sudo systemctl status nginx # 显示active (running)表示成功
默认配置文件路径:/etc/nginx/nginx.conf
,网站根目录:/var/www/html
,欢迎页面文件:/var/www/html/index.nginx-debian.html
。
CentOS/RHEL系统
CentOS 7+默认的yum源可能不包含nginx,需先安装EPEL(Extra Packages for Enterprise Linux)仓库;CentOS 8+的dnf源已包含nginx,可直接安装。
- CentOS 7:
sudo yum install epel-release -y # 安装EPEL仓库 sudo yum install nginx -y # 安装nginx
- CentOS 8+:
sudo dnf install nginx -y # 直接安装(无需EPEL)
启动服务并设置开机自启(命令同Ubuntu):
sudo systemctl start nginx sudo systemctl enable nginx
默认配置文件路径:/etc/nginx/nginx.conf
,网站根目录:/usr/share/nginx/html
。
不同系统安装命令对比
为方便查阅,以下是主流系统的安装命令汇总:
系统 | 包管理器 | 安装EPEL仓库(CentOS需) | 安装nginx命令 |
---|---|---|---|
Ubuntu/Debian | apt | 不需要 | sudo apt install nginx -y |
CentOS 7 | yum | sudo yum install epel-release -y |
sudo yum install nginx -y |
CentOS 8+ | dnf | 不需要(dnf源包含nginx) | sudo dnf install nginx -y |
源码编译安装(适合高级用户)
源码编译安装可自定义模块(如HTTP/2、SSL等)并使用最新版本,但需手动处理依赖,步骤稍复杂。
安装编译依赖
编译nginx需安装gcc、make、pcre、zlib、openssl等开发库:
- Ubuntu/Debian:
sudo apt install build-essential libpcre3 libpcre3-dev zlib1g zlib1g-dev libssl-dev -y
- CentOS/RHEL:
sudo yum install gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
下载nginx源码
访问nginx官网获取最新稳定版tarball,使用wget下载(以1.25.3版本为例):
wget http://nginx.org/download/nginx-1.25.3.tar.gz tar -zxvf nginx-1.25.3.tar.gz # 解压 cd nginx-1.25.3 # 进入源码目录
配置编译选项
通过./configure
脚本指定安装路径和模块,常用选项如下:
选项 | 说明 |
---|---|
--prefix=/path/to/install |
指定安装目录,默认/usr/local/nginx |
--with-http_ssl_module |
支持HTTPS(需OpenSSL) |
--with-http_v2_module |
支持HTTP/2 |
--with-http_gzip_static_module |
支持GZIP压缩 |
--with-pcre |
启用PCRE正则表达式支持 |
--with-http_stub_status_module |
启用状态页(用于监控) |
示例配置(安装到/usr/local/nginx
,启用SSL和HTTP/2):
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-pcre
编译并安装
make # 编译源码(耗时较长,耐心等待) sudo make install # 安装到指定目录
配置环境变量并启动
编辑~/.bashrc
文件,添加nginx可执行文件路径到环境变量:
echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> ~/.bashrc source ~/.bashrc # 立即生效
启动nginx服务:
sudo /usr/local/nginx/sbin/nginx # 默认加载/usr/local/nginx/conf/nginx.conf
检查版本:nginx -v
,显示版本号表示安装成功。
安装后配置与测试
修改默认配置
编辑默认配置文件(如Ubuntu的/etc/nginx/sites-available/default
),修改listen
(监听端口)和root
(网站根目录):
server { listen 80; root /var/www/mywebsite; # 自定义网站目录 index index.html index.htm; }
创建测试页面:
sudo mkdir -p /var/www/mywebsite echo "Hello, Nginx!" | sudo tee /var/www/mywebsite/index.html
测试配置语法
修改配置后,需测试语法是否正确:
sudo nginx -t # Ubuntu/CentOS包管理器安装 sudo /usr/local/nginx/sbin/nginx -t # 源码编译安装
返回“syntax is ok”和“test is successful”表示配置正确。
重载配置并开放端口
重载配置使修改生效:
sudo nginx -s reload # 包管理器安装 sudo /usr/local/nginx/sbin/nginx -s reload # 源码编译安装
防火墙开放端口(确保外部可访问):
- Ubuntu(ufw):
sudo ufw allow 'Nginx Full' # 开放80(HTTP)和443(HTTPS)
- CentOS(firewalld):
sudo firewall-cmd --permanent --add-service=http # 开放HTTP sudo firewall-cmd --permanent --add-service=https # 开放HTTPS sudo firewall-cmd --reload # 重载防火墙规则
访问测试
浏览器输入服务器IP地址(如http://192.168.1.100
),若显示“Welcome to nginx!”或自定义页面,表示安装成功。
常见问题排查
- 服务启动失败:检查端口是否被占用(
netstat -tuln | grep 80
),或配置文件语法错误(nginx -t
)。 - 无法访问:确认防火墙已开放端口,SELinux(CentOS)是否拦截(临时关闭
sudo setenforce 0
测试)。 - 源码编译找不到模块:重新运行
./configure
并添加所需模块选项,再执行make clean && make && make install
。
相关问答FAQs
问题1:安装后浏览器访问服务器IP无法显示nginx欢迎页面,怎么办?
解答:首先检查nginx服务状态(sudo systemctl status nginx
),确保服务正在运行;其次检查防火墙设置,确认80(HTTP)或443(HTTPS)端口已开放(Ubuntu用sudo ufw status
,CentOS用sudo firewall-cmd --list-ports
);然后检查SELinux状态(CentOS下getenforce
),若为enforcing
可临时关闭测试(sudo setenforce 0
);最后确认配置文件语法正确(sudo nginx -t
),并检查网站根目录文件是否存在(如/var/www/html/index.nginx-debian.html
)。
问题2:如何升级nginx到最新版本?
解答:若通过包管理器安装,Ubuntu/Debian执行sudo apt update && sudo apt upgrade nginx -y
,CentOS/RHEL执行sudo yum update nginx -y
或sudo dnf update nginx -y
;若源码编译安装,需下载新版本源码(重复“源码编译安装”步骤),注意先备份配置文件(/usr/local/nginx/conf/nginx.conf
),安装完成后可通过nginx -v
查看版本号确认升级成功。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31562.html