学习
实践
活动
专区
工具
TVP
写文章
专栏首页Mintimate's Blog一篇文章、三种方法在Debian上轻松安装Nginx
原创

一篇文章、三种方法在Debian上轻松安装Nginx

封面嗷

作者:Mintimate

博客:https://www.mintimate.cn

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
  • 编译安装时,需要自行安装:gccpcrezlib以及openssl

推荐的服务器可以选择腾讯云轻量应用服务器:

选择服务器

另外,如果你觉得本文的安装方法过于技术型。其实,也可以试试宝塔面板的一键操作。

dpkg安装Nginx

Debian使用apt-get作为软件包管理器,所以我们可以使用apt-get直接安装dpkg,进而安装Nginx:

sudo apt-get install nginx

安装完以后,输入whereis nginx查看Nginx的安装位置,其中的nginx.conf为Nginx的配置文件。

这样的方法很简单,也十分快但是坏处也很明显:

  • 无法自定义Nginx模块

Docker安装Nginx

Docker上安装Nginx

Docker安装Nginx其实和dpkg安装差不多,在安装了Docker情况下

# 查找Nginx
docker search nginx
查找Nginx镜像

使用命令拉取镜像到本地

docker pull nginx
pull操作

之后,查看镜像ID:

docker images nginx
查看ID

根据ID,创建Docker容器,并完成80端口的映射:

docker run -d --name myNginx -p 80:80 d1a
创建容器

此时,浏览器登陆即可看到Nginx页面:

Nginx页面

至于修改镜像,个人推荐把Docker镜像挂载到Linux上进行修改。

总的来说,Docker安装的Nginx,我觉得配置起来,和dpkg安装Nginx差不多。

手动编译安装Nginx

手动编译安装

手动编译安装Nginx比较复杂,但是平时一般使用最多。原因:

  • 便于管理 编译安装的Nginx,其安装地址可控,如果需要卸载,执行反编译即可。
  • 模块可控 Nginx有其丰富的模块库,如:ngx-fancyindex。使用Docker或软件包管理器安装的Nginx,模块有时不方便载入。

现在就来讲解如何编译安装Nginx。

在这之前,首先确保的软件包没过时:

sudo apt-get update

环境准备

编译Nginx需要gcc+的环境支持,build-essential内包含gcc+套件,所以我们安装build-essential即可:

sudo apt-get install build-essential
安装build-essential

Tips________:你也可以自己编译gcc+

因为nginx.conf中使用了正则表达式,所以编译Nginx时就需要把PCRE库编译进Nginx,而Debian内安装PCRE库,可以这样安装:

sudo apt-get install libpcre3 libpcre3-dev
安装libpcre3和libpcre3-dev

当热,Nginx编译过程和Http相应过程还需要gzip格式的压缩,所以我们还需要安装zlib库用于对HTTP包的内容做gzip格式的压缩,可以这样安装:

sudo apt-get install zlib1g-dev
安装 zlib1g-dev

最后,现在SSL协议很重要,Chrome等主流浏览器,都开始默认相应HTTPS了,所以OpenSSL编译环境也很重要:

sudo apt-get install openssl libssl-dev
安装openssl和libssl-dev库

另外,如果你不想安装OpenSSL,或者想指定第三方OpenSSL用于编译,可以在Nginx编译时添加编译参数:--with-openssl

下载Nginx源码

接下来,我们下载并解压Nginx的源码,Nginx源码下载官方地址:

http://nginx.org/en/download.html

开发环境,我们使用最新稳定版本Nginx:

下载Nginx源码
# 下载Nginx 1.20.1源码(Stable稳定版本)
wget "http://nginx.org/download/nginx-1.20.1.tar.gz"
# 使用tar命令解压
tar -xf nginx-1.20.1.tar.gz
# 进入解压后出现的目录,已备接下来的编译
cd nginx-1.20.1

编译Nginx

首先,我们需要生成makefile文件,编译时候的参数可以参考官方Nginx文档:

http://nginx.org/en/docs/configure.html

我自己编译Nginx时候,选择的参数一般是:

./configure \--prefix=/etc/nginx \--sbin-path=/usr/sbin/nginx \--conf-path=/etc/nginx/nginx.conf \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--pid-path=/var/run/nginx.pid \--lock-path=/var/run/nginx.lock \--http-client-body-temp-path=/var/cache/nginx/client_temp \--http-proxy-temp-path=/var/cache/nginx/proxy_temp \--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \--http-scgi-temp-path=/var/cache/nginx/scgi_temp \--user=www \--group=www \--with-file-aio \--with-threads \--with-http_addition_module \--with-http_auth_request_module \--with-http_dav_module \--with-http_flv_module \--with-http_gunzip_module \--with-http_gzip_static_module \--with-http_mp4_module \--with-http_random_index_module \--with-http_realip_module \--with-http_secure_link_module \--with-http_slice_module \--with-http_ssl_module \--with-http_stub_status_module \--with-http_sub_module \--with-http_v2_module \--with-mail \--with-mail_ssl_module \--with-stream \--with-stream_realip_module \--with-stream_ssl_module \--with-stream_ssl_preread_module 

其中:

  • --prefix:Nginx主要安装路径,后续Nginx子目录依照这个变量展开
  • --user:设置Nginx进程启动时,所属的用户
  • --group:设置Nginx进程启动时,所属的用户组

如果没问题,会显示信息:

Configuration summary
  + using threads
  + using system PCRE library
  + using system OpenSSL library
  + using system zlib library

  nginx path prefix: "/etc/nginx"
  nginx binary file: "/usr/sbin/nginx"
  nginx modules path: "/etc/nginx/modules"
  nginx configuration prefix: "/etc/nginx"
  nginx configuration file: "/etc/nginx/nginx.conf"
  nginx pid file: "/var/run/nginx.pid"
  nginx error log file: "/var/log/nginx/error.log"
  nginx http access log file: "/var/log/nginx/access.log"
  nginx http client request body temporary files: "/var/cache/nginx/client_temp"
  nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
  nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
  nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
  nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
makefile

之后,执行编译即可:

make && make install
编译安装完成

这个时候,我们使用浏览器即可看到Nginx已经可以使用了。

方法选择

个人推荐安装优先度:

编译安装>Docker安装>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

如果想换安装Nginx的安装方式,已经安装的Nginx如何卸载呢?

dpkg卸载Nginx

如果你使用的是dpkg安装的Nginx,安装很简单,卸载也一样:

# 卸载Nginx
sudo apt-get remove nginx

docker卸载Nginx

如果你使用Docker安装的Nginx,卸载也很简单:

# 查看Nginx镜像ID
docker images
查看Nginx镜像ID

获取ID后,根据ID卸载即可:

docker rmi d1a3

如果删除失败,比如:

删除失败

我们先清其依赖:

 docker ps -a
 docker rm $ID
 docker rmi $ID
卸载成功

编译删除Nginx

编译删除Nginx也很简单,首先停止运行Nginx:

# 关闭Nginx
nginx -s quit
# 删除Nginx
sudo rm -rf /etc/nginx

这样Nginx就已经卸载完成了

总结

其实呢?个人是喜欢编译安装Nginx。不过,其实宝塔面板的Nginx也很不错,新版本也可以选择模块编译安装,但是总有些大佬,觉得面板部署没有“灵魂”。这里不过多介绍。

如果你平时喜欢用Docker,可以试试Docker安装,Docker的第三方库,应该是可以安装模块的,或者有集成模块。

Nginx确实是个Web服务器神器呢~~~

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注作者,阅读全部精彩内容
登录 后参与评论
0 条评论

相关文章

  • 一篇文章,四种方法教你在Linux上安装MariaDB

    2008年1月16日,MySQL AB 宣布它已经同意被Sun微系统集团以大约10亿美元的价格收购。该项收购已于2008年2月26日完成。而这也意味着,MySQ...

    Mintimate
  • 基于腾讯云轻量应用服务器和Umami部署网站流量统计后台

    想知道自己网站,每天有多少人浏览?或者想更直观的查看自己网站的访客统计?很多人会使用Google Analytics等工具进行统计。一般统计的数据:

    Mintimate
  • 【玩转Lighthouse】搭建Hexo博客并将Lighthouse作为网站发布平台和图床

    相信很多人选择搭建自己的博客,会选择现有的博客系统方案,比如:Wordpress、Hexo和Halo等。

    Mintimate
  • 快速搭建一个下载站:详解Linux上部署h5ai实现目录映射

    H5AI,其实全称是:HTML5 Apache Index。最初是用来在Apache Web服务器上,完成资源映射,但是后来适配到Nginx等其他平台。使用H5...

    Mintimate
  • Nginx上安装Fancyindex模块,让目录映射(autoindex)更加实用、美观

    本文是在安装了Nginx情况下,对如何使用autoindex以及安装Fancyindex模块的详解,如果你事先并没安装Nginx,可以参考文章:

    Mintimate
  • 如何在 Linux 中使用 apt 命令管理包

    本文通过示例向您展示如何在 Ubuntu、Debain、Linux Mint 或任何其他基于 Debian 或 Ubuntu 的发行版中使用 apt 命令,以便...

    网络技术联盟站
  • 【技术种草】如何批量检测自己服务器状态?云探针面板搭建教程

    云探针是什么呢?云探针,其实就是用TCP,对服务器进行一次握手连接后,得到服务器的运行状态。

    Mintimate
  • kubernetes系列教程(八)Pod健康检查机制

    上一篇文章中kubernetes系列教程(七)深入玩转pod调度介绍了kubernetes中Pod的调度机制,通过实战演练介绍Pod调度到node的几种方法:1...

    HappyLau谈云计算
  • 在Debian和Ubuntu上安装Ghost(CMS)博客发布平台

    Ghost是一个免费的开源和轻量级平台,用于博客或在线出版物。 它是在Nodejs中编写的, 并附有各种各样的现代出版工具,用于轻松构建和运行在线出版物。

    子润先生
  • 手把手教你制作漏洞复现环境

    在学习的过程中, 是否看到别人搭建的 Exploit 练习平台心痒痒呢? 通过本篇教程的学习, 将手把手教你搭建属于自己的漏洞测试利用环境, 不管是自己学习还有...

    信安之路
  • 「技术架构」使用NGINX部署Spring Boot

    Spring / Spring引导应用程序的部署总是与Apache Tomcat相关联,而且由于框架本身运行在嵌入式Tomcat web服务器之上,所以它似乎是...

    首席架构师智库
  • Lighthouse配置nginx端口代理使得docker应用暴露在公网上

    本文基于Lighthouse服务器,使用nginx创建端口代理虚拟主机,将本地交换环上的端口映射到外部公网上的端口上,使得可以通过宫外IP访问本地的服务。解决社...

    EatRice
  • 快速搭建简易、高效、多线程http服务器

    去年我做了一个笔记《python快速建立超简单的web服务器》记录了如何用python快速搭建一个http服务器,然而简单确实是很简单,但是缺陷太明显了,无法多...

    砸漏
  • 使用Telegraf、InfluxDB和Grafana构建监控

    过去几年我一直在使用Munin作为监控工具。它效果很好,很轻,而且设置起来非常简单。

    后场技术
  • 使用PLesk+litespeed加速你的wordpress博客

    请确认你的服务器系统是不是Plesk所要求的!截止到我写完这篇文章为止,最新版的debian11还没有被支持

    纯之
  • 如何轻松安装 Debian Linux 系统

    如果你使用 Debain 官网的默认 ISO 镜像,安装 Debian 就比较费劲。你会卡在这种界面,让你从外部可移动介质上安装网络驱动。

    用户1880875
  • 轻松在Linux/Mac/Windows上配置FFmpeg开源音频工具

    “FFmpeg”这个项目单词中的“FF”指的是“Fast Forward(快速前进),而“mpeg”指的是“Moving picture expert grou...

    Mintimate
  • 如何在Debian 9上安装Linux,Nginx,MySQL,PHP(LEMP堆栈)

    LEMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在...

    温浪

扫码关注腾讯云开发者

领取腾讯云代金券