「这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战」。
作者:Mintimate
Mintimate's Blog,只为与你分享
Nginx
“Nginx 是一款轻量级的 HTTP 服务器,采用事件驱动的异步非阻塞处理方式框架,这让其具有极好的 IO 性能,时常用于服务端的反向代理和负载均衡。”
优点
Nginx的优点,相信大家基本都知道,这里列举一些:
轻量级
:Nginx相比Apache,并发性更好,CPU内存占用更少。但是对于批量的rewrite请求,Apache相应效率更高。高扩展性
:Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。高可靠性
:Nginx的高可靠性来自于其核心框架代码的优秀设计、模块设计的简单性;官方提供的常用模块都非常稳定,每个worker进程相对独立,master进程在1个worker进程出错时可以快速“拉起”新的worker子进程提供服务。热部署
:Nginx能够提供热部署功能,即可以在7×24小时不间断服务的前提下,升级Nginx的可执行文件。并且也支持不停止服务就更新配置项、更换日志文件等功能。
环境准备
本次安装Nginx,是在Debian发行版本的Linux上安装,如果是CentOS发行版本Linux,需要注意:
- 软件包管理安装需要使用
yum
,而不是apt-get
- 编译安装时,需要自行安装:
gcc
、pcre
、zlib
以及openssl
另外,如果你觉得本文的安装方法过于技术型。其实,也可以试试宝塔面板的一键操作。
本次教程使用一台Debian10 x64服务器:
软件包安装Nginx
Debian使用apt-get作为软件包管理器,所以我们可以使用apt-get直接安装dpkg,进而安装Nginx:
sudo apt install nginx
安装完以后,输入
whereis nginx
查看Nginx的安装位置:
其中的
nginx.conf
为Nginx的配置文件。
这样的方法很简单,也十分快;但是坏处也很明显:
- 无法自定义Nginx模块
Docker安装Nginx
查找镜像
Docker安装Nginx其实和dpkg安装差不多,在安装了Docker情况下:
# 查找Nginx
docker search nginx
如果没有Docker,可以用Docker脚本安装:
curl -sSL https://get.daocloud.io/docker | sh
拉取镜像
使用命令拉取镜像到本地
docker pull nginx
本地文件
有了Docker,当然还要有文件映射。所以,我们事先创建一下:
mkdir -p nginx/{conf,conf.d,html,logs}
之后,插件nginx.conf
文件:
vim nginx/conf/nginx.conf
Demo:
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
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;
keepalive_timeout 65;
client_max_body_size 1024m;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
插件默认配置文件:
vim nginx/conf.d/defaut.conf
参考模版:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}
最后,创建一个Nginx Demo页面:
vim nginx/html/index.html
启动镜像
现在就可以取启动镜像了。
之后,查看镜像ID:
docker images nginx
根据ID,创建Docker容器,并完成80端口的映射以及目录映射:
docker run -d -p 80:80 -v /root/myApplication/web/nginx/html:/usr/share/nginx/html -v /root/myApplication/web/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/myApplication/web/nginx/conf.d:/etc/nginx/conf.d -v /root/myApplication/web/nginx/logs:/var/log/nginx c316d5a335a5
此时,浏览器登陆即可看到Nginx页面:
总的来说,Docker安装的Nginx,我觉得配置起来,和dpkg安装Nginx
差不多。
常用Nginx命令
这边给大家介绍一些Nginx常用命令:
命令 | 命令含义 |
---|---|
nginx | 打开 nginx |
nginx -t | 测试配置文件是否有语法错误 |
nginx -s reopen | 重启Nginx |
nginx -s reload | 重新加载Nginx配置文件 |
nginx -s stop | 强制停止Nginx服务 |
nginx -s quit | 安全地停止Nginx服务(即处理完所有请求后再停止服务) |
软件包安装的Nginx可以直接在主终端内运行命令;Docker安装的Nginx,可以进入容器内运行。
如何卸载Nginx
如果想换安装Nginx的安装方式,已经安装的Nginx如何卸载呢?
dpkg卸载Nginx
如果你使用的是dpkg安装的Nginx,安装很简单,卸载也一样:
# 查看所有Nginx组件
dpkg --get-selections|grep nginx
之后卸载:
apt --purge remove \*nginx\*
docker卸载Nginx
如果你使用Docker安装的Nginx,卸载也很简单:
# 查看Nginx镜像ID
docker images
获取ID后,根据ID卸载即可:
docker rmi c316d5a335a5
如果删除失败,比如:
我们先停止运行容器:
docker ps -a
docker rm $ID
docker rmi $ID
这样Nginx就已经卸载完成了
END
其实呢?个人是喜欢编译安装Nginx。
下次文章就教大家怎么编译安装Nginx
不过,其实宝塔面板的Nginx也很不错,新版本也可以选择模块编译安装,但是总有些大佬,觉得面板部署没有“灵魂”。这里不过多介绍。
如果你平时喜欢用Docker,可以试试Docker安装,Docker的第三方库,应该是可以安装模块的,或者有集成模块。
Nginx确实是个Web服务器神器呢~~~