如何在Ubuntu16.04上安装Nginx

简介

Nginx(发音同engine x)是一个 Web服务器,也可以用作反向代理负载平衡器HTTP缓存。 —-wikipedia

本文将大致介绍如何在Ubuntu 16.04服务器上安装Nginx。参考于博文:How To Install Nginx on Ubuntu 16.04,感谢博文作者的辛勤劳动。

预备条件

开始安装之前,确保以具有sudo权限的用户身份执行接下来的命令,如果没有的话,这篇博文:initial server setup guide for Ubuntu 16.04是一个不错的教程。

一切就绪以后,以非Root用户身份登录Ubuntu服务器。

第一步: 安装Nginx

Ubuntu 的官方源已经包含了Nginx,我们可以通过官方源安装它。

1
2
$ sudo apt-get update
$ sudo apt-get install nginx

不出意外地话,Nginx已经安装完毕。

第二步:调整设置防火墙

ufw是一个主机端的iptables类防火墙配置工具。

如果服务器上还没有安装ufw的话,可以通过apt安装它,ufw的一般使用方法可以在这里查看。

1
$ sudo apt-get install ufw

通过调整防火墙使得Nginx服务可以正常运行。通过命令

1
$ sudo ufw app list

可以列出ufw知道如何配置的应用程序,如下:

1
2
3
4
5
6
# Output
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

和Nginx有关的项目解释如下:

  • Nginx Full:负责打开80端口(常用的,未加密的网络流量)和443端口(TLS/SSL 加密流量)
  • Nginx HTTP: 只打开80端口(常用的,未加密的网络流量)
  • Nginx HTTPS :只打开443端口(TLS/SSL 加密流量)

安全起见,应该选择配置限制条件最严格的设置,例如:

1
2
3
$ sudo ufw enable # 开启ufw
$ sudo ufw default deny # 阻止一切外部访问
$ sudo ufw allow server_your_want # 依需要开启服务

目前网站还未配置SSL连接,所以我们只打开80端口。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$ sudo ufw allow 'Nginx HTTP'
$ sudo ufw status # 查看开启情况
# Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

第三步:检查Web服务

经过上面的安装和设置以后,Ubuntu 16.04 应该已经启动了Nginx服务,使用systemd命令查看启动情况。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$ systemctl status nginx
# Output
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enab
   Active: active (running) since Sun 2016-10-12 11:07:55 UTC; 1 day 2h ago
  Process: 1120 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=e
  Process: 1083 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on
 Main PID: 1159 (nginx)
    Tasks: 2
   Memory: 10.7M
      CPU: 154ms
   CGroup: /system.slice/nginx.service
           ├─1159 nginx: master process /usr/sbin/nginx -g daemon on; master_proce
           └─1161 nginx: worker process 

通过标识Active:active(running)可知Nginx服务已经正常运行了。虽然Nginx服务已经启动 ,但是真正的通过域名或者IP地址访问服务器能更直观地感受到Nginx的运行状况。关于域名申请,有空的话我会再写一篇博客。

如果已经有了能正确解析到服务器上的域名或者知道服务器的IP地址,在本地浏览器地址栏输入:

http://server_domain_or_IP

访问服务器,不出意外地话可以看到Nginx经典的默认欢迎界面了。

第四步:管理Nginx

常用的几个管理Nginx命令。

1
2
3
4
5
6
$ sudo systemctl stop nginx # 停止Web服务
$ sudo systemctl start nginx # 开启Web服务
$ sudo systemctl restart nginx # 重启Web服务
$ sudo systemctl reload nginx # 修改Nginx配置文件后可以保持连接地重新载入Nginx
$ sudo systemctl disable nginx # 关闭Nginx的默认自启动
$ sudo systemctl enable nginx # 开启Nginx的默认自启动

第五步:熟悉几个重要的Nginx文件和目录

网站内容

  • /var/www/html:默认的网站内容存放目录,先前的Nginx欢迎界面就存放在这。可以通过修改Nginx配置文件更改。

服务器配置

  • /etc/nginx:Nginx配置文件,修改它配置Nginx全局设置。
  • /etc/nginx/sites-available/:虚拟主机的目录,可在此创建多个虚拟主机。
  • /etc/nginx/sites-enabled/:Nginx默认站点目录,nginc.conf默认包含的文件夹。在此文件夹建立的站点,需要建立软连接到目录/etc/nginx/sites-enabled/里。

注:此段内容部分来自博文

服务日志

  • /var/log/nginx/access.log:如无其他设置,此文件记录了每一次的网页服务请求。
  • /var/log/nginx/error.log:Nginx错误请求记录文件。

That’s all!更多的Nginx文档请参阅官方文档