如何在CentOS 8上安装和使用Nginx
如何在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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
- Nginx
80
(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