目录

官方安装手册:https://nginx.org/en/docs/install.html

针对不同的操作系统平台,nginx支持不同的安装方式,如:通过包管理器安装,从源码编译安装。

通过包管理器安装

在Linux系统上安装nginx时,最方便的方式是通过包管理器进行安装,如:yum,apt。

针对不同的Linux系统,在执行nginx安装之前,需要进行一定的配置,详见:https://nginx.org/en/linux_packages.html

如下以在CentOS上通过yum方式安装nginx为例进行说明。

安装nginx

第一步:安装必要的基础工具“yum-utils”

$ sudo yum install yum-utils

第二步:在文件“/etc/yum.repos.d/nginx.repo”中配置nginx的yum源

$ sudo vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true [nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

第三步:通过yum安装nginx

$ sudo yum install nginx

特别说明: 默认情况下,通过“sudo yum install nginx”安装的是稳定版本的nginx,如果希望安装最新版本的nginx可以使用如下命令:

$ sudo yum-config-manager --enable nginx-mainline

安装完毕之后默认是不会启动nginx的:

$ ps uax |grep nginx
root 11455 0.0 0.0 112708 988 pts/0 S+ 17:00 0:00 grep --color=auto nginx

通过这种方式安装nginx完毕之后,nginx可执行文件默认已经添加到/usr/sbin目录下,可以直接执行nginx命令启动nginx。

$ whereis nginx
nginx: /usr/sbin/nginx /usr/lib64/nginx /etc/nginx /usr/share/nginx /usr/share/man/man8/nginx.8.gz # 启动nginx
$ nginx
$ ps uax |grep nginx
root 11457 0.0 0.0 46440 980 ? Ss 17:01 0:00 nginx: master process nginx
nginx 11458 0.0 0.1 46852 1932 ? S 17:01 0:00 nginx: worker process
root 11473 0.0 0.0 112708 988 pts/0 S+ 17:01 0:00 grep --color=auto nginx

使用不带参数的命令行选项”-t“查看nginx进程当前使用的配置文件:

# 使用命令行选项-t查看nginx进程当前使用的配置文件
# 默认情况下nginx使用的配置文件是:/etc/nginx/nginx.conf
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

通过命令行选项“-s”停止nginx:

# 停止nginx
$ nginx -s stop
$ ps uax |grep nginx
root 11502 0.0 0.0 112708 988 pts/0 S+ 17:10 0:00 grep --color=auto nginx

卸载nginx

不同Linux发行版的包管理器卸载软件的方式各不相同,如下以在CentOS上通过yum卸载软件进行说明。

通过yum安装的nginx,卸载时非常方便,只需要通过yum命令即可完成nginx的卸载。

# 卸载之前查看下nginx的安装情况
$ which nginx
/usr/sbin/nginx # 通过yum命令删除nginx
$ yum remove nginx
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 1:1.16.1-1.el7.ngx will be erased
--> Finished Dependency Resolution Dependencies Resolved ...... Removed:
nginx.x86_64 1:1.16.1-1.el7.ngx Complete! # 卸载完成之后再次查看nginx的安装情况
# 显然,卸载nginx之后就找不到nginx的安装信息了
$ which nginx
/usr/bin/which: no nginx in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

值得注意的是,通过yum命令卸载nginx,仅仅是卸载了nginx软件本身,对于之前使用nginx配置文件将会被保留下来。

# 显然,卸载nginx之后之前使用的配置文件被保留了,并且换了一个文件名后缀表明这是通过yum卸载时保存的配置文件
$ ll /etc/nginx/
total 4
drwxr-xr-x. 2 root root 51 Nov 16 12:57 conf.d
-rw-r--r--. 1 root root 1025 Nov 14 23:40 nginx.conf.rpmsave
$ ll /etc/nginx/conf.d/
total 8
-rw-r--r--. 1 root root 1098 Nov 9 17:55 default.conf.rpmsave

可以手动删除之前使用的nginx配置文件:

$ rm -rf /etc/nginx

从源码编译安装

nginx是C语言开发的应用程序,支持从源码编译安装,这也是nginx常用的安装方式之一。

如下是在Linux环境(CentOS 7.6)下编译安装nginx的步骤:

准备安装环境

在进行nginx编译之前需要安装一些基础的工具环境,如:gcc,openssl等。

# 安装gcc
$ yum install -y gcc-c++ # 安装prce
# PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
# 注:pcre-devel是使用pcre开发的一个二次开发库,nginx也需要此库。
$ yum install -y pcre pcre-devel # 安装zlib
# zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
$ yum install -y zlib zlib-devel # 安装openssl
# OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
# nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
$ yum install -y openssl openssl-devel

执行编译安装

nginx源码文件下载:https://nginx.org/en/download.html

# 下载指定版本的nginx源码包
$ wget http://nginx.org/download/nginx-1.16.1.tar.gz $ tar xzvf nginx-1.16.1.tar.gz
$ cd nginx-1.16.1
$ ./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
$ make
$ make install

执行上述编译安装之后,nginx将会被安装到目录“/usr/local/nginx”下。

$ cd /usr/local/nginx/
$ ./sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
$ ./sbin/nginx
$ ps uax |grep nginx
root 3975 0.0 0.0 20556 620 ? Ss 21:33 0:00 nginx: master process ./sbin/nginx
nobody 3976 0.0 0.1 21008 1576 ? S 21:33 0:00 nginx: worker process
root 3996 0.0 0.0 112708 988 pts/0 R+ 21:36 0:00 grep --color=auto nginx

此时使用的配置文件默认为“/usr/local/nginx/conf/nginx.conf”,进入到“/usr/local/nginx”,执行“./sbin/nginx”即可启动nginx。

注意:

上边将临时文件目录指定为/var/temp/nginx,在启动nginx之前需要在/var下创建temp及nginx目录(mkdir -p /var/temp/nginx),否则将会报错:“nginx: [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory)”。

编译安装的nginx卸载非常方便,直接将nginx的安装目录“/usr/local/nginx”删除即可,同时可以把nginx使用的日志目录和临时目录一并删除。

删除编译安装的nginx:

$ rm -rf /usr/local/nginx
$ rm -rf /var/log/nginx
$ rm -rf /var/temp/nginx

制作nginx免安装包

有时候需要在内网环境使用nginx,如果内网无法访问外网,那么就无法通过包管理器工具安装nginx了。

而使用源码编译安装的方式同样需要先安装一些依赖工具包,这又将是一个非常繁琐的过程。

因此,如果有一个已经编译好的nginx二进制安装包,那该多么方便啊!遗憾的是,nginx官方并没有为Linux平台提供这样的二进制包,只提供了一个Windows平台二进制包。

实际上,可以通过源码编译方式制作一个免安装的nginx二进制包,这样就可以非常方便地使用nginx了。

如下是制作nginx免安装二进制包的详细步骤:

# 安装基础的依赖工具
$ yum -y install gcc-c++ make wget # 下载nginx模块依赖的软件包和nginx源码包,并解压
$ wget https://www.openssl.org/source/openssl-1.0.2s.tar.gz
$ wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
$ wget https://zlib.net/zlib-1.2.11.tar.gz
$ wget http://nginx.org/download/nginx-1.16.1.tar.gz # 开始编译nginx
$ cd nginx-1.16.1
$ ./configure \
--with-openssl=../openssl-1.0.2s \
--with-pcre=../pcre-8.43 \
--with-zlib=../zlib-1.2.11 \
--with-pcre-jit --user=root \
--prefix=/root/nginx \
--with-http_ssl_module \
--with-http_v2_module # 输出如下信息说明编译配置没问题
Configuration summary
+ using PCRE library: ../pcre-8.43
+ using OpenSSL library: ../openssl-1.0.2s
+ using zlib library: ../zlib-1.2.11 nginx path prefix: "/root/nginx"
nginx binary file: "/root/nginx/sbin/nginx"
nginx modules path: "/root/nginx/modules"
nginx configuration prefix: "/root/nginx/conf"
nginx configuration file: "/root/nginx/conf/nginx.conf"
nginx pid file: "/root/nginx/logs/nginx.pid"
nginx error log file: "/root/nginx/logs/error.log"
nginx http access log file: "/root/nginx/logs/access.log"
nginx http client request body temporary files: "client_body_temp"
nginx http proxy temporary files: "proxy_temp"
nginx http fastcgi temporary files: "fastcgi_temp"
nginx http uwsgi temporary files: "uwsgi_temp"
nginx http scgi temporary files: "scgi_temp" $ make
$ make install

如上所示,编译之后nginx将会被安装到“/root/nginx”路径下。

[root@localhost ~]# pwd
/root
[root@localhost ~]# ll nginx
total 4
drwxr-xr-x. 2 root root 4096 Nov 16 16:46 conf
drwxr-xr-x. 2 root root 40 Nov 16 16:46 html
drwxr-xr-x. 2 root root 6 Nov 16 16:46 logs
drwxr-xr-x. 2 root root 19 Nov 16 16:46 sbin

nginx的二进制文件在sbin目录下,配置文件在conf目录下。

将编译之后的整个nginx目录进行打包:tar czvf nginx.tar.gz nginx,打包之后的“nginx.tar.gz”就可以作为免安装的nginx二进制包进行使用。

将“nginx.tar.gz”拷贝到目标主机,解压之后就可以使用。

$ tar xzvf nginx.tar.gz
$ cd nginx
# 启动nginx,默认使用的配置文件为conf目录下的nginx.conf
$ ./sbin/nginx

关于nginx免安装包的制作,可以直接使用脚本工具,已经在Ubuntu和CentOS上验证过。

$ git clone https://github.com/nuccch/nginx-portable
$ cd nginx-portable
$ bash compile <nginx-version>

执行完毕之后将会在build目录下生成一个已经编译好的nginx文件:nginx-<version>.tar.gz,直接拷贝到目标主机解压即可使用。

【参考】

https://nginx.org/en/linux_packages.html nginx: Linux packages

https://blog.csdn.net/fdipzone/article/details/77199042 nginx快速查看配置文件的方法

https://nginx.org/en/docs/switches.html Nginx Command-line parameters

https://mp.weixin.qq.com/s/SctV1U_IXfHKpChT4gvaFg Nginx 的介绍及安装

https://juejin.im/post/5d31ec3b5188253a8f27ef5b Linux安装Nginx正确方式

nginx入门系列之安装与卸载的更多相关文章

  1. nginx入门与实战 安装 启动 配置nginx Nginx状态信息(status)配置 正向代理 反向代理 nginx语法之location详解

    nginx入门与实战 网站服务 想必我们大多数人都是通过访问网站而开始接触互联网的吧.我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务. Web ...

  2. Inno Setup 系列之安装、卸载前检测进程运行情况并关闭相应进程

    需求 最近用 Inno Setup 做一个exe,可是在安装之前要停止正在运行的相应进程或者在卸载之前要停止正在运行的相应进程,可是发现它自身的方法不能满足要求,最后经过度娘的耐心帮助下终于在网上找到 ...

  3. App测试从入门到精通之安装、卸载和运行测试

    关于手机App测试需要说的点有很多.目前市场上主要的APP测试主要是针对的是安卓.和苹果两大主流操作系统.主要考虑的就是功能性.兼容性.稳定性.性能测试等.我们看下App的安装和卸载有哪些常用的场景: ...

  4. Docker入门系列2 安装

    可以从 Docker 社区直接下载可用的模版或镜像. Docker容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多. 其次,Docker对系统资源的利用率很高,一台主机上可以同时运行数千个Do ...

  5. 【Nginx入门系列】第一章 手把手带你搭建Nginx服务器

    1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境,搭建前请先按如下语句配置好环境. GCC 安装nginx需要先将官网下载的源码进行编译 ...

  6. android 入门-使用adb安装及卸载apk

     我想用adb 安装apk 到设备上现在出现了2个. 提示我没有找到设备    安装不用进去adb shell 这是你存放apk文件夹路径 下面安装apk到手机上(usb一定要连接成功否则读取不到手机 ...

  7. nginx入门之编译安装

    nginx是什么 nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件.它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用. nginx比它大哥apache性 ...

  8. 【redis 学习系列】安装-配置-卸载Redis

    一.安装 wget http://download.redis.io/releases/redis-3.0.7.tar.gz tar -zxf redis-.tar.gz ln -s redis- r ...

  9. Inno Setup 系列之安装、卸载时调用bat

    需求 想在安装的时候调用install.bat,在卸载的时候调用uninstall.bat 解决 可以这样写 Inno Setup 的脚本: [Setup] ; NOTE: The value of ...

随机推荐

  1. 分布式中的分库分表之后,ID 主键如何处理?

    面试题 分库分表之后,id 主键如何处理?(唯一性,排序等) 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定 ...

  2. 金生芳-实验十四 团队项目评审&课程学习总结

    实验十四 团队项目评审&课程学习总结 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 作业学习目标 (1)掌握软件项目评审会流程(2)反思总结课 ...

  3. js回调与异步加载的用法

    以前还是菜鸟的时候(虽然现在依然很菜 -_-|| )对异步加载与回调函数的技术无比向往,但也一直没有使用过,这次因为页面逻辑太过复杂,一堆请求逻辑,如果还是用顺序请求,页面的速度... 领导又要挠头了 ...

  4. Go语言 - 接口

    接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型. interface是一组method的集合,是duck-type programming的一种体现.接口做的事情就像是定义 ...

  5. Async programming

    Asynchrony, in computer programming, refers to the occurrence of events independent of the mainprogr ...

  6. 实现:python3_解析shodan_json数据

    前言:今天,一美元可以开通shodan,急忙去买了一个哈哈!! 下载json格式的数据,可以通过该脚本进行解析,得到相应的ip:port的格式 示例代码: # coding=utf-8 import ...

  7. 不要轻易在java ext 目录放任何三方jar包

    今天在编写一个简单spi 应用demo的时候,在编译时总有一个其他的错误,如下: ERROR Failed to execute goal org.apache.maven.plugins:maven ...

  8. Zookeeper在分布式架构中的应用

    Zookeeper 是一个高性能.高可靠的分布式协调系统,是 Google Chubby 的一个开源实现.Zookeeper 能够为分布式应用提供一致性服务,提供的功能包括:配置维护.域名服务.分布式 ...

  9. 洛谷 P5614题解

    吐槽:数据好像有点水,直接枚举到200可以得80 points. 另:我还是太弱了,比赛的时候只有90 points,#7死卡不过去,最后发现是没有判断 \(z_1\) 和 \(z_2\) 的范围-- ...

  10. 模拟26A 题解

    A. marshland 考试时想到了网络流,然而不会建图,就死了. 正解是最大费用可行流. 比较容易想到的是将每个点拆为两个点, s连没有危险值的入点, 没有危险值的入点连有危险值的入点,入点出点之 ...