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'K@p.eD

-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 的安装和启动过程。期间遇到一些问题,在问题节中对这些遇到的问题进行了记录,并给出了解决方法。


相关推荐
phoenix098132 分钟前
Linux入门DAY29
linux·运维
入秋1 小时前
Linux服务器安装部署 Nginx、Redis、PostgreSQL、Docker
linux·前端
Mr. Cao code2 小时前
使用Tomcat Clustering和Redis Session Manager实现Session共享
java·linux·运维·redis·缓存·tomcat
zcz16071278212 小时前
Linux 网络命令大全
linux·运维·网络
the sun342 小时前
Reactor设计模式及其在epoll中的应用
linux·运维·服务器·c++
喜欢你,还有大家2 小时前
Linux笔记7——shell编程基础-1
linux·运维·笔记
运维成长记2 小时前
Top 100 Linux Interview Questions and Answers
linux·运维·服务器
人工智能训练师2 小时前
openEuler系统中如何将docker安装在指定目录
linux·运维·服务器·人工智能·ubuntu
百里晴鸢3 小时前
别再混淆!Linux硬链接与软链接的5大关键区别
linux·操作系统
norsd3 小时前
Linux CentOS 安装 .net core 3.1
linux·centos·.netcore