开发指南

开发指南 查看完整档案

填写现居城市  |  填写毕业院校开发指南  |  站长 编辑 kaifazhinan.com 编辑
编辑

开发指南-陪你从入门到精通
https://kaifazhinan.com

个人动态

开发指南 评论了文章 · 2019-02-19

2019 年如何在 CentOS 7 上安装最新版 Nginx

Nginx

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

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

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

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

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

开始前的准备

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

在 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 欢迎页面,类似于下图所示:

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
查看原文

开发指南 发布了文章 · 2019-02-19

如何在 CentOS 7 上生成 SSL 证书为 Nginx 加密

Nginx SSl

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

Let’s Encrypt 是由 Internet Security Research Group (ISRG) 开发的一个自由、自动化和开放的证书颁发机构。目前几乎所有的现代浏览器都信任由 Let’s Encrypt 颁发的证书。

这个教程,将会一步一步的教你如何在 CentOS 7 上通过 Certbot 来生成 SSL 安全证书,并配置到 Nginx 上。

开始前的准备

在继续此教程之前,请确保你已经满足了以下两个条件:

  • 请确保你已经拥有了一个属于你的域名,并且已经解析到了你的服务器 IP 上,在接下来的教程中,我将会用 kaifazhinan.com 作为本教程的域名。
  • 请确保你已经启用了 EPEL 仓库,并且已经安装了 Nginx,如果你还没有安装 Nginx,你可以先阅读 如何在 CentOS 7 上安装 Nginx 这篇文章来安装 Nginx。

安装 Certbot

Certbot 是一个非常简单方便的工具,它可以帮助我们生成 SSL 证书,自动更新 SSL 证书,并且将证书配置到 Web 服务上。

可以运行以下命令,从 EPEL 仓库中安装 Certbot:

sudo yum install certbot

生成 Dh (Diffie-Hellman) 组

Diffie–Hellman 密匙交换是一种可以在不安全的通信信道上安全交换密钥的方法。

现在运行以下命令,可以来生成一个新的 2048 位的 DH 参数:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
2048 位,生成时间大概 3-5 分钟左右。当然,如果您愿意也可以将大小改为 4096 位,但是这样的话,可能生成的时间至少需要花费 30 分钟,此操作具体时长取决于系统熵。

生成 SSL 证书

要生成域名的 SSL 证书,我们将使用 Webroot 插件在 ${webroot-path}/.well-known/acme-challenge 目录中创建临时文件来验证请求的域名。Let's Encrypt 服务器会向临时文件发出 HTTP 请求,以验证请求的域名是否被正确的解析到了正在运行 Certbot 的服务器。

为了简便,我们将把所有访问 .well-known/acme-challenge 的 HTTP 请求都映射到 /var/lib/letsencrypt 这个目录中。

下面的命令将会创建这个目录,并且使 Nginx 对它拥有读写的权限。

sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt

创建代码片段

为了避免 Nginx 配置文件中存在重复的代码,请创建以下两个代码片段(里面是 Nginx 的配置代码),我们将在相关的 Nginx 配置文件中包含这些片段:

1、首先,创建一个目录,用于存放 Nginx 配置的代码片段文件:

sudo mkdir /etc/nginx/snippets

2、创建第一个片段文件, letsencrypt.conf,其全路径为: /etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}

3、创建第二个片段文件,ssl.conf,其全路径为: /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

上面的代码中包含 Mozilla 的推荐部分。 支持 OCSP Stapling,HTTP 严格传输安全(HSTS)并强制执行几个以安全为中心的 HTTP 头。

加载 letsencrypt.conf

代码片段创建完成之后,就可以打开 Nginx 的域名独立配置文件,将 letsencrypt.conf 文件引入。

在这里,我们的域名是 kaifazhinan.com ,所以我们的配置文件为 kaifazhinan.com.conf, 文件的全路径为 /etc/nginx/conf.d/kaifazhinan.com.conf

server {
  listen 80;
  server_name kaifazhinan.com www.kaifazhinan.com;

  include snippets/letsencrypt.conf;
}

注意: 我们建议针对不同的域名,创建不同的独立配置文件。这样会比较清晰,便于管理和查找对应的配置。

Nginx 的主配置文件中有一行代码是 include /etc/nginx/conf.d/*.conf,这行代码的意思就是加载 /etc/nginx/conf.d/ 目录下所有以 .conf 结尾的配置文件,所以我们直接将独立的配置文件保存在 /etc/nginx/conf.d/ 目录下就会自动引入。

生成证书

重新加载 Nginx 配置使更改生效:

sudo systemctl reload nginx

你现在可以运行 Certbot 使用 Webroot 插件,为你的域名生成 SSL 证书:

sudo certbot certonly --agree-tos --email admin@kaifazhinan.com --webroot -w /var/lib/letsencrypt/ -d kaifazhinan.com -d www.kaifazhinan.com

注意: 记得将 admin@kaifazhinan.com 换成你自己的邮箱,还有 kaifazhinan.comwww.kaifazhinan.com 换成你的域名。

如果成功的生成了 SSL 证书,那么 Certbot 将打印类似以下的内容:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/kaifazhinan.com/privkey.pem
   Your cert will expire on 2019-02-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

配置 Nginx

现在你已经成功生成了 SSL 证书,现在可以修改 Nginx 的域名配置了,这里我们的域名是配置文件是 kaifazhinan.com.conf,文件的全路径是 /etc/nginx/conf.d/kaifazhinan.com.conf

server {
    listen 80;
    server_name www.kaifazhinan.com kaifazhinan.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.kaifazhinan.com;

    ssl_certificate /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/kaifazhinan.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/kaifazhinan.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://kaifazhinan.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name kaifazhinan.com;

    ssl_certificate /etc/letsencrypt/live/kaifazhinan.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/kaifazhinan.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/kaifazhinan.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # 如果有补充的配置,可以写在这里
}

上面的代码,我们将 HTTP 的请求重定向到了 HTTPS,将 www.kaifazhinan.com 重定向到了 kaifazhinan.com 上。

最后,通过下面的命令,重新加载 Nginx,使上面的配置生效:

sudo systemctl reload nginx

自动更新 Let’s Encrypt SSL 证书

Let’s Encrypt 颁发的 SSL 证书有效时间是 90 天。我们需要在证书过期之前自动续订证书,这里将创建一个每天运行两次的定时任务 ,并在证书到期前 30 天自动续订。

通过运行 crontab 命令,来创建一个定时任务:

sudo crontab -e

上面的命令,会自动创建一个文件,并自动进入编辑状态,所以直接复制下面的内容粘贴到里面即可:

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"

保存并关闭文件。

如果要测试是否能够正常更新证书,你可以在 certbot 命令后面添加 --dry-run 这个参数来主动触发更新命令。

sudo certbot renew --dry-run

如果没有输出错误,则表示 SSL 证书更新成功。

总结

通过此教程,你学会了:

  • 如何使用 Let’s Encrypt 客户端 Certbot 为你的域名创建了 SSL 证书;
  • 也通过创建 Nginx 的代码片段,来避免 Nginx 配置文件中的代码冗余,并且将 SSL 证书配置到了 Nginx 服务中;
  • 最后,你还创建了一个定时任务,来自动更新你的 SSL 证书,保证它不会过期。

如果你想了解 Certbot 的更多信息,可以参考它的官方文档

期待下次与你相见 : )

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

赞 1 收藏 1 评论 0

开发指南 评论了文章 · 2019-02-13

2019 年如何在 CentOS 7 上安装最新版 Nginx

Nginx

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

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

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

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

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

开始前的准备

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

在 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 欢迎页面,类似于下图所示:

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
查看原文

开发指南 发布了文章 · 2019-02-09

2019 年如何在 CentOS 7 上安装最新版 Nginx

Nginx

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

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

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

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

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

开始前的准备

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

在 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 欢迎页面,类似于下图所示:

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
查看原文

赞 34 收藏 19 评论 7

开发指南 关注了用户 · 2018-12-18

senntyou @senntyou

达则兼济天下,穷则独善其身。

关注 4274

开发指南 关注了标签 · 2018-12-18

css3

层叠样式表(英语:Cascading Style Sheets,简写CSS),又称串样式列表,由W3C定义和维护的标准,一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜色等)的计算机语言。目前最新版本是CSS2.1,为W3C的候选推荐标准。CSS3现在已被大部分现代浏览器支持,而下一版的CSS4仍在开发过程中。

关注 23324

开发指南 关注了标签 · 2018-12-18

webpack

Webpack 是一个前端资源加载/打包工具,只需要相对简单的配置就可以提供前端工程化需要的各种功能。

关注 4046

开发指南 关注了标签 · 2018-12-18

github

GitHub 是一个供“用Git进行版本控制系统的软件开发项目”使用的基于Web的代码托管服务,是目前全球最大的开源社交编程及代码托管网站。最开始由GitHub, Inc.(之前的Logical Awesome)的开发者Chris Wanstrath,PJ Hyett和Tom Preston-Werner使用Ruby on Rails和Erlang编写。该网站提供了更新订阅、关注、社交图谱等社交功能来显示开发者的开发过程,同时提供了项目开发常用的wiki、错误跟踪等其它功能。

关注 3872

开发指南 关注了专栏 · 2018-12-18

有赞技术

有赞技术相关内容

关注 6680

开发指南 关注了专栏 · 2018-12-18

让智慧更进一步

分享深度学习,机器学习相关的学习和使用心得。

关注 792

认证与成就

  • 获得 35 次点赞
  • 获得 0 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 0 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2018-12-18
个人主页被 641 人浏览