如何在CentOS 7上安装和配置Nginx

作者: Chris Dean, April 5, 2018
翻译:陈同学
原文链接: How to install and configure NGINX on CentOS 7
备注:已省略作者的前言部分

什么是Nginx?

Nginx 于2004年发布,并迅速成为 Apache Web服务器的替代品. 与Apache的流程驱动(process-driven)设计相比,它的事件驱动(event-driven) 设计能够更好的利用当今计算机的硬件。

因此,Nginx通常被认为是比Apache更“高性能”的选择,它能以更少的资源处理更大的并发负载。

Apache和Nginx之间已经有许多的比较,这次我们不关心社区的争论,不过到底是选择Apache还是Nginx,有这么几个关键点:

Apache或Nginx真的适合你吗?

如果符合以下场景,Nginx或许是更好的选择。

  • 服务器上部署了高流量的站点
  • 具备技术能力去设置和调整Nginx的高级配置
  • 希望使用新的Web开发框架
  • 希望使用像WSGI这样的CGI/FastCGI替代品
  • 能适应更少的附件(add-ons)、组件、模块
  • 能适应更复杂的配置

如果符合以下场景,可以继续使用Apache。

  • 还在使用传统的Mysql/PHP应用,例如:WordPress、Drupal
  • 计划代理多个不同配置的站点,每个站点通过.htacess来配置
  • 喜欢更有名气、有完整文档的平台
  • 希望使用多种不同的模块、附件、组件
  • 希望Web服务器能够开箱即用且稳定运行

值得借鉴的经验是:如果你想使用高级配置运行单个高流量站点,Nginx更为合适;如果你想使用简单灵活的配置部署多个站点,那么Apache依然是你的菜

总而言之,对于大多数站点来说,Nginx和Apache都是不错的选择。Apache内置在各主流Linux系统中而且只需要少量的配置,但同时很多测试也表明Nginx性能更好。至于到底怎么选,这取决于你打算用它来做什么。

安装前的准备工作

开始之前,请你先确认以下事项:

  • 一台CentOS服务器:如果你在开发一个轻量级项目或刚开始使用,推荐你首先了解下GoDaddy VPS 计划。如果你准备深入学习,Dedicated server 计划更适合你。
  • 一个域名:当然,我们需要将一个域名绑定到Nginx服务器。文中例子将使用yourdomain.com这个域名,实际使用时你需要把它替换成你自己的域名。
  • SSH工具:需要一个可以连接到服务器的SSH客户端工具,例如:PuTTY、PowerShell(Windows)、Terminal(Mac)。如果这一步你觉得很难,由于文本大多数操作都是通过命令行,因此本文可能不太适合你。
  • 搜索能力:Nginx有许多可定制的特性,本文不会全部提及,你可以根据自己的需求去检索。搜索引擎是个好帮手。

如果以上条件都具备,那咱就开始吧!

安装步骤

第一步:连接到服务器

通过SSH工具连接到服务器,再切换到root用户.

扫描二维码关注公众号,回复: 1440425 查看本文章
sudo su -

[可选]安装nano文本编辑器

如果你不是VIM的粉丝,你会发现nano编辑器使用更加简单。nano需要你进行手动安装:

yum install nano

第二步:禁用Apache

现主流Linux服务器会内置Apache,和Windows内置IIS类似。

虽然我们为Nginx分配了专用空间,但残留的Apache配置依然可能影响Nginx的运行。因此需要禁用Apache,确保重启之后Apache不会跟着自动启动。

停止Apache. 注意:该操作将中断所有与Apache的连接

service httpd stop

现在,禁用Apache. 禁用之后Apache将不再开机启动

systemctl disable httpd

第三步:安装Nginx

现在我们已禁用了Apache,可以开始安装Nginx.

首先,需要安装CentOS EPEL包

yum install epel-release

安装Nginx

yum -y install nginx

启动Nginx

service nginx start

你可能遇到nginx.conf “test failed”的错误信息?

你可能正在处理IP地址问题,Nginx默认会监听IPv4和IPv6,如果你的服务器不支持IPv6,将会出现以上情况。

可以修改配置文件/etc/nginx/nginx.conf解决该问题:

注释以下配置

listen [::]:80 default_server;

注释后为:

# listen [::]:80 default_server;

保存文件并重启Nginx

service nginx start

如果你在安装过程中未遇到任何问题,请继续。

配置Nginx开机启动

systemctl enable nginx

此时,通过访问机器的IP地址你将看到Nginx的测试页面。

第四步:让Nginx代理你的域名

好了,我们已成功的从Apache切换到了Nginx,现在继续配置你自己的域名。

创建一个新的网站根目录

如果需要代理多个Web站点,最好遵循标准的命名规定。

我们将遵守cPanel,mk所使用的标准,通过public_html作为我们的网站根目录,如下所示:

mkdir -p /var/www/yourdomain.com/public_html

在该目录下创建一个index.html页面,便于我们后续的测试:

nano /var/www/yourdomain.com/public_html/index.html

在文件中添加一个简单行即可:

Hello World!

为了外部能够正常访问,我们需要配置文件夹权限:

chmod 755 /var/www/yourdomain.com/public_html

现在,文件夹已设置好,可以访问index.html来进行测试。

第五步:让Nginx识别server blocks

我们可以通过Apache的虚拟主机(Virtual Hosts)在一台机器上代理多个Web站点,通过这种路由指令将域名指向服务器上特定的目录。

Nginx通过”server blocks”路由方式替换了Apache的虚拟主机方式,这两种方式十分类似,只是配置文件不同。

首先,配置server blocks的目录:

mkdir /etc/nginx/sites-available
mkdir /etc/nginx/sites-enabled

提示:我们也可以不创建上述目录结构,变更下Nginx的全局配置文件(nginx.conf)即可. 然而,如果需要添加多个站点,以目录树的方式(基于Debian的Linux系统都会这样处理,如:Ubuntu)会更加方便配置。

现在,在nginx.conf中进行配置,让Nginx可以识别我们为server blocks创建的目录

nano /etc/nginx/nginx.conf

将下面的行添加到 http{} 部分的后面:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

现在,Nginx已经可以识别server blocks了。

在server blocks下为yourdomain.com站点创建一个新的文件:

nano /etc/nginx/sites-available/yourdomain.com.conf

我们将在文件中创建一个新的Nginx block:

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

   location / {
      root /var/www/yourdomain.com/public_html;
      index index.html index.htm;
      try_files $uri $uri/ =404;
   }

   error_page 500 502 503 504 /50x.html;
   location = /50x.html {
      root html;
   }
}

让我们了解下server block的几个重要组成部分:

  • server_name:这是你将使用的域名,相比localhost,我们一般使用公共域名和www版本的域名,如下:
server_name yourdomain.com www.yourdomain.com;
  • root:站点文件的根目录
root /var/www/yourdomain.com/public_html;
  • try_files:这句的意义是当访问的文件不存在时,让服务器返回404错误
try_files $uri $uri/ =404;

通过这些参数来创建你的server block,现在保存该文件。

在sites-available和sites-enabled之间创建一个软连接

ln -s /etc/nginx/sites-available/yourdomain.com.conf /etc/nginx/sites-enabled/yourdomain.com.conf

最后,重启Nginx.

service nginx restart

搞定! 通过DNS或hosts文件指向你的域名,你就可以在浏览器中通过域名访问我们刚创建的测试HTML文件了。

结语

恭喜,现在你已经在CentOs 7上成功运行Nginx了!

你成功的禁用了服务器上的Apache,使用了更棒的Nginx Web服务器,现在你可以自由部署你的站点了。

另外,Nginx有许多高级配置用于性能优化。如果需要其他配置,推荐你重新阅读Nginx的官方文档

猜你喜欢

转载自blog.csdn.net/myle69/article/details/80261261
今日推荐