如何在 CentOS 7 上安装 Nginx

本文首发:开发指南:如何在 CentOS 7 上安装 Nginxhtml


Nginx 读做 engine x, 是一个免费的、开源的、高性能的 HTTP 和反向代理服务,主要负责负载一些访问量比较大的站点。linux

Nginx 能够做为一个独立的 Web 服务,也能够用来给 Apache 或是其余的 Web 服务作反向代理。nginx

相比于 Apache,Nginx 能够处理更多的并发链接,并且每一个链接的内存占用的很是小。centos

本教程将会教您如何在 Centos 7 的服务器上安装和管理 Nginx。浏览器

开始前的准备

在开始阅读此教程以前,请确保你是以拥有 sudo 权限的用户来登陆的服务器,而且服务器中没有 Apache 或是其余服务正在使用 80(HTTP) 和 443(HTTPS) 端口上,防止端口被占用,形成 Nginx 没法正常启动。安全

在 CentOS 中安装 Nginx

请按照下面的步骤,在 CentOS 中安装 Nginx。bash

一、 EPEL 仓库中有 Nginx 的安装包。若是你尚未安装过 EPEL,能够经过运行下面的命令来完成安装:服务器

sudo yum install epel-release
复制代码

上面代码的意思是以 sudo 权限运行安装 epel-release,若是你当前登陆的用户不是 root,则会提示你输入密码来运行,输入密码时是看不到输入的内容的,因此不用担忧,继续输入就行。而后回车继续运行,后面的命令中若是包含 sudo 则都代表是刚提到的意思,再也不重复解释。并发

二、 输入如下命令来安装 Nginx:post

sudo yum install nginx
复制代码

若是这是您第一次从 EPEL 仓库中安装软件,yum 可能会提示您导入 EPEL GPG key:

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
Userid     : "Fedora EPEL (7) <epel@fedoraproject.org>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package    : epel-release-7-9.noarch (@extras)
From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Is this ok [y/N]:
复制代码

相似于上面的内容,遇到这种状况,输入 y,而后 Enter(回车) 便可继续安装。

三、 等到安装完成之后,能够经过如下命令来设置开机启动和运行 Nginx 服务:

设置 Nginx 开机启动:

sudo systemctl enable nginx
复制代码

运行以上命令之后,会输出相似如下的内容,表示建立了一个软链接来关联 Nginx,不用担忧,并非报错了,下一步就能够启动 Nginx 了。

Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
复制代码

启动 Nginx:

sudo systemctl start nginx
复制代码

经过运行如下命令,来检查 Nginx 的运行状态:

sudo systemctl status nginx
复制代码

而后会输出类型下面的内容

● nginx.service - The nginx HTTP and reverse proxy server
  Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
  Active: active (running) since Mon 2018-03-12 16:12:48 UTC; 2s ago
  Process: 1677 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 1675 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 1673 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Main PID: 1680 (nginx)
  CGroup: /system.slice/nginx.service
          ├─1680 nginx: master process /usr/sbin/nginx
          └─1681 nginx: worker process
复制代码

四、 若是你的服务器开启了防火墙,则须要同时打开 80(HTTP)和 443(HTTPS)端口

经过下面的命令来打开这两个端口:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
复制代码

国内的服务器厂商,安全组也可能会默认屏蔽这两个端口,好比 阿里云 和 腾讯云,若是在 第 5 步 时发现没法访问,能够自行百度一下如何放开这两个端口。

五、 验证 Nginx 是否成功启动,能够在浏览器中打开 http://YOUR_IP,您将看到默认的 Nginx 欢迎页面,相似于下图所示:

Welcome to Nginx

注:Nginx 的默认欢迎页有好几种样式,和你安装的版本有关,因此你们只用关注这个页面的大标题就好了 Welcome to nginx!

经过 systemctl 管理 Nginx

你能够像管理其余服务那样管理 Nginx。

启动 Nginx

sudo systemctl start nginx
复制代码

中止 Nginx

sudo systemctl stop nginx
复制代码

重启 Nginx

sudo systemctl restart nginx
复制代码

修改 Nginx 配置后,从新加载

sudo systemctl reload nginx
复制代码

设置开机启动 Nginx

sudo systemctl enable nginx
复制代码

关闭开机启动 Nginx

sudo systemctl disable nginx
复制代码

Nginx 的配置文件和最佳实践

  • 经过以上方式安装的 Nginx,全部相关的配置文件都在 /etc/nginx/ 目录中。
  • Nginx 的主配置文件是 /etc/nginx/nginx.conf
  • 为了使 Nginx 配置更易于维护,建议为每一个服务(域名)建立一个单独的配置文件。
  • 每个独立的 Nginx 服务配置文件都必须以 .conf 结尾,并存储在 /etc/nginx/conf.d 目录中。您能够根据需求,建立任意多个独立的配置文件。
  • 独立的配置文件,建议遵循如下命名约定,好比你的域名是 kaifazhinan.com,那么你的配置文件的应该是这样的 /etc/nginx/conf.d/kaifazhinan.com.conf,若是你在一个服务器中部署多个服务,固然你也能够在文件名中加上 Nginx 转发的端口号,好比 kaifazhinan.com.3000.conf,这样作看起来会更加友好。
  • 若是你的配置中有不少重复的代码,那么建议你建立一个 /etc/nginx/snippets 文件夹,在这里面存放全部会被复用的代码块,而后在各个须要用到的 Nginx 的配置文件中引用进去,这样能够更方便管理和修改。
  • Nginx 日志文件(access.logerror.log )位于 /var/log/nginx/ 目录中。建议为每一个独立的服务配置不一样的访问权限和错误日志文件,这样查找错误时,会更加方便快捷。
  • 你能够将要部署的代码文件,存储在任何你想的位置,可是通常推荐存放在下列位置中的其中一个:
    • /home/<user_name>/<site_name>
    • /var/www/<site_name>
    • /var/www/html/<site_name>
    • /opt/<site_name>
    • /usr/share/nginx/html

总结

首先恭喜你,你已经成功的在 CentOS 7 上安装了 Nginx 服务,你如今能够在你的服务器中经过 Nginx 部署你的服务代码啦,若是你打算在服务器中部署多个服务,你可能须要阅读这篇文章 How To Set Up Nginx Server Blocks on CentOS 7(待翻译)。

哦,对了,安全证书(HTTPS)是当今全部网站的“必备”功能。因此你能够阅读这篇文章 Secure Nginx with Let's Encrypt on CentOS 7(待翻译) 来学习如何经过 Let’s Encrypt SSL 生成免费的安全证书。

期待下次与你相见 : )

本文首发:开发指南:如何在 CentOS 7 上安装 Nginx

相关文章
相关标签/搜索