web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。
是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
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层
正向代理:代理客户端
反向代理:代理服务器,隐藏后端真实的服务器
HTTP:就是一个传输网页的协议,在浏览器和web服务器(nginx,tomcat等)软件之家间通信
到nginx或者centos的官方去下载nginx的软件包安装
这种方式安装优点:快建,方便,高效
nginx是c语言编写的,将源码编译成二进制程序,然后安装,需要自己解决软件之间的依赖关系,会需要指定很多的配置,难度大,可以定制开启需要的功能--》可以定制功能和指定安装路径
编译安装经典的三部曲:
1,编译前的配置:定制的方案
./configure ...... --》生成一个叫makefile的文件
2,编译:将源代码编译成二进制程序
3,编译安装:将已经编译好的二进制程序安装(cp)到指定的路径
#查看Ubuntu的版本
root@nginx:~# cat /etc/issue
Ubuntu 20.04 LTS \n \l
# 查看内核版本
root@nginx:~# uname -r
5.4.0-121-generic
# 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 <
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
[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
看端口:netstat -anplut,ss -anplut,lsof -i:80
看进程:ps aux|grep nginx
直接访问
看日志:tail -f access.log
[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不能屏蔽