【Nginx】初步认识及安装

Nginx 版本

共有4个版本,
Nginx开源版(最干净的、最纯净的,完成的就是网站服务器、代理服务器、负载均衡器这三大功能)
http://nginx.org/
Nginx plus 商业版(除了基本三大功能外,提供其他的功能,无需开发者自己开发,做二次开发难度较大)
https://www.nginx.com
openresty(免费开源的,Nginx和Lua脚本结合在一起的web平台,而Nginx plus版本自己是可以开发出来的,此版本提供很多类库可供开发者开发)
http://openresty.org/cn/
Tengine(淘宝、天猫发布的开源版本,在Nginx开源版本上新增功能,以模块化的方式增强原始文档)
http://tengine.taobao.org/

Nginx 安装

一般采用Linux虚拟机的形式安装,安装之前最好先备份原有的虚拟机环境(用链接式克隆,占用空间更少),本文采用源码配置编译的方式安装。必须先安装的依赖库,将安装包pcre-8.45.tar.bz2、zlib-1.2.12.tar.gz、nginx-1.20.2.tar.gz 下载后放至Linux虚拟机中,可如下流程安装。

  1. PCRE是一个 perl 库,Nginx的HTTP模块使用PCRE来解析正则表达式。安装PCRE库(源码安装包:sourceforge.net/projects/pcre/files/pcre 下载),下载之后,解压后用如下命令安装:
$ cd  pcre-8.45       // 解压后进入到主目录下
$ sudo ./configure    // 这是默认的路径下安装,也可以用 sudo ./configure --prefix=/usr/local/pcre 
                      // 指定安装到 /usr/local/pcre 目录下,这里最好用默认路径安装
$ sudo make
$ sudo make install
  1. zlib 是一个文件压缩和解压缩的库,Nginx 使用 zlib 对 HTTP 数据包进行 gzip 压缩和解压。安装zlib库(源码安装包:www.zlib.net/fossils/ 下载),下载之后,解压后用如下命令安装:
$ cd  zlib-1.2.12       // 解压后进入到主目录下
$ sudo ./configure      // 这是默认的路径下安装
$ sudo make
$ sudo make install
  1. 安装Nginx(源码安装包:nginx.org/ 下载),下载之后,解压后用如下命令安装:
    使用编译安装,可以添加前缀 --prefix,使其安装到Linux下/usr/local/nginx 目录下,
cd nginx-1.20.2       // 解压后进入到主目录下
/* 若pcre、zlib安装时没有指定路径,直接用下面的命令,测试时:--with-pcre=xx --with-zlib=xx发现指定的是压缩包的路径,最好用默认路径就不会有找不到文件的问题 */
sudo ./configure  --prefix=/usr/local/nginx 
sudo make
sudo make install

Nginx 启动

安装完Nginx后,进入/usr/local/nginx目录下没有任何的启动脚本,进入 /usr/local/nginx/sbin目录下有nginx可执行文件,执行命令: ./nginx

若报错:nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

再用命令:$ ldd nginx
linux-vbso.so.1 => (0x0000007fff730000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x0000007fb8000000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x0000007fe7700000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x0000007ffcb00000)
libpcre.so.1 => not found
libcrypto.so.6 => /lib/x86_64-linux-gnu/libcrypto.so.6 (0x0000007fe2100000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x0000007feb100000)
libc.so.6 => /lib64/libc.so.6 (0x0000007fea100000)
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 (0x0000007ffd400000)

/* 出现 libpcre.so.1 => not found 链接错误,是因为没有找到该库文件 */
/* 先排查libpcre.so.1是不是已经安装成功,如果没找到,就要重新定位pcre库的安装问题,一般都能找到 */
$ ls /usr/local/lib | grep pcre   // 也有可能是在lib目录下 ls /lib | grep pcre
/* ldd命令提示的路径,添加软链接即可解决 */
$ sudo ln -s /usr/local/lib/libpcre.so.1  /lib/x86_64-linux-gnu/

此时执行命令:sudo ./nginx
浏览器中输入:虚拟机的IP地址即可登录,如下图:
在这里插入图片描述
若输入IP地址回车后,无任何响应,等待一段时间后出现无法访问,是因为虚拟机中的防火墙问题,关闭之后,重新登录网址,即可访问成功。

/* 关闭防火墙 */
$ systemctl stop firewalld.service
/* 禁止防火墙开机启动 */
$ systemctl disable firewalld.service

nginx的启动或停止相关命令:

/* 启动,会启动多个线程,不仅仅只有nginx */
$ ./nginx 
/* 快速停止 */
$ ./nginx -s stop
/* 优雅关闭,在退出前完成已经接受的连接请求,比如正在下载时,会等待下载完才会停止。一旦执行了就不会接收一个新请求 */
$ ./nginx -s quit
/* 重新加载配置,在配置完配置文件后,立即生效,不需要重启整个nginx的服务器。其原理是把之前已开启的线程关掉(优雅关闭),
 * 再重新开启新的线程。
 */
$ ./nginx -s reload 

Nginx 系统服务

由于开启nginx都需要手动执行命令较为繁琐,可创建脚本的方式,开启为系统级nginx服务,在/usr/lib/systemd/system/目录创建脚本文件:nginx.service

$ sudo vi /usr/lib/systemd/system/nginx.service
/* 若用Xshell粘贴,需先进入到编辑模式,输入 a 或 i , 直接粘贴的话,会漏洞某些内容 */
/* 若安装nginx的路径不是/usr/local/nginx目录下,也要对应的更改 */
/* 脚本中直接粘贴如下内容: */
[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

/* 保存脚本之后,重新加载系统服务 */
$ systemctl daemon-reload

可以先查下系统的nginx进程情况

/* 此时可以看到系统的 */
$ ps -ef | grep nginx

此时已开启nginx服务
在这里插入图片描述

/* 先关掉nginx服务 */
$ ./nginx -s stop
/* 再查看下nginx是不是已经关掉 */
$ ps -ef | grep nginx

启动服务

$ systemctl start nginx.service

开机启动

$ systemctl enable nginx.service

记录ubuntu下安装nginx(sudo apt intall nginx)

安装nginx默认文件路径:
/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件 这个目录几乎没啥用
/var/log/nginx:存放日志

发现修改删除/usr/share/nginx/html目录下的index.html,即使删除浏览器的历史记录以及缓存数据,依旧可以用ip登录,显示欢迎的页面,定位发现是因为真正的目录下 /var/www/html 存放的网页地址来显示的。
/etc/nginx/sites-enabled/default 文件中记录了显示的网页地址,可以在这个文件中修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值