如何在CentOS 8上安装和使用Nginx

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

如何在CentOS Enterprise Linux 8服务器上安装,设置和配置Nginx服务器。、

如何在CentOS 8 Linux服务器上安装Nginx?
如何使用CLI在CentOS Linux 8服务器上配置最新版本的Nginx Web服务器并托管一个静态站点?

Nginx [engine X]是一个免费的开源高性能Web服务器。
它还充当反向代理服务器和负载平衡器。

本教程将学习如何在CentOS 8上安装Nginx以及如何使用CLI配置静态网站。

如何在CentOS 8上安装Nginx

在CentOS Linux 8上安装Nginx Web服务器的过程如下:

  • 搜索Nginx软件包:sudo yum search nginx
  • 在CentOS 8上使用yum命令安装nginx软件包:sudo yum update sudo yum install nginx
  • 更新防火墙设置并打开TCP端口80和443。运行:sudo firewall-cmd --permanent --zone = public --add-service = https --add-service = http sudo firewall-cmd --reload

让我们详细查看所有命令和示例。

步骤1更新系统

保持系统,内核和更新所有已安装程序包的安全性是系统管理员的一项基本任务。
因此,更新系统,运行:

$ sudo yum updateinfo
$ sudo yum update
## Reboot the system if a new kernel update was installed ##
$ sudo reboot

步骤2搜索Nginx软件包

我的Linux发行版中是否提供Web服务器?
让我们找出:

$ sudo yum search nginx
$ sudo yum list nginx

我要安装什么版本的Nginx?
获取要安装的Nginx版本信息,执行:

$ sudo yum info nginx

输出示例:

Last metadata expiration check: 0:16:18 ago on Mon Jun  8 10:07:04 2020.
Available Packages
Name         : nginx
Epoch        : 1
Version      : 1.14.1
Release      : 9.module_el8.0.0+184+e34fea82
Architecture : x86_64
Size         : 570 k
Source       : nginx-1.14.1-9.module_el8.0.0+184+e34fea82.src.rpm
Repository   : AppStream
Summary      : A high performance web server and reverse proxy server
URL          : http://nginx.org/
License      : BSD
Description  : Nginx is a web server and a reverse proxy server for HTTP, SMTP,
             : POP3 and IMAP protocols, with a strong focus on high
             : concurrency, performance and low memory usage.

我们可以使用以下dnf命令列出所有Nginx模块流,它们的配置文件和状态:

$ sudo yum module list nginx

默认版本为1.14,但我们也可以安装版本1.16。
它说的是:

Last metadata expiration check: 0:18:57 ago on Mon Jun  8 10:07:04 2020.
CentOS-8 - AppStream
Name            Stream            Profiles            Summary                 
nginx           1.14 
-           common 
-           nginx webserver         
nginx           1.16              common              nginx webserver         

Hint: 
- efault, 
- nabled, [x]disabled, [i]nstalled

想要试用1.16版吗?
尝试以下命令:

$ sudo yum module reset nginx
$ sudo yum module enable nginx:1.16
## verify it version set to 1.16 ##
$ sudo yum module list nginx

在CentOS 8上启用并安装Nginx版本1.16

步骤3在CentOS 8上安装Nginx

要安装最新的稳定的nginx服务器,请运行以下yum命令:

$ sudo yum install nginx

步骤4启用Nginx服务器

首先,通过运行systemctl命令启用nginx服务,使其在服务器启动时启动:

$ sudo systemctl enable nginx

输出示例:

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service ? /usr/lib/systemd/system/nginx.service.

启动服务,运行:

$ sudo systemctl start nginx

启动/停止/重启Nginx服务器的命令

根据需要运行命令。

$ sudo systemctl start nginx ## <-- start the server ##
$ sudo systemctl stop nginx ## <-- stop the server ##
$ sudo systemctl restart nginx ## <-- restart the server ##
$ sudo systemctl reload nginx ## <-- reload the server ##
$ sudo systemctl status nginx ## <-- get status of the server ##

步骤5使用firewall-cmd打开端口80和443

您必须使用firewall-cmd命令打开并启用端口80和443:

$ sudo firewall-cmd --permanent --zone=public --add-service=http --add-service=https
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-services --zone=public

防火墙配置以打开http/https端口

步骤6进行测试

使用ss命令命令验证是否打开了TCP端口80或443:

$ sudo ss -tulpn

示例输出(注意:80和:443行):

Netid       State         Recv-Q        Send-Q                    Local Address:Port               Peer Address:Port                                                                                               
udp         UNCONN        0             0                     10.147.164.2%eth0:68                      0.0.0.0:*           users:(("NetworkManager",pid=50,fd=15))                                                
tcp         LISTEN        0             128                             0.0.0.0:80                      0.0.0.0:*           users:(("nginx",pid=1316,fd=6),("nginx",pid=1315,fd=6),("nginx",pid=1314,fd=6))        
tcp         LISTEN        0             128                                [::]:80                         [::]:*           users:(("nginx",pid=1316,fd=7),("nginx",pid=1315,fd=7),("nginx",pid=1314,fd=7)) 
tcp         LISTEN        0             128                                [::]:443                         [::]:*           users:(("nginx",pid=1316,fd=7),("nginx",pid=1315,fd=7),("nginx",pid=1314,fd=7))

如果您不知道服务器的IP地址,请运行以下ip命令:

$ ip a

输出示例:

1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
6: eth0@if7: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 00:16:3e:6b:8d:f7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.147.164.2/24 brd 10.147.164.255 scope global dynamic noprefixroute eth0
       valid_lft 3067sec preferred_lft 3067sec
    inet6 fe80::216:3eff:fe6b:8df7/64 scope link 
       valid_lft forever preferred_lft forever

启动网络浏览器,然后输入URL(域名)/IP地址:

http://10.147.164.2

在CentOS Enterprise Linux 8服务器上运行的Nginx

也可以使用cli命令使用cli获取相同的信息:

$ curl -I http://10.147.164.2
$ curl http://10.147.164.2

步骤7配置Nginx服务器

现在您知道了如何在CentOS 8服务器上安装Nginx。
现在该学习配置选项了:

  • 配置目录/etc/nginx /
  • Maibn全局配置文件/etc/nginx/nginx.conf
  • Nginx80(HTTP),443(HTTPS)打开的TCP端口
  • 默认的Web文档根目录/usr/share/nginx/html
  • 访问日志文件/var/log/nginx/access.log
  • 错误日志文件/var/log/nginx/error.log

要编辑文件,请使用文本编辑器,例如vi命令/nano命令:

$ sudo vi /etc/nginx/nginx.conf

输出示例:

# For more information on configuration, see:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
 
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
 
events {
    worker_connections 1024;
}
 
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
 
    access_log  /var/log/nginx/access.log  main;
 
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
 
    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;
 
    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;
 
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;
 
        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;
 
        location / {
        }
 
        error_page 404 /404.html;
            location = /40x.html {
        }
 
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}

在这里查看Nginx服务器文档。
您可以将html/css/js和镜像上传或复制到/usr/share/nginx/html /

$ cd /usr/share/nginx/html/
$ sudo cp /backups/theitroad.local/*.html .
$ sudo cp /backups/theitroad.local/*.css .

使用rsync命令或scp命令/sftp命令从本地桌面复制到远程服务器:

$ rsync ~/projects/static/www.theitroad.local/prod/* [email protected]:/usr/share/nginx/html/

步骤8设定虚拟网域/主机

让我们通过执行以下useradd命令为虚拟主机创建一个新用户:

$ sudo useradd -d /home/theitroad.local -m -k /dev/null -s /usr/sbin/nologin cbz-www

其中:

  • -d /home/theitroad.local:主目录,用于存储名为theitroad.local的虚拟域的所有文件
  • -m:建立一个新目录来存储文件。
  • -k/dev/null:不要在目录中创建任何点文件。
  • -s/usr/sbin/nologin:不允许cbz-www用户登录服务器。这是一项安全功能。
  • cbz-www:我的虚拟域的用户名theitroad.local

锁定Linux用户帐户,执行:

$ sudo passwd -l cbz-www

接下来,使用mkdir命令创建html目录:

$ sudo mkdir -pv /home/theitroad.local/html
`mkdir: created directory '/home/theitroad.local/html'`

最后,使用文本编辑器(例如vim命令/nano命令)制作如下示例html页面以进行测试:

$ sudo vim /home/theitroad.local/html/index.html
<html>
<head>
<title>www.theitroad.local - welcome to my sweet home page</title>
</head>
<body>
<h2>www.theitroad.local - virtual domain</h2>
<p>This is a test page running on:</p>
<ul>
	 <li>CentOS Linux 8.0</li>
	 <li>Nginx web server</li>
</ul>
<hr>
<small>Send all feedback and errors to me @ [email protected]</small>
</body>
</html>

使用chown命令/[nicmd name = chmod]设置权限,并使用chcon命令更正SELinux权限:

$ sudo chmod -R 0555 /home/theitroad.local/
$ sudo chown -R cbz-www:cbz-www /home/theitroad.local/

使用正确的配置选项创建虚拟域/主机阻止文件:

$ sudo vim /etc/nginx/conf.d/theitroad.local.conf

追加以下指令:

server {
   ## Listen to TCP port 80 ##
        listen 80;
        listen [::]:80;
 
   ## Set document web root to directory ##
        root /home/theitroad.local/html;
        index index.html;
 
   ## Set virtual domain/host name here ##
        server_name theitroad.local www.theitroad.local;
 
   ## Set default access and error log file ##
        access_log  /var/log/nginx/theitroad.local_access.log  main;
        error_log /var/log/nginx/theitroad.local_error.log;
 
   ## Set default error ##
        location / {
                try_files $uri $uri/ =404;
        }
}

检查Nginx的语法错误:

$ sudo nginx -t

如果没输出,则表示没问题

重新加载Nginx服务器:

$ sudo nginx -s reload
## or ##
$ sudo systemcl reload nginx

启动一个网络浏览器,然后输入虚拟域URL。
例如:

http://your-domain-name-here
http://www.theitroad.local

步骤9查看日志文件

使用tail命令/cat命令或grep命令/egrep命令,如下所示:

$ sudo cat /var/log/nginx/theitroad.local_access.log
$ sudo grep 'GET /foo' /var/log/nginx/theitroad.local_access.log
$ sudo tail -f /var/log/nginx/theitroad.local_error.log