再写一篇,给51的研究学习画上句号,也是在B站于超老师那里学习过来的~~
一、nginx
1、五个网络IO模式对比
nginx属于异步IO模式,工作处理能力较为优秀~
2、Nginx优势
3、nginx版本
Nginx如今分为商业版,开源版,⽀持Linux与Windows平台下载使⽤
- nginx.com 商业版
- nginx.org 开源版
- https://tengine.taobao.org/ #淘宝基础nginx进行二次开发,有更优秀的高并发处理能力
4、安装环境准备
操作系统:CentOS Linux release 7.9.2009 (Core) 虚拟机:2C4G20G NAT网络
GCC编译环境:yum install -y gcc gcc-c++ autoconf automake make
模块依赖性:Nginx⽀持的功能模块需要有第三⽅的库⽀持,例如gzip的zlib
库,rewrite重写需要的pcre库,HTTPS需要的openssl库等等。
yum install zlib zlib-devel openssl openssl-devel pcre pcre devel wget httpd-tools vim
系统基础开发环境:yum groupinstall "Development Tools" "Basic Web Server"
确保防⽕墙关闭 iptables -F
关闭selinux
yum源配置正确
⽹络连接状态正常
5、Nginx下载安装
- yum⾃动安装,不⽀持⾃由扩展第三⽅功能
- 源码编译安装
1.下载Nginx源代码 nginx.org官⽹
[root@lnamp ~]# wget https://nginx.org/download/nginx-1.14.2.tar.gz
2.解压缩Nginx源代码
[root@lnamp ~]# tar -zxf nginx-1.14.2.tar.gz
3.复制Nginx默认提供的vim语法插件
[root@lnamp ~]# cd nginx-1.14.2
[root@lnamp nginx-1.14.2]# mkdir ~/.vim
[root@lnamp nginx-1.14.2]# cp -r contrib/vim/* ~/.vim/
4.Nginx源代码⽬录介绍
auto 检测系统模块
CHANGES nginx更改记录⽂件
conf 存放nginx配置⽂件
configure 释放编译⽂件的定制脚本
contrib 提供了perl与vim插件
html 存放标准html⻚⾯语法
src 存放nginx源码
5.开始编译Nginx,扩展编译模块
#列出Nginx的编译选项,如制定安装路径,配置⽂件、⽇志⽂件等路径,指定开启模块功能等
[root@lnamp nginx-1.14.2]# ./configure --help #可以查看相关使用命令手册
6、编译Nginx初步
[root@lnamp nginx-1.14.2]# ./configure --prefix=/home/Learn_Nginx/nginx/ --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-threads --with-file-aio
6.执⾏make编译
make
7.⾸次编译安装,⽣成Nginx的可执⾏命令
make install
8.检查Prefix指定的安装⽬录
[root@lnamp ~]# cd nginx-1.14.2 ls /home/Learn_Nginx/
nginx
9.Nginx的程序⽬录
[root@lnamp nginx-1.14.2]# cd /home/Learn_Nginx/nginx
[root@lnamp nginx]# ls
依次是配置⽂件,静态⽂件,⽇志,⼆进制命令⽬录
10.创建nginx的环境变量⽂件,修改如下,创建/etc/profile.d/nginx.sh
脚本⽂件便于以后维护
[root@lnamp nginx]# vim /etc/profile.d/nginx.sh
export PATH=/home/Learn_Nginx/nginx/sbin:$PATH
11.退出会话,重新登录终端,此时可以正常使⽤nginx
[root@lnamp ~]# echo $PATH
/home/Learn_Nginx/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
12.检查nginx的编译模块信息
Nginx Nginx配置⽂件语法
nginx.conf指令注释
nginx.conf重要的指令块
Nginx命令⾏
nginx帮助指令
nginx默认为80访问端口,启动后在浏览器验证
Nginx-master信号
热部署(版本更换)
热部署指的是 在不重启或关闭进程情况下,新应⽤直接替换掉旧的应⽤
环境准备:
旧版本:nginx/1.14.2
新版本:nginx/1.18.0
热部署具体操作
1.备份旧版本的nginx⼆进制⽂件
2.检查旧版本nginx的编译参数
3.编译安装新版本nginx
[root@lnamp sbin]# cd /home/Learn_Nginx/
#下载新nginx源码
wget https://nginx.org/download/nginx-1.18.0.tar.gz #新版本下载地址
[root@lnamp Learn_Nginx]# tar -zxf nginx-1.18.0.tar.gz #解压
#编译安装新版本nginx
[root@lnamp nginx-1.18.0]# ./configure --prefix=/home/Learn_Nginx/nginx/ --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module --with-threads --with-file-aio
#编译安装
[root@lnamp nginx-1.18.0]# make && make install
4.此时发现已存在2个版本nginx程序
[root@lnamp sbin]# ls
nginx nginx.old
5.替换旧的nginx可执⾏⽂件
cp -a /home/Learn_Nginx/nginx-1.18.0/objs/nginx /home/Learn_Nginx/nginx/sbin/
5.1检查旧的nginx进程,请注意,旧版本nginx之前必须是用绝对路径启动,否则发送kill -USR2 信号后无法启动新进程!!!
[root@lnamp Learn_Nginx]# cat nginx/logs/nginx.pid #检查旧的nginx进程
29639
6.发送USR2信号给旧版本主进程,使得nginx旧版本停⽌接收请求,切换为新nginx版本
[root@lnamp Learn_Nginx]# kill -USR2 `cat nginx/logs/nginx.pid`
[root@lnamp Learn_Nginx]# ps -ef | grep nginx
7.检查此时的nginx进程
nginx-master⾸先会重命名pid⽂件,在⽂件后⾯添加.oldbin后缀
然后会再启动⼀个新的master进程以及worker,且使⽤的是新版Nginx
nginx能够⾃动将新来的请求,过度到新版master进程下,实现平滑过度
#可以发现新的master进程由旧master启动,由PPID可看出
8.发送WINCH信号给旧master进程,优雅的关闭旧worker进程
[root@lnamp Learn_Nginx]# kill -WINCH `cat nginx/logs/nginx.pid`
#再次检查进程情况,旧master的worker已经关闭了,旧master不会⾃⼰退
出,⽤作版本回退
9.如果你觉得没问题了,可以关闭旧master进程
kill -9 旧进程
mysql
1、下载解压缩二进制mysql代码
已经编译安装完成,下载后可以直接使用命令
cd /opt
wget https://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar
tar -xvf mysql-5.7.36-linux-glibc2.12-x86_64.tar #解压
tar -zxf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz
[root@lnamp mysql-5.7.36-linux-glibc2.12-x86_64]# cd bin/ #可看到很多可执行命令
2、配置软连接,快捷访问mysql
[root@lnamp opt]# ln -s /opt/mysql-5.7.36-linux-glibc2.12-x86_64/ /opt/mysql
3、安全性的准备工作,卸载centos7存在的mariadb的相关依赖关系
rpm -e --nodeps mariadb-libs