Nginx 的安装、启动和关闭

文章目录



一、背景说明

最近想自己开发一些小玩意,所以在腾讯云买了个云服务器,选择镜像时放弃了宝塔Linux面板,而是选择了 Ubuntu18 的镜像。

现在想搭建自己的网站,选择了 Nginx 作为 Web服务器。那么如何在 Ubuntu18 系统中安装 Nginx 呢?所以就有了本文的诞生。


二、Nginx 的安装

2.1、依赖的安装

Nngix 的依赖有:

  • gcc
  • openssl, openssl-devel
  • pcre,pcre-devel
  • zlib,zlib-devel

依赖的安装命令:

shell 复制代码
apt install gcc openssl pcre pcre-devel zlib zlib-devel;

但是提示从pcre往后的包都找不到。有人说Ubuntu中没有这些包。

依赖的安装命令2:

shell 复制代码
# 如果是非root账户,需要使用sudo apt install命令
apt install gcc openssl libpcre3 libpcre3-dev libssl-dev;

2.2、Nginx 安装

  1. 使用 rz 命令将 nginx 和 zlib 的安装包上传到服务器。
shell 复制代码
# 打开上传文件选择框
sudo rz -y;

此时,文件默认上传到 home 目录

  1. 解压文件
shell 复制代码
# 解压nginx安装包,会在home目录生成`nginx-1.20.2`目录
tar zxvf nginx-1.20.2.tar.gz;
# 解压 zlib 安装包
tar zxvf zlib-1.2.11.tar.gz; 
  1. 执行配置
shell 复制代码
# 进入nginx-1.20.2目录
cd nginx-1.20.2/;
# 执行配置文件
# 执行完后,/usr/local/下还没有生成nginx目录
./configure --prefix=/usr/local/nginx --with-zlib=../zlib-1.2.11/;

这段命令的意思:

  • --prefix:指定nginx安装的目录
  • --with-zlib:指定从哪里读取zlib的源码(解压后的目录)
  1. 安装nginx
shell 复制代码
# 仍在 ~/nginx-1.20.2/下
make;
# 生成了/usr/local/nginx目录
# 需要root权限,否则上述目录无法创建
sudo make install;

2.3、验证安装

cd到/usr/local目录,如果nginx目录已经生成,则表示安装成功。如下图:


三、启动 Nginx

有两种启动方式:

  1. 普通启动
  2. 通过配置启动

3.1、普通启动

进入Nginx的安装目录(即/usr/local/nginx),有一个sbin目录。

普通启动就是运行sbin目录下的nginx文件。


启动命令如下

shell 复制代码
cd /usr/local/nginx/sbin;
sudo ./nginx;

# 或者
cd /usr/local/nginx/sbin & sudo ./nginx;

3.2、如何判断nginx已启动

(1)再次启动nginx

如果nginx已经启动,则再次启动会报如下错误:

shell 复制代码
cd /usr/local/nginx/sbin & sudo ./nginx;
[1] 7954
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[1]+  Done                    cd /usr/local/nginx/sbin

(2)还可通过查看进程,判断nginx是否启动:

shell 复制代码
ps -ef|grep nginx;

nginx的进程信息如下:

(3)直接访问部署nginx的机器的ip地址

3.3、通过配置启动

该启动方法的命令如下:

shell 复制代码
sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf;

3.4、设置开机启动

命令如下:

shell 复制代码
# 打开/etc/rc.d/rc.local文件
vim /etc/rc.d/rc.local;

在文件末尾追加如下内容:

shell 复制代码
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 2>&1

重启系统,检查nginx是否随系统启动。


四、关闭 Nginx

4.1、优雅地关闭

shell 复制代码
sudo kill -QUIT $主进程id;

优雅地关闭之所以称为优雅,是因为如果关闭时还有用户请求,会等所有的用户请求都处理完,才进行关闭。

4.2、快速关闭

shell 复制代码
sudo kill -TERM $主进程id;

# or
sudo kill $主进程id;

注:kill 不加参数,也是快速关闭。

4.3、只关闭主进程

shell 复制代码
sudo kill -9 $主进程id;

如:kill -9 7720

上图可以看出:通过这种方式关闭ngin的主进程,子进程还是存活的。

通过ps命令,可以获得主进程的id。

4.4、使用nginx关闭服务

shell 复制代码
sudo /usr/local/nginx/sbin/nginx -s stop;

五、重启 Nginx

使用下面的命令,可以对 Nginx 进行重启:

shell 复制代码
cd /usr/local/nginx/sbin/ && sudo ./nginx -s reload;

该命令会新建一个进程处理新的请求。同时通知老的进程,处理已经响应的请求,然后优雅地退出。


六、问题

6.1、Nginx 从哪里下载?

答:进入 Nginx的下载页:

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

我选择的版本是:nginx-1.20.2 的Linux版本。

6.2、如果没有rz如何安装?

答:我使用的云服务器是有这个命令的,如果自己的系统没有,可以通过下面的命令安装:

shell 复制代码
sudo apt install lrzsz;

6.3、如果没有 make如何安装?

答:和上面的命令类似:

shell 复制代码
sudo apt install make;

6.4、zlib 从哪里下载?

答:zlib的下载地址:

http://zlib.net/

我选的是tar.gz格式的文件:

6.5、使用 rz命令上传 nginx 安装包为什么会报错?

答:上传文件后,会出现莫名的字符。报错信息如下:

shell 复制代码
rz -y
## 结果输出
rz: nginx-1.20.2.tar.gz removed.                                                                    ubuntu@VM-(reverse-i-search)`': q$ZGÿZU͇^C k^C󑵊Z2¢荙Ǿvu򒻢٧ބ)5¨m3¶
dev;ǢR򺑙Ӫƺ?͇Wվǟĕd|꾣Ĭ"ϲ¤𼎬ֶֶֶ $_񏚁¼WE'[email protected]

-bash: syntax error near unexpected token `('
ubuntu@xxxx:~$ rzͣ 

z: command not found
ubuntu@xxxx:~dzT@=׽𐆘®ڒ.©n¥\²<<
\udcc8s\udc8aT@=\udc96\udc8a\udcd8}\udcefƘ\udcaeڒ.\udca9\udc9cn\udc94\udca5\udcb2\udcab: command not found
LjM~󾠩Bυ˟洌𮊙ꆢJ#ϓ-࠿HO秽þ/^6¢f V**0bec3410003d31

参考了下面网友的说法:

https://segmentfault.com/q/1010000004642603

得知:rz -y 命令的执行,需要root权限。

所以应当使用如下命令:

shell 复制代码
sudo rz -y;

6.6、报错:fatal error: zlib.h: No such file or directory

详细报错信息:

shell 复制代码
src/http/modules/ngx_http_log_module.c:13:10: fatal error: zlib.h: No such file or directory
 #include <zlib.h>
          ^~~~~~~~

答:原因:zlib不在home目录,而是上传到 nginx-1.20.2/目录中了。


七、总结

本文主要介绍了 Nginx 的安装、启动和关闭。之所以安装它,是打算使用其部署前端页面。

文章记录了整个 Nginx 的安装和启动过程。期间遇到一些问题,在问题节中对这些遇到的问题进行了记录,并给出了解决方法。


相关推荐
若疆赤云online几秒前
window和ubuntu自签证书
linux·运维·ubuntu
像风一样自由20202 分钟前
图像识别系统 - Ubuntu部署指南(香橙派开发板测试)-学习记录1
linux·学习·ubuntu
yangshuo12813 分钟前
新ubuntu物理机开启ipv6让外网访问
linux·运维·ubuntu
猿java11 分钟前
什么是Nginx?它有哪些应用场景?
java·nginx·面试
绝顶少年13 分钟前
反向代理、负载均衡与镜像流量:原理剖析、区别对比及 Nginx 配置实践
运维·nginx·负载均衡
ZZZKKKRTSAE19 分钟前
快速上手Linux的Web服务器的部署及优化
linux·运维·服务器·web
卷卷的小趴菜学编程44 分钟前
Linux系统之----程序地址空间
linux·运维·虚拟地址空间·写时拷贝·程序地址空间·缺页中断·惰性加载
Rene11001 小时前
Linux虚拟机无法重启网络
linux·运维·服务器
芷栀夏2 小时前
CasaOS上部署1Panel开源运维面板远程在线访问配置实操指南
linux·服务器·网络
唐青枫3 小时前
Linux whatis 命令使用详解
linux