当前位置:   article > 正文

nginx || 编译安装_nginx 编译安装

nginx 编译安装

web是什么?

web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。

是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。

nginx是什么?

nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.

nginx [engine x]是一个HTTP和反向代理服务器,邮件代理服务器和通用TCP/UDP代理服务器,最初由Igor Sysoev编写。

nginx是一个做网站服务器的软件,是静态的网站

nginx可以作反向代理服务 --》4层 7层

正向代理 vs 反向代理

正向代理:代理客户端
反向代理:代理服务器,隐藏后端真实的服务器

HTTP:就是一个传输网页的协议,在浏览器和web服务器(nginx,tomcat等)软件之家间通信

nginx的市场份额

 安装(yum 安装,编译安装)

1,apt-get install nginx

        到nginx或者centos的官方去下载nginx的软件包安装

        这种方式安装优点:快建,方便,高效

2,编译安装

nginx是c语言编写的,将源码编译成二进制程序,然后安装,需要自己解决软件之间的依赖关系,会需要指定很多的配置,难度大,可以定制开启需要的功能--》可以定制功能和指定安装路径

        编译安装经典的三部曲:

                1,编译前的配置:定制的方案

                        ./configure  ...... --》生成一个叫makefile的文件

                2,编译:将源代码编译成二进制程序

                3,编译安装:将已经编译好的二进制程序安装(cp)到指定的路径


Ubuntu编译安装nginx

查看Ubuntu的版本

  1. #查看Ubuntu的版本
  2. root@nginx:~# cat /etc/issue 
  3. Ubuntu 20.04 LTS \n \l
  4. # 查看内核版本
  5. root@nginx:~# uname -r
  6. 5.4.0-121-generic

下载nginx软件

  1. # 1.curl是Linux里的字符界面的浏览器
  2. root@sc-docker:~# curl -O http://nginx.org/download/nginx-1.23.1.tar.gz
  3. % Total % Received % Xferd Average Speed Time Time Time Current
  4. Dload Upload Total Spent Left Speed
  5. 100 1078k 100 1078k 0 0 275k 0 0:00:03 0:00:03 --:--:-- 275k
  6. # 2.wget 也是一个下载软件,也支持http协议,可以去网站下载软件
  7. root@sc-docker:~# apt install wget -y
  8. root@sc-docker:~# wget http://nginx.org/download/nginx-1.23.1.tar.gz

关闭防火墙

  1. sudo ufw stop
  2. # 设置防火墙开启不启动
  3. sudo ufw disable

安装步骤

  1. # 第一步:新建用户和组
  2. id sc || useradd sc -s /sbin/nologin
  3. # 第二步:新建/sc9,下载nginx软件(curl是Linux里字符界面的浏览器)
  4. mkdir /sc9  -p
  5. cd /sc9
  6. # 一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。
  7. curl -O http://nginx.org/download/nginx-1.23.1.tar.gz
  8. #第三步:解压,进入解压后的文件夹
  9. tar xf nginx-1.23.1.tar.gz
  10. cd nginx-1.23.1
  11. # 第四步:编译前的配置
  12. ./configure --prefix=/usr/local/sc99  --user=sc --group=sc  --with-http_ssl_module  --with-threads --with-http_v2_module --with-http_stub_status_module  --with-stream --with-http_geoip_module --with-http_gunzip_module
  13. # 根据需要开启某些功能或关闭某些功能
  14. # --prefix=PATH     set installation prfix  指定安装路径
  15. # --without-http   disable HTTP server  禁用http
  16. # --with-mail       enable POP3/IMAP4/SMTP proxy module 开启
  17. # --with-http_ssl_module     enable  ngx_http_ssl_module  开启
  18. #第五步:解决软件的依赖关系,需要安装的软件包
  19. apt install  libgd-dev libgeoip-dev libpcre3 libpcre3-dev libssl-dev gcc make -y
  20. # 第六步:编译安装
  21. make && make install
  22. #第七步:修改PATH变量
  23. echo "PATH=$PATH:/usr/local/sc99/sbin" >> /root/.bashrc
  24. #执行修改了环境变量的脚本
  25. source /root/.bashrc
  26. #第八步:编写systemctl unit
  27. root@nginx:/usr/lib/systemd/system# pwd
  28. /usr/lib/systemd/system
  29. root@nginx:/usr/lib/systemd/system# vim nginx.service
  30. [Unit]
  31. Description=nginx - high performance web server
  32. Documentation=http://nginx.org/en/docs/
  33. After=network-online.target remote-fs.target nss-lookup.target
  34. Wants=network-online.target
  35. [Service]
  36. Type=forking
  37. PIDFile=/usr/local/sc99/logs/nginx.pid
  38. ExecStart=/usr/local/sc99/sbin/nginx -c /usr/local/sc99/conf/nginx.conf
  39. ExecReload=/bin/kill -s HUP $MAINPID
  40. ExecStop=/bin/kill -s TERM $MAINPID
  41. [Install]
  42. WantedBy=multi-user.target
  43. #第九步:重新加载nginx的配置
  44. root@nginx:/usr/lib/systemd/system#systemctl daemon-reload
  45. root@nginx:/usr/lib/systemd/system#systemctl start nginx

一键安装脚本

  1. #!/bin/bash
  2. #关闭和设置下次开机不启动防火墙
  3. sudo ufw stop
  4. sudo ufw disable
  5. #关闭selinux
  6. apt-get remove selinux
  7. sed -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config
  8. #解决软件的依赖关系,需要安装的软件包
  9. apt install epel-release -y
  10. apt -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc-c++ autoconf automake make psmisc net-tools lsof vim geoip geoip-devel wget
  11. #新建lilin用户和组
  12. id lilin || useradd lilin -s /sbin/nologin
  13. #下载nginx软件
  14. mkdir /lilin99 -p
  15. cd /lilin99
  16. wget https://nginx.org/download/nginx-1.21.4.tar.gz
  17. #解压软件
  18. tar xf nginx-1.21.4.tar.gz
  19. #进入解压后的文件夹
  20. cd nginx-1.21.4
  21. #编译前的配置
  22. ./configure --prefix=/usr/local/sclilin99 --user=lilin --group=lilin --with-http_ssl_module --with-threads --with-http_v2_module --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_gunzip_module
  23. #如果上面的编译前的配置失败,直接退出脚本
  24. if
  25. (( $? != 0 ));then
  26. exit
  27. fi
  28. #编译,启动2个进程去编译,这样速度快
  29. make -j 2
  30. #编译安装
  31. make install
  32. #修改PATH变量
  33. echo "PATH=$PATH:/usr/local/sclilin99/sbin" >> /root/.bashrc
  34. #执行修改了环境变量的脚本
  35. source /root/.bashrc
  36. #编写systemctl unit
  37. cat >>/usr/lib/systemd/system/nginx.service <<EOF
  38. [Unit]
  39. Description=nginx - high performance web server
  40. Documentation=http://nginx.org/en/docs/
  41. After=network-online.target remote-fs.target nss-lookup.target
  42. Wants=network-online.target
  43. [Service]
  44. Type=forking
  45. PIDFile=/usr/local/sclilin99/logs/nginx.pid
  46. ExecStart=/usr/local/sclilin99/sbin/nginx -c /usr/local/sclilin99/conf/nginx.conf
  47. ExecReload=/bin/kill -s HUP $MAINPID
  48. ExecStop=/bin/kill -s TERM $MAINPID
  49. [Install]
  50. WantedBy=multi-user.target
  51. EOF
  52. # 重新加载nginx的配置
  53. systemctl daemon-reload
  54. systemctl start nginx

centos编译安装nginx

stop firewall和设置下次开机不启动firewalld

  1. service firewalld stop
  2. systemctl disable firewalld

临时停止selinux和永久停止selinux

  1. setenforce 0
  2. sed  -i '/^SELINUX=/ s/enforcing/disabled/' /etc/sysconfig/selinux 

第一步:新建lil用户和组

id lil || useradd lil -s /sbin/nologin

一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。 
第二步:新建/lil99,下载nginx软件

  1. mkdir /lil99 -p
  2. cd /lil99
  3. wget https://nginx.org/download/nginx-1.23.1.tar.gz

第三步:解压软件,进入解压后的文件夹

  1. tar xf nginx-1.23.1.tar.gz
  2. cd nginx-1.23.1

第四步:编译前的配置

./configure --prefix=/usr/local/sclil99  --user=lil --group=lil  --with-http_ssl_module  --with-threads --with-http_v2_module --with-http_stub_status_module  --with-stream  --with-http_gunzip_module

第五步:解决软件的依赖关系,需要安装的软件包

yum install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc-c++ autoconf automake make psmisc net-tools lsof -y

第六步:编译安装

make && make install

第七步:修改PATH变量

1.临时修改

PATH=$PATH:/usr/local/sclil99/sbin

2.永久修改

  1. vim /root/.bashrc
  2. PATH=$PATH:/usr/local/sclil99/sbin

需要重启系统:reboot

第八步:编写systemctl unit

  1. [root@nginx system]# pwd
  2. /usr/lib/systemd/system
  3. [root@nginx system]# vim nginx.service
  4. [Unit]
  5. Description=nginx - high performance web server
  6. Documentation=http://nginx.org/en/docs/
  7. After=network-online.target remote-fs.target nss-lookup.target
  8. Wants=network-online.target
  9. [Service]
  10. Type=forking
  11. PIDFile=/usr/local/sclil99/logs/nginx.pid
  12. ExecStart=/usr/local/sclil99/sbin/nginx -c /usr/local/sclil99/conf/nginx.conf
  13. ExecReload=/bin/kill -s HUP $MAINPID
  14. ExecStop=/bin/kill -s TERM $MAINPID
  15. [Install]
  16. WantedBy=multi-user.target

第九步:重新加载nginx的配置

  1. [root@nginx logs]# systemctl daemon-reload
  2. [root@nginx system]# systemctl start nginx

通过systemctl 来启动,重启,关闭nginx


nginx的目录文件

  1. [root@jack nginx-1.23.1]# cd /usr/local/sclil99
  2. [root@jack sclil99]# ls
  3. conf  html  logs  sbin

conf 存放nginx的配置文件 config

  1. [root@nginx logs]# cat nginx.pid 
  2. 33222
  3. [root@nginx conf]# ls
  4. fastcgi.conf    koi-utf  mime.types  scgi_params   win-utf
  5. fastcgi_params  koi-win  nginx.conf  uwsgi_params

nginx.conf 是nginx的主配置文件
nginx.conf的作用:其实就是给nginx进程传递参数的,告诉nginx如何按照人的要求去运行

html 存放网站的网页的目录

  1.     [root@jack sclil99]# ls html
  2.     50x.html  index.html
  3.     # index.html 首页:进入某个网站看到的第一个页面

logs 存放日志
sbin 存放nginx的启动程序的

  1. [root@nginx logs]# ls
  2. access.log  error.log  nginx.pid

access.log  正常的访问日志
error.log   访问出错的日志
nginx.pid   里面存放master进程的进程号

每次更改了配置文件,需要重新启动nginx

  1. nginx -s reload
  2. systemctl restart nginx

判断nginx是否启动?

    看端口:netstat -anplut,ss -anplut,lsof -i:80
    看进程:ps aux|grep nginx
    直接访问
    看日志:tail -f access.log


signal 信号:进程与进程之间通信的方式之一

  1. [root@nginx ~]# kill -3 20410
  2. [root@nginx ~]# kill -term 20410
  3. [root@nginx ~]# kill -9 20410
  4. [root@nginx ~]# kill -l
  5.  1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
  6.  6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
  7. 11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
  8. 16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
  9. 21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
  10. 26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
  11. 31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
  12. 38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
  13. 43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
  14. 48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
  15. 53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
  16. 58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
  17. 63) SIGRTMAX-1    64) SIGRTMAX

1) SIGHUP

        nohup 可以用来屏蔽hup信号

本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。

9) SIGKILL
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略
告诉Linux内核去强制杀死进程

15) SIGTERM
程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。

3) SIGQUIT
和SIGINT类似, 但由QUIT字符(通常是Ctrl-/)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。

2) SIGINT
程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。

trap 屏蔽各种信号,唯独9不能屏蔽

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/578353
推荐阅读
相关标签
  

闽ICP备14008679号