安装nginx的两种方式详细过程和解释(yum安装和源码编译安装)
文章目录
nginx官网:http://nginx.org/en/download.html
1. yum安装
yum install nginx -y
底层需要知道nginx已经做好的rpm包存在的位置
2.yum安装和源码编译安装的区别
-
yum 也是linux里的软件安装的命令,但是yum可以帮助我们自动解决软件依赖关系
rpm 是linux里的软件安装的命令,不能自动解决依赖关系,需要手工完成 ,难度要大。
为什么软件之间有依赖关系?
- 软件有很多模块,有些功能某些软件已经有了,而且还非常好用,我们就可以直接调用,不需要自己再写一个
-
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
日志的好处:
- 排除故障:根据日志的记录
- 进行数据的分析
2、如何知道这台服务器是否安装过nginx
find / -name nginx
3、停止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 |
4、master和worker进程的关系
https://www.cnblogs.com/yblackd/p/12194143.html
master管理worker进程,当worker进程死掉会重启一个,master是worker的父进程
1. 图示
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
-
master管理worker进程
-
当worker进程死掉会重启一个,master是worker的父进程
-
如果kill掉master,worker会人systemd为父,并且网页能继续访问。
但如果reload,则会报错,因为它发送信号给master
5、nginx -t
测试nginx.conf配置文件是否有错误