nginx的优势
是c语言开发的一个web框架 官方声称支持10W+的并发
天下武功 唯快不破 tengine+ uwsgi(多进程) + django
你公司的技术栈是什么样?
centos7 + python3.6 + mariadb + redis + django + nginx + vue + git 便宜,免费
花钱的老企业,国企,外企
redhat + java + oracle + memcachd + tomcat + apache + svn 闭源收费的技术栈
红帽操作系统有问题之后,有专业的红帽资格认证工程师,进行工单处理
认证都是需要花钱
rhcsa 红帽系统管理
rhce 红帽工程师认证
rhca 红帽的架构师
redis
yum install redis
yum remove redis 卸载redis
使用编译安装redis
nginx安装配置
1.编译安装nginx软件,此步非常重要,
1.编译安装nginx软件,此步非常重要,
1.编译安装nginx软件,此步非常重要,
1.编译安装nginx软件,此步非常重要,
1.编译安装nginx软件,此步非常重要,
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
1.下载源码包
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.解压缩源码
tar -zxvf nginx-1.12.0.tar.gz
3.配置,编译安装 开启nginx状态监测功能
./configure --prefix=/opt/nginx112/
4.启动nginx,进入sbin目录,找到nginx启动命令
cd sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload #平滑重启 ,修改了nginx.conf之后,可以不重启服务,加载新的配置
5.分析nginx的工作目录,内容
[root@qishione nginx112]# ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
conf 存放nginx的配置文件的
nginx.conf 这里是控制nginx所有功能的文件
html 存放网页html的目录
index.html
logs 存放log日志文件
sbin 存放nginx可执行命令的
nginx脚本命令
#user nobody;nginx的工作进程数,以cpu核数为数量
cat nginx.conf 核心配置如下
#定义nginx工作进程数
worker_processes 5;
#错误日志
#error_log logs/error.log;
#http定义代码主区域
http {
include mime.types;
default_type application/octet-stream;
#定义nginx的访问日志功能
#nginx会有一个accses.log功能,查看用户访问的记录
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#开启日志功能
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
#开启gzip压缩传输
gzip on;
#虚拟主机1 定义一个 斗鱼网站
server {
#定义nginx的访问入口端口,访问地址是 192.168.11.37:80
listen 80;
#定义网站的域名www.woshidouyu.tv
#如果没有域名,就填写服务器的ip地址 192.168.11.37
server_name www.woshidouyu.tv;
#nginx的url域名匹配
#只要请求来自于www.woshidouyu.tv/111111111
#只要请求来自于www.woshidouyu.tv/qweqwewqe
#只要请求来自于www.woshidouyu.tv/qweqwewqe
#最低级的匹配,只要来自于www.woshidouyu.tv这个域名,都会走到这个location
location / {
#这个root参数,也是关键字,定义网页的根目录
#以nginx安装的目录为相对路径 /opt/nginx112/html
#可以自由修改这个root定义的网页根目录
root html;
#index参数定义网站的首页文件名,默认的文件名
index index.html index.htm;
}
#错误页面的优化
error_page 400 401 402 403 404 /40x.html;
}
}
nginx多虚拟主机的配置
1.在nginx.conf中添加两个虚拟主机标签 server{}
配置文件如下
server {
listen 80;
server_name qishijd.com;
location / {
root /opt/jd;
index index.html index.htm;
}
error_page 404 /40x.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name qishitb.com;
location / {
root /opt/tb;
index index.html;
}
}
2.重启nginx,加载新的配置
nginx -s stop
nginx
3.修改windows的本地hosts解析文件,用于域名解析
windows的hosts文件路径
C:\Windows\System32\drivers\etc
写入如下配置
192.168.11.37 qishitb.com
192.168.11.37 qishijd.com
4.准备两个虚拟主机的 index.html文件
/opt/jd/index.html 写入 我是京东
/opt/tb/index.html 写入 我是淘宝
5.在windows浏览器中,查看两个域名对应到的虚拟主机
分别访问qishijd.com 域名
然后访问qishitb.com 域名,查看网站的资料的内容变化
nginx的错误页面优化的功能:
通过error_page参数定义错误页面的 html文件
server {
listen 80;
server_name qishijd.com;
location / {
root /opt/jd;
index index.html index.htm;
}
#这个错误页面就应该存放在 /opt/jd/40x.html
error_page 404 /40x.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
nginx访问日志功能
配置方式
1.修改nginx.conf配置文件,打开如下配置注释
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#开启日志功能
access_log logs/access.log main;
nginx拒绝访问功能
在某一个虚拟主机下,顶一个deny参数,可以拒绝ip地址对虚拟主机的访问
server {
listen 80;
server_name qishijd.com;
#只要192.168.11.37这个ip访问 qishijd.com/
location / {
#deny 192.168.11.0/24;
root /opt/jd;
index index.html index.htm;
}
error_page 404 /40x.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
nginx代理功能
生活中的代理
1. 代购
我们花钱, 给 做代理的 这个人 ,, 这个代理 去国外买东西,邮寄给我们
2. 租房
个体 > 房东
个体拿到钥匙 < 房东给钥匙
个体 > 链家,房屋中介 > 链接代理手中,有房东的资源
个体 < 链接 < 房东
www.luffycity.com/girl.jpg
nginx只能处理服务器上的静态资源
css js html mp4
动态资源
与数据库交互,从数据库中取出数据,这个资源
数据库数据变化的时候,用户是不会感知到的,请求的借口根本没有变化
www.luffycity.com/动态数据
发了一个 www.luffycity.com:80,丢给了服务器上的 nginx软件
www.luffycity.com/login
用户 > nginx > uwsgi(django)
用户 < nginx < uwsgi(django)
nginx的反向代理功能
1.实验准备,准备2台nginx机器
机器1 192.168.11.37 用作 web服务器,用作数据返回
机器2 192.168.11.167 用作nginx反向代理服务器
在windows中访问 代理服务器,然后让代理服务器 去拿 web服务器的数据
windows > 192.168.11.158 > 192.168.11.37
windows < 192.168.11.158 < 192.168.11.37
1.准备机器1,只是对数据页面的一个返回
server {
listen 80;
server_name 192.168.11.37;
#charset koi8-r;
location / {
root html;
index index.html index.htm;
}
}
2.准备机器2,用作nginx的反向代理服务器,这个机器不存数据,只转发请求
配置如下
server {
listen 80;
server_name 192.168.11.158;
#charset koi8-r;
#access_log logs/host.access.log main;
#在这里进行反向代理配置
#192.168.11.158/
location / {
proxy_pass http://192.168.11.37;
#root html;
#index index.html index.htm;
}
}
nginx的负载均衡,顾名思义,
压力分担
1.集群是什么
一堆服务器做一件事
2.集群性能很高
淘宝本来的核心支付服务器是小型机,非常昂贵,且难以维护
后来都讲 服务器更换为集群架构
一堆便宜的服务器,维护者一个功能运转
3.高可用
单点机器很可能宕机
集群单机机器宕机,不会影响整体的运转
nginx负载均衡的配置
1.实验如下
准备三台机器
机器1 nginx负载均衡器(发牌的荷官) 192.168.11.158
nginx.conf配置如下
#定义nginx负载均衡池,里面默认是轮训算法
#也可以用weight 权重算法
#也可以用ip_hash 算法
upstream nginx_pools {
server 192.168.11.37 weight=10;
server 192.168.11.167 ;
}
server {
listen 80;
server_name 192.168.11.158;
#charset koi8-r;
#access_log logs/host.access.log main;
#在这里进行反向代理配置
#192.168.11.158/
location / {
proxy_pass http://nginx_pools;
}
}
机器2 准备nginx 返回页面数据 192.168.11.37
nginx.conf配置如下
server {
listen 80;
server_name 192.168.11.37;
location / {
root /opt/jd;
index index.html index.htm;
}
error_page 404 /40x.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
机器3 也准备nginx 返回页面数据 192.168.11.167
server {
listen 80;
server_name 192.168.11.167;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
2.分别启动三台机器,三个nginx服务
3.在windows中访问负载均衡器的地址,查看请求分发,
访问 192.168.11.158
今日作业:
1.完成nginx的编译安装
2.完成nginx的多虚拟主机
提供qishijd.com
qishitb.com
访问到不同的页面
3.完成nginx的 404错误页面
4.完成nginx的负载均衡配置 (项目部署就是通过 nginx转发请求给uwsgi的)
linux屏保安装
1.下载屏保软件源码包
wget https://jaist.dl.sourceforge.net/project/cmatrix/cmatrix/1.2a/cmatrix-1.2a.tar.gz
2.解压缩源码包
tar -zxvf cmatrix-1.2a.tar.gz
3.进入源码包目录
cd cmatrix-1.2a/
4.释放编译文件
./configure --prefix=/opt/cmatrix/
5.编译且安装
make && make install
6.进入安装屏保软件的目录
cd /opt/cmatrix/
7.执行屏保命令
./bin/cmatrix