安装nginx的两种方式详细过程和解释(yum安装和源码编译安装)

本文详细介绍了Nginx的两种安装方法,包括使用yum命令行工具的简便安装和通过源代码编译的自定义安装过程。讨论了两者之间的区别,如yum自动处理依赖关系,而源码编译允许更多定制。还涵盖了安装冲突的解决,如更改端口避免端口占用冲突,以及挂载和解挂的基本操作。此外,文章提到了Nginx的master和worker进程的角色及其关系,并介绍了配置文件错误检查工具`nginx-t`的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装nginx的两种方式详细过程和解释(yum安装和源码编译安装)


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

1. yum安装

yum install nginx -y     

底层需要知道nginx已经做好的rpm包存在的位置

2.yum安装和源码编译安装的区别

  1. yum 也是linux里的软件安装的命令,但是yum可以帮助我们自动解决软件依赖关系

    rpm 是linux里的软件安装的命令,不能自动解决依赖关系,需要手工完成 ,难度要大。

    为什么软件之间有依赖关系?

    • 软件有很多模块,有些功能某些软件已经有了,而且还非常好用,我们就可以直接调用,不需要自己再写一个
  2. yum相当于去衣服专卖店直接购买衣服: 衣服已经做好的,款式,颜色都是固定的,不能修改了

    rpm相当于去裁缝店定制衣服,选款式,颜色,面料,量尺寸等操作,不能立马就做出衣服,需要一个制作的过程。

    • 可以定制:哪些功能需要,哪些不需要,安装到指定的位置等

3. 同时安装是否冲突

启动nginx时会产生冲突。因为默认都想抢占80端口。

如果不使用相同的端口,则不会冲突。可以修改其中一个的端口号。

  • yum安装:

    [root@nginx sbin]# vi /etc/nginx/nginx.conf
    #修改端口号(listen:80)
    [root@nginx sbin]# service nginx restart
    

一个nginx是一个网站占用不同的端口

4. 挂载

挂载镜像文件到Linux系统

[root@zabbix-agent nginx-1.23.2]# mount  /dev/cdrom  /mnt
mount: /dev/sr0 写保护,将以只读方式挂载
  • /dev/cdrom 对应的就是cd/dvd 设备2

    dev——device设备

    cdrom——cd read only memory

  • /mnt :是linux系统里的一个文件夹的名字 --》是一个挂载点: 文件夹

  • /dev/sr0:是/dev/cdrom指向的链接文件

[root@zabbix-agent ~]# df -Th  查看磁盘分区的挂载情况,哪些磁盘在使用
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   20M  1.9G    2% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  1.7G   16G   10% /
/dev/sda1               xfs      1014M  151M  864M   15% /boot
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0  100% /liujun
解挂
umount /mnt

5. 编译安装

完整脚本如下:

[root@nginx nginx]# vi onekey_install_nginx.sh 
#!/bin/bash

#新建一个文件夹用来存放下载的nginx源码包
mkdir -p /nginx
cd /nginx

#新建用户
useradd liuna -s /sbin/nologin

#下载nginx
curl -O http://nginx.org/download/nginx-1.23.4.tar.gz

#解压nginx源码包
tar xf nginx-1.23.4.tar.gz

#解决依赖关系
yum -y install gcc openssl-devel pcre pcre-devel automake make

#编译前的配置
./configure --prefix=/usr/local/nginx --user=liuna --with-http_ssl_module --with-http_v2_module --with-threads --with-http_stub_status_module --with stream

#编译,开启2个进程同时编译,这样速度会快一些
make -j2

#安装
make install    

#启动nginx
/usr/local/nginx/sbin/nginx
#修改PATH变量
PATH=$PATH:/usr/local/nginx/sbin
echo "PATH=$PATH:/usr/local/nginx/sbin" >>/root/.bashrc

#设置nginx的开机启动
echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local
chmod +x /etc/rc.d/rc.local

#关闭selinux和firewalld防火墙
systemctl disable firewalld
service firewalld stop
setenforce 0
sed -i '/^SELINUX=/ s/enforcing/disabled' /etc/selinux/config

(1) 下载nginx

curl -O http://nginx.org/download/nginx-1.23.4.tar.gz
  • curl 是linxu里的字符界面的浏览器
  • wget 是linux里的下载软件,理解为linux里的迅雷下载软件

(2) 解决依赖关系

yum -y install gcc openssl-devel pcre pcre-devel automake make
  • gcc:nginx的源码是c语言写的,所以需要gcc这个软件来编译
  • openssl-devel:支持https
  • pcre,pcre-devel:支持正则

(3) configure

configure 是一个配置的脚本文件,nginx给我们提供的,这个脚本会收集我们指定的配置,然后生成一个Makefile的文件

这个Makefile会告诉后面的make命令,如何去编译。理解为一个设计图纸

  • –prefix=path

    defines a directory that will keep server files. 指定安装路径

  • –user=name 指定启动nginx worker 进程的用户

  • –with-http_ssl_module 开启https的功能

  • –without-http_memcached_module 禁用http_memcached功能

  • –with-threads 支持线程池技术

  • –with-http_v2_module 对http 2.0版本的支持

  • –with-http_stub_status_module 开启nginx的状态统计功能,可以知道有多少人访问你的nginx

  • –with-stream 支持tcp/udp反向代理

    --with开头的表示开启某个功能   --》表示默认不安装,需要指定开启
    --without开头的表示禁用某个功能 ---》表示默认是安装的
    
  • make 其实就是安装Makefile的配置去编译程序成二进制文件,二进制文件就是执行可以运行的程序

(4) 安装

make install
  • 将编译好的二进制文件复制到指定的安装路径目录下

(5) 安装成功之后:

[root@nginx nginx-1.23.4]# cd /usr/local/nginx
[root@nginx nginx]# ls
conf  html  logs  sbin
  • sbin:存放可执行文件
  • log:存放日志文件
  • html:(目录)存放网站的网页文件
  • conf:存放nginx配置文件
[root@nginx nginx]# cd sbin
[root@nginx sbin]# ls
nginx
[root@nginx sbin]# ./nginx
nginx: [emerg] getpwnam("liuna") failed
[root@nginx sbin]# id liuna
id: liuna: no such user
[root@nginx sbin]# useradd liuna -s /sbin/nologin

  • -s /sbin/nologin:不能登录系统
1、查看nginx进程是否开启
1. 查看进程
ps aux |grep nginx
root       1510  0.0  0.0  39308   940 ?        Ss   20:53   0:00 nginx: master process nginx
nginx      1511  0.0  0.1  39696  1824 ?        S    20:53   0:00 nginx: worker process
root       1513  0.0  0.0 112824   980 pts/1    R+   20:53   0:00 grep --color=auto nginx
  • master process:主进程——管理进程
  • worker process:工作进程
2. 查看端口
netstat -anplut |grep nginx
3. 查看日志
[root@nginx nginx]# cd /usr/local/nginx/logs
[root@nginx logs]# ls
access.log  error.log  nginx.pid
  • access.log:正常的访问网站的日志
  • error.log:错误日志
  • nginx.pid:master的pid

日志的好处:

  1. 排除故障:根据日志的记录
  2. 进行数据的分析
2、如何知道这台服务器是否安装过nginx
find / -name nginx
3、停止nginx
./nginx -s stop   #相对路径
/usr/local/nginx/sbin/nginx -s stop   #绝对路径
signalfollow备注
stopfast shutdown
quitgraceful shutdown
reloadreloading the configuration file,重新加载配置文件,==“nginx -s quit”+“nginx”,但是它不需要中断业务
reopenreopening the log files

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exYr4lvo-1684141159533)(C:\Users\Eran\AppData\Roaming\Typora\typora-user-images\image-20230426185146914.png)]

4、master和worker进程的关系

https://www.cnblogs.com/yblackd/p/12194143.html

master管理worker进程,当worker进程死掉会重启一个,master是worker的父进程

1. 图示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WVUM4nkp-1684141159534)(C:\Users\Eran\AppData\Roaming\Typora\typora-user-images\image-20230426185431500.png)]

2. 关系
[root@nginx ~]# ps aux|grep nginx
root       1330  0.0  0.0  39308   940 ?        Ss   18:25   0:00 nginx: master process nginx
nginx      1331  0.0  0.1  39696  1820 ?        S    18:25   0:00 nginx: worker process
root       1426  0.0  0.0 112824   976 pts/0    R+   19:02   0:00 grep --color=auto nginx

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVCLgkbZ-1684141159534)(C:\Users\Eran\AppData\Roaming\Typora\typora-user-images\image-20230426190350692.png)]

  • master管理worker进程

  • 当worker进程死掉会重启一个,master是worker的父进程

  • 如果kill掉master,worker会人systemd为父,并且网页能继续访问。

    但如果reload,则会报错,因为它发送信号给master

5、nginx -t

测试nginx.conf配置文件是否有错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码精灵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值