如何在Ubuntu 20.04 LTS上安装Nginx
如何在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