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的市场份额

nginx || 编译安装_第1张图片

nginx || 编译安装_第2张图片

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

1,apt-get install nginx

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

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

2,编译安装

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

        编译安装经典的三部曲:

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

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

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

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


Ubuntu编译安装nginx

查看Ubuntu的版本

#查看Ubuntu的版本
root@nginx:~# cat /etc/issue 
Ubuntu 20.04 LTS \n \l

# 查看内核版本
root@nginx:~# uname -r
5.4.0-121-generic

下载nginx软件

# 1.curl是Linux里的字符界面的浏览器
root@sc-docker:~# curl -O http://nginx.org/download/nginx-1.23.1.tar.gz 
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1078k  100 1078k    0     0   275k      0  0:00:03  0:00:03 --:--:--  275k

# 2.wget 也是一个下载软件,也支持http协议,可以去网站下载软件
root@sc-docker:~# apt install wget -y

root@sc-docker:~# wget http://nginx.org/download/nginx-1.23.1.tar.gz

关闭防火墙

sudo ufw stop

# 设置防火墙开启不启动
sudo ufw disable

安装步骤

# 第一步:新建用户和组
id sc || useradd sc -s /sbin/nologin

# 第二步:新建/sc9,下载nginx软件(curl是Linux里字符界面的浏览器)
mkdir /sc9  -p
cd /sc9
# 一般设置这样的帐号是给启动服务的账号所用的,这只是让服务启动起来,但是不能登录系统。 

curl -O http://nginx.org/download/nginx-1.23.1.tar.gz

#第三步:解压,进入解压后的文件夹
tar xf nginx-1.23.1.tar.gz
cd nginx-1.23.1

# 第四步:编译前的配置
./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

# 根据需要开启某些功能或关闭某些功能
# --prefix=PATH     set installation prfix  指定安装路径
# --without-http   disable HTTP server  禁用http

# --with-mail       enable POP3/IMAP4/SMTP proxy module 开启
# --with-http_ssl_module     enable  ngx_http_ssl_module  开启

#第五步:解决软件的依赖关系,需要安装的软件包
apt install  libgd-dev libgeoip-dev libpcre3 libpcre3-dev libssl-dev gcc make -y

# 第六步:编译安装
make && make install

#第七步:修改PATH变量
echo "PATH=$PATH:/usr/local/sc99/sbin" >> /root/.bashrc
#执行修改了环境变量的脚本
source /root/.bashrc

#第八步:编写systemctl unit
root@nginx:/usr/lib/systemd/system# pwd
/usr/lib/systemd/system

root@nginx:/usr/lib/systemd/system# vim nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/sc99/logs/nginx.pid
ExecStart=/usr/local/sc99/sbin/nginx -c /usr/local/sc99/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

#第九步:重新加载nginx的配置
root@nginx:/usr/lib/systemd/system#systemctl daemon-reload

root@nginx:/usr/lib/systemd/system#systemctl start nginx

一键安装脚本

#!/bin/bash

#关闭和设置下次开机不启动防火墙
sudo ufw stop
sudo ufw disable

#关闭selinux
apt-get remove selinux
sed  -i '/^SELINUX=/ s/enforcing/disabled/' /etc/selinux/config

#解决软件的依赖关系,需要安装的软件包
apt install epel-release -y
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 

#新建lilin用户和组
id lilin || useradd lilin -s /sbin/nologin

#下载nginx软件
mkdir /lilin99 -p
cd /lilin99
wget https://nginx.org/download/nginx-1.21.4.tar.gz

#解压软件
tar xf nginx-1.21.4.tar.gz
#进入解压后的文件夹
cd nginx-1.21.4

#编译前的配置
./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

#如果上面的编译前的配置失败,直接退出脚本
if
	(( $? != 0 ));then
	exit
fi

#编译,启动2个进程去编译,这样速度快
make -j 2

#编译安装
make install

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

#执行修改了环境变量的脚本
source /root/.bashrc

#编写systemctl unit
cat >>/usr/lib/systemd/system/nginx.service <

centos编译安装nginx

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

service firewalld stop
systemctl disable firewalld

临时停止selinux和永久停止selinux

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

第一步:新建lil用户和组

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

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

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

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

tar xf nginx-1.23.1.tar.gz
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.永久修改

vim /root/.bashrc

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

需要重启系统:reboot

第八步:编写systemctl unit

[root@nginx system]# pwd
/usr/lib/systemd/system

[root@nginx system]# vim nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/sclil99/logs/nginx.pid
ExecStart=/usr/local/sclil99/sbin/nginx -c /usr/local/sclil99/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

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

[root@nginx logs]# systemctl daemon-reload

[root@nginx system]# systemctl start nginx

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


nginx的目录文件

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

conf 存放nginx的配置文件 config

[root@nginx logs]# cat nginx.pid 
33222

[root@nginx conf]# ls
fastcgi.conf    koi-utf  mime.types  scgi_params   win-utf
fastcgi_params  koi-win  nginx.conf  uwsgi_params

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

html 存放网站的网页的目录

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

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

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

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

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

nginx -s reload

systemctl restart nginx

判断nginx是否启动?

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


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

[root@nginx ~]# kill -3 20410

[root@nginx ~]# kill -term 20410

[root@nginx ~]# kill -9 20410

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

你可能感兴趣的:(nginx笔记,nginx,服务器,运维)