如何在Ubuntu 20.04 LTS上安装Nginx

时间:2020-01-09 10:39:24  来源:igfitidea点击:

如何在Ubuntu 20.04 LTS Linux服务器上安装Nginx?

Nginx是用于提供动态和静态页面的高性能Web服务器。
它可以在独立和反向代理模式下工作。

让我们看看如何在Ubuntu 20.04 LTS Linux服务器上安装Nginx。

如何在Ubuntu 20.04 LTS上安装Nginx

确保您的系统是最新的并且已修补。
为此,请执行以下apt命令:

$ sudo apt update
$ sudo apt upgrade

步骤1安装Nginx服务器

现在,Ubuntu已更新了最新补丁,现在该安装Nginx软件了。
换句话说,执行以下apt命令:

$ sudo apt install nginx

步骤2确保Nginx服务在启动时启动

我们将如下使用systemctl命令来启用nginx.service:

$ sudo systemctl is-enabled nginx.service

如果未启用nginx.service,请启用它:

$ sudo systemctl enabled nginx.service

在Ubuntu云服务器上管理Nginx服务

要启动,停止,重新启动,然后再次根据需要使用以下命令查找服务状态。

启动Nginx服务
$ sudo systemctl star nginx.service
停止Nginx服务
$ sudo systemctl start nginx.service
重新启动Nginx服务
$ sudo systemctl restart nginx.service
优雅地重新加载Nginx服务器
$ sudo systemctl reload nginx.service
获取Nginx服务器的状态
$ sudo systemctl status nginx.service

步骤3使用UFW防火墙打开Nginx端口80和443

您需要执行以下ufw命令为所有人打开TCP端口80和443:

$ sudo ufw allow 80/tcp comment 'accept HTTP Nginx'
$ sudo ufw allow 443/tcp comment 'accept HTTPS/TLS Nginx connections'

验证端口状态:

$ sudo ufw status

步骤4找到您的Ubuntu 20.04 LTS服务器静态IP地址

执行以下任一命令:

$ hostname -I
$ ip a
$ ip a s eth0

我的AWS EC2 IP地址:

172.26.9.151

您还可以按照以下方式使用dig命令/主机命令从CLI查找公共IPv4/IPv6地址:

$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
52.42.113.13

有关更多信息,请参见如何在Linux上的命令行中找到我的公共IP地址。

步骤5在Ubuntu上测试您的Nginx服务器安装

在此阶段,您可以使用curl命令,如下所示:

$ curl -I http://172.26.9.151
$ curl -I http://52.42.113.13

如果已映射域名,并且A dns记录设置为52.42.113.13,请尝试:

$ curl -I http://your-domian-name-here
$ curl -I http://www.theitroad.local
HTTP/1.1 200 OK
Server: nginx/1.17.10 (Ubuntu)
Date: Fri, 05 Jun 2020 17:00:01 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Fri, 05 Jun 2020 16:37:04 GMT
Connection: keep-alive
ETag: "5eda74b0-264"
Accept-Ranges: bytes

当然,我们可以打开Web浏览器(例如Chrome或Firefox/Safari),然后按如下所示执行URL:

http://your-server-ip
http://172.26.9.151

基本配置

编辑/etc/nginx/nginx.conf文件,该文件是主服务器配置文件:

$ sudo nano /etc/nginx/nginx.conf

增加工作人员联系:

worker_connections 1024;

保存并关闭文件。

Nginx的其他重要信息:

  • 默认HTTP端口80
  • 默认的HTTPS端口443
  • Nginx服务器的用户和组www-data
  • Nginx DocumentRoot/var/www/html /
  • Nginx配置目录/etc/nginx /
  • nginx全局配置文件/etc/nginx/nginx.conf
  • 虚拟域/主机配置目录/etc/nginx/sites-available /
  • 当前启用的域/主机配置目录/etc/nginx/sites-enabled /
  • 各种配置选项/etc/nginx/snippets /
  • nginx服务器日志文件/var/log/nginx/access.log
  • nginx服务器错误日志文件/var/log/nginx/error.log

步骤6配置Nginx虚拟主机

为您的域创建一个配置文件,如下所示:

$ sudo nano /etc/nginx/sites-available/your-domain-name.conf

追加以下配置:

# Replace your-domain-name-here with your actual domain name such as www.theitroad.local
server {
	listen 80;
	listen [::]:80;
 
	server_name your-domain-name-here www.your-domain-name-here;
 
	root /home/your-domain-name-here/html;
	index index.html;
        access_log  /var/log/nginx/www.your_domain_name_access.log;
        error_log  /var/log/nginx/www.your_domain_name_error.log;
 
	location / {
		try_files $uri $uri/ =404;
	}
}

为您的域创建一个新的Ubuntu 20.04用户

运行以下useradd命令

$ sudo useradd -d /home/your-domain-name-here -m -k /dev/null -s /usr/sbin/nologin usernamehere

其中:

  • -d/home/your-domain-name-here:设置新帐户的主目录以提供DocumentRoot。
  • -m:确保我们创建由-d选项设置的用户主目录。
  • -k/dev/null:避免为Nginx虚拟域DocumentRoot创建点文件,该文件可以通过使用/dev/null作为备用框架目录来公开敏感信息。
  • -s/usr/sbin/nologin:将新帐户的登录shell设置为/usr/sbin/nologin,以使Web服务器用户无法使用ssh或任何其他方法登录到我们的系统。同样,这是一项安全功能。
  • usernamehere:将为我们的虚拟域存储文件的用户名。

确保我们锁定了Linux用户帐户,执行:

$ sudo passwd -l usernamehere
`passwd: password expiry information changed.`

使用mkdir命令创建html文件夹:

$ sudo mkdir -pv /home/your-domain-name-here/html/

创建一个示例html页面,如下所示:

$ sudo nano /home/your-domain-name-here/html/index.html
<html>
<head>
<title>www.theitroad.local - welcome nginx website</title>
</head>
<body>
<h2>www.theitroad.local (virtual host)</h2>
<p>This is a test page running on:</p>
<ul>
	 <li>Ubuntu Linux 20.04 LTS</li>
	 <li>Nginx server</li>
</ul>
<hr>
<small>Got a feedback? Email us @ [email protected]</small>
</body>
</html>

使用chown命令设置权限:

$ sudo chown -R usernamehere:usernamehere /home/your-domain-name-here/

打开新创建的虚拟域,运行:

$ sudo ln -v -s /etc/nginx/sites-available/your-domain-name.conf /etc/nginx/sites-enabled/
`'/etc/nginx/sites-enabled/your-domain-name.conf' -> '/etc/nginx/sites-available/your-domain-name.conf'`

测试Nginx虚拟主机配置:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

您必须收到" Syntax is OK"消息,然后在Ubuntu Linux上重新启动Nginx服务器:

$ sudo systemctl reload nginx.service

将您的域A和AAAA记录设置为服务器的公共IPv4/IPv6地址并对其进行测试:

http://www.theitroad.local