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

Nginx 可以作为一个独立的 Web 服务,也可以用来给 Apache 或是其他的 Web 服务做反向代理。

相比于 Apache,Nginx 可以处理更多的并发连接,而且每个连接的内存占用的非常小。

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

开始前的准备

在开始阅读此教程之前,请确保你是以拥有 sudo

在 CentOS 中安装 Nginx

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

1、 EPEL 仓库中有 Nginx 的安装包。如果你还没有安装过 EPEL,可以通过运行下面的命令来完成安装:



sudo yum install epel-release


sudo 权限运行安装 epel-release,如果你当前登录的用户不是 root,则会提示你输入密码来运行,输入密码时是看不到输入的内容的,所以不用担心,继续输入就行。然后回车继续运行,后面的命令中如果包含 sudo

2、 输入以下命令来安装 Nginx:



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(回车)

3、 等到安装完成以后,可以通过以下命令来设置开机启动和运行 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



4、 如果你的服务器开启了防火墙,则需要同时打开 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 步 时发现无法访问,可以自行百度一下如何放开这两个端口。

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

安装centos stream 9教程 如何安装centos_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 的配置文件和最佳实践



1、通过以上方式安装的 Nginx,所有相关的配置文件都在 /etc/nginx/ 目录中。

2、Nginx 的主配置文件是 /etc/nginx/nginx.conf。

3、为了使 Nginx 配置更易于维护,建议为每个服务(域名)创建一个单独的配置文件。

4、每一个独立的 Nginx 服务配置文件都必须以 .conf 结尾,并存储在 /etc/nginx/conf.d 目录中。您可以根据需求,创建任意多个独立的配置文件。

5、独立的配置文件,建议遵循以下命名约定,比如你的域名是 kaifazhinan.com,那么你的配置文件的应该是这样的 /etc/nginx/conf.d/kaifazhinan.com.conf,如果你在一个服务器中部署多个服务,当然你也可以在文件名中加上 Nginx 转发的端口号,比如 kaifazhinan.com.3000.conf,这样做看起来会更加友好。

6、如果你的配置中有很多重复的代码,那么建议你创建一个 /etc/nginx/snippets 文件夹,在这里面存放所有会被复用的代码块,然后在各个需要用到的 Nginx 的配置文件中引用进去,这样可以更方便管理和修改。

7、Nginx 日志文件(access.log 和 error.log )位于 /var/log/nginx/ 目录中。建议为每个独立的服务配置不同的访问权限和错误日志文件,这样查找错误时,会更加方便快捷。

8、你可以将要部署的代码文件,存储在任何你想的位置,但是一般推荐存放在下列位置中的其中一个:

  • /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)是当今所有网站的“必备”功能。所以你可以阅读这篇文章 《如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密》  来学习如何通过 Let’s Encrypt SSL 生成免费的安全证书。

期待下次与你相见 : )