yum install nginx -y
底层需要知道nginx已经做好的rpm包存在的位置
yum 也是linux里的软件安装的命令,但是yum可以帮助我们自动解决软件依赖关系
rpm 是linux里的软件安装的命令,不能自动解决依赖关系,需要手工完成 ,难度要大。
为什么软件之间有依赖关系?
yum相当于去衣服专卖店直接购买衣服: 衣服已经做好的,款式,颜色都是固定的,不能修改了
rpm相当于去裁缝店定制衣服,选款式,颜色,面料,量尺寸等操作,不能立马就做出衣服,需要一个制作的过程。
启动nginx时会产生冲突。因为默认都想抢占80端口。
如果不使用相同的端口,则不会冲突。可以修改其中一个的端口号。
yum安装:
[root@nginx sbin]# vi /etc/nginx/nginx.conf
#修改端口号(listen:80)
[root@nginx sbin]# service nginx restart
一个nginx是一个网站,占用不同的端口
挂载镜像文件到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
完整脚本如下:
[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
curl -O http://nginx.org/download/nginx-1.23.4.tar.gz
yum -y install gcc openssl-devel pcre pcre-devel automake make
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的配置去编译程序成二进制文件,二进制文件就是执行可以运行的程序
make install
[root@nginx nginx-1.23.4]# cd /usr/local/nginx
[root@nginx nginx]# ls
conf html logs sbin
[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
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
netstat -anplut |grep nginx
[root@nginx nginx]# cd /usr/local/nginx/logs
[root@nginx logs]# ls
access.log error.log nginx.pid
日志的好处:
find / -name nginx
./nginx -s stop #相对路径
/usr/local/nginx/sbin/nginx -s stop #绝对路径
signal | follow | 备注 |
---|---|---|
stop | fast shutdown | |
quit | graceful shutdown | |
reload | reloading the configuration file, | 重新加载配置文件,==“nginx -s quit”+“nginx”,但是它不需要中断业务 |
reopen | reopening the log files |
https://www.cnblogs.com/yblackd/p/12194143.html
master管理worker进程,当worker进程死掉会重启一个,master是worker的父进程
[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
master管理worker进程
当worker进程死掉会重启一个,master是worker的父进程
如果kill掉master,worker会人systemd为父,并且网页能继续访问。
但如果reload,则会报错,因为它发送信号给master
nginx -t
测试nginx.conf配置文件是否有错误