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

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

文章目录

  • 安装nginx的两种方式详细过程和解释(yum安装和源码编译安装)
    • 1. yum安装
    • 2.yum安装和源码编译安装的区别
    • 3. 同时安装是否冲突
    • 4. 挂载
        • 解挂
    • 5. 编译安装
      • (1) 下载nginx
      • (2) 解决依赖关系
      • (3) configure
      • (4) 安装
      • (5) 安装成功之后:
          • 1、查看nginx进程是否开启
            • 1. 查看进程
            • 2. 查看端口
            • 3. 查看日志
          • 2、如何知道这台服务器是否安装过nginx
          • 3、停止nginx
        • 4、master和worker进程的关系
          • 1. 图示
          • 2. 关系
        • 5、`nginx -t`

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   #绝对路径
signal follow 备注
stop fast shutdown
quit graceful shutdown
reload reloading the configuration file, 重新加载配置文件,==“nginx -s quit”+“nginx”,但是它不需要中断业务
reopen reopening the log files

安装nginx的两种方式详细过程和解释(yum安装和源码编译安装)_第1张图片

4、master和worker进程的关系

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

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

1. 图示

安装nginx的两种方式详细过程和解释(yum安装和源码编译安装)_第2张图片

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

安装nginx的两种方式详细过程和解释(yum安装和源码编译安装)_第3张图片

  • master管理worker进程

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

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

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

5、nginx -t

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

你可能感兴趣的:(nginx,nginx,linux,运维)