Centos7.6安装Nginx(yum安装和源码安装)
简介
Nginx(发音为“engine X”)是一个高性能的HTTP和反向代理服务器,也可以作为邮件代理服务器使用。它被广泛应用于高流量的网站和负载均衡环境中。Nginx的设计目标是提供高性能、高可靠性的服务,并且具有较小的内存占用和CPU占用。Nginx最初由俄罗斯的程序员Igor Sysoev开发,于2004年首次发布。它采用事件驱动的异步架构,可以处理大量并发连接,并且能够有效地处理高并发访问。Nginx具有许多功能,包括HTTP服务器、反向代理、负载均衡、缓存加速、动态模块化和HTTPS支持等。它还提供了丰富的配置选项,使用户可以根据具体需求定制服务器的行为。Nginx的优点包括高性能、高并发支持、低内存占用、模块化架构、灵活的配置和可扩展性。总的来说,Nginx是一个功能强大且高效的Web服务器和反向代理服务器,适用于处理高流量和高并发的网站和应用程序。它的设计理念和性能表现使其成为现代互联网架构中不可或缺的一部分。下面将展示Nginx的两种安装方法。
yum安装
使用yum安装前应确保yum源配置完成且正确,详细可以参考包的安装与管理包的安装与管理。本篇也会提供nginx.org提供的yum配置方法,在安装前还需确认以获得root权限,防止安装过程中出现权限不足导致的安装失败。
1、添加 Nginx 的 Yum 仓库
> vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=https://nginx.org/packages/centos/7/\$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
2、安装 Nginx
> yum -y install nginx # -y 直接安装无需确认
3、启动 Nginx 服务
> systemctl start nginx
4、设置 Nginx 开机自启
> systemctl enable nginx
5、检查 Nginx 服务状态
> systemctl status nginx
6、到这里可以打开浏览器输入“http://服务器IP/”来验证 Nginx 是否安装成功,安装成功会显示欢迎界面,如下图所示
源码安装
源码安装会相对yum安装复杂一点,需要先安装Nginx的依赖项和下载源码,安装完成后还需要建立systemctl的管理控制(可选,推荐)
1、安装Nginx依赖项,建议全都运行一下,检查一下是否有缺失
> yum -y install gcc-c++ pcre-devel zlib-devel make
2、下载Nginx源代码并进行解压
在nginx.org下载Nginx源码到当前目录,这里的Nginx版本为1.20.1
> wget http://nginx.org/download/nginx-1.20.1.tar.gz
解压到当前目录
> tar -zxvf nginx-1.20.1.tar.gz
进入解压好的源码目录
> cd nginx-1.20.1
3、配置Nginx
创建系统用户
> groupadd -f www
> useradd -g www www
配置编译文件
> ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# --user:将系统用户赋权给Nginx使用,用户属组是www;
# --prefix:Nginx的安装路径,不写该选项即为默认,默认情况下,Nginx会被安装到/usr/local/nginx
# --with-http_stub_status_module:包含客户端状态模块
# --with-http_ssl_module:提供对HTTPS必要的支持
4、 编译和安装Nginx
> make && make install # make:编译 make install:安装
第3步中的配置编译文件和第4步都不报错才代表安装成功
5、启动Nginx
启动Nginx
> /usr/local/nginx/sbin/nginx
查看Nginx版本
> /usr/local/nginx/sbin/nginx -v
检查Nginx是否运行
> ps -ef | grep nginx
6、设置系统服务(systemctl)(可选,推荐方便管理)
可以创建一个系统服务单元文件以便能够使用systemctl管理Nginx服务。创建一个名为nginx.service的文件在/etc/systemd/system/目录下
> vim /etc/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
设置为开机启动Nginx服务
> systemctl enable nginx
启动Nginx服务
> systemctl start nginx # 因为前面已经启动过Nginx了,可能会造成80端口占用的提示,解决方法请看常见问题中的第2点
查看Nginx服务的状态
> systemctl status nginx
7、启动完成后可以打开浏览器输入“http://服务器IP/”来验证 Nginx 是否安装成功,安装成功会显示欢迎界面,如下图所示
安装后的事情
确认服务器是否开启了防火墙,Linux自带的时firewalld,确保你的系统防火墙允许HTTP和HTTPS流量。如果你使用的是firewalld,可以使用以下命令
为public区域开通http端口
> firewall-cmd --permanent --zone=public --add-service=http
为public区域开通https端口
> firewall-cmd --permanent --zone=public --add-service=https
从新加载防火墙策略
> firewall-cmd --reload
常见问题
1、启动Nginx时出现了nginx: [emerg] getpwnam("wwww") failed
原因:没有配置 wwww 这个用户名
解决方法:
1)在 nginx.conf 中把 user nobody 的注释去掉;
> vim /usr/local/nginx/conf/nginx.conf
2)在服务器系统中添加用户组 wwww 和用户 www
> groupadd -f wwww
> useradd -g wwww wwww
2、启动Nginx时出现 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
这是由于80端口已被使用导致的,运行下面的命令解除占用
> fuser -k 80/tcp