linux基础之nginx 详述03
2022/1/6 7:33:53
本文主要是介绍linux基础之nginx 详述03,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- nginx
- 1、location
- 1.1 location匹配符号
- 1.2 案例:把超级玛丽的图片文件夹共享到NFS
- 2、LNMP架构
- 2.1 uwsgi
- 2.2 uwsgi服务部署
- 3、部署BBS项目
- 1、location
nginx
1、location
使用Nginx Location可以控制访问网站的路径, 但一个server可以有多个location配置, 多个location的具有不同的优先级区分。
1.1 location匹配符号
匹配符 | 匹配规则 | 优先级 |
---|---|---|
= | 精确匹配 | 1 |
^~ | 以某个字符串开头 | 2 |
~ | 区分大小写的正则匹配 | 3 |
~* | 不区分大小写的正则匹配 | 3 |
/ | 通用匹配,任何请求都会匹配到 | 4 |
# 优先级测试:测出一个优先级就注释掉一个location,再重启nginx继续测试下一个优先级。 1.编辑配置文件 [root@web03 conf.d]# vim game4.conf server { listen 80; server_name _; location ~* /python { default_type text/html; return 200 "Location ~*"; } location ~ /Python { default_type text/html; return 200 "Location ~"; } location ^~ /python { default_type text/html; return 200 "Location ^~"; } location = /python { default_type text/html; return 200 "Location ="; } } 2.重启nginx,然后去浏览器访问http://192.168.15.9/python [root@web03 conf.d]# systemctl restart nginx
1.2 案例:把超级玛丽的图片文件夹共享到NFS
1.创建挂载点并给权限 root@nfs ~]# cd /opt [root@nfs opt]# mkdir /opt/img [root@nfs opt]# ll [root@nfs opt]# vim /etc/exports # 新增以下内容后保存退出 /opt/img 172.16.1.0/20(rw,sync,all_squash,anonuid=666,anongid=666) [root@nfs opt]# chown -R www.www /opt/img/ [root@nfs opt]# cd 2.重启nfs和rpcbind [root@nfs ~]# systemctl restart nfs-server rpcbind 3.查看当前挂载点是否有刚刚创建的点 [root@nfs ~]# showmount -e 4.去客户端挂载 [root@web03 opt]# mkdir image [root@web03 opt]# cd image [root@web03 image]# mkdir images [root@web03 opt]# mount -t nfs 172.16.1.31:/opt/img /opt/image 5.查看挂载 [root@web03 opt]# df -h 6.移动图片文件夹的所有文件到挂载的目录 [root@web03 opt]# mv Super_Marie/images/* /opt/image/images/ 7.删除原图片文件夹 [root@web03 Super_Marie]# rm -rf images/ 8.修改配置文件,键入以下内容并保存 [root@web03 conf.d]# vim game5.conf server { listen 80; server_name 192.168.15.9; location / { root /opt/Super_Marie; index index.html; } } 9.重启nginx,然后去浏览器访问192.168.15.9,页面无图片。 [root@web03 conf.d]# systemctl restart nginx 10.修改配置文件,新增一个location来新增图片访问的路径 [root@web03 conf.d]# vim game5.conf server { listen 80; server_name 192.168.15.9; location / { root /opt/Super_Marie; index index.html; } location ~ /image { root /opt/image; } } 11.重启nginx,然后去浏览器访问192.168.15.9,页面有图片了。 [root@web03 conf.d]# systemctl restart nginx 12.在其他的客户端也新增挂载点然后挂载到NFS就可以实现共享了。
2、LNMP架构
LNMP是一套技术的组合,L=Linux、N=Nginx、M~=MySQL、P~=Python 首先Nginx服务是不能处理动态请求,那么当用户发起动态请求时, Nginx又是如何进行处理的。 1.静态请求:请求的内容是静态文件就是静态请求 1)静态文件:文件上传到服务器,永远不会改变的文件就是静态文件 2)html就是一个标准的静态文件 2.动态请求:请求的内容是动态的就是动态请求 1)不是真实存在服务器上的内容,是通过数据库或者其他服务拼凑成的数据 当用户发起http请求,请求会被Nginx处理,如果是静态资源请求Nginx则直接返回,如果是动态请求Nginx则通过uwsgi协议转交给后端的Python程序处理
2.1 uwsgi
因为nginx不支持wsgi协议,无法直接调用py开发的webApp(python开发的网站)。 在nginx + uwsgi + Django的框架里,nginx代理+ webServer,uwsgi是wsgiServer,Django是webApp。 nginx接收用户请求,并判定哪些转发到uWsgi,uWsgi再去调用pyWebApp。
2.2 uwsgi服务部署
1、创建用户:统一用户 [root@web03 opt]# groupadd django -g 888 [root@web03 opt]# useradd django -u 888 -g 888 -r -M -s /bin/sh 2、安装依赖软件 [root@web03 opt]# yum install python3 libxml* python-devel gcc* pcre-devel openssl-devel python3-devel -y 3、安装Django和uwsgi [root@web03 opt]# pip3 install django [root@web03 opt]# pip3 install uwsgi 4、创建项目 [root@web03 opt]# cd /opt [root@web03 opt]# django-admin startproject linux [root@web03 opt]# cd linux [root@web03 opt]# django-admin startapp app01 [root@web03 linux]# vim linux/settings.py ALLOWED_HOSTS = ['*'] # 允许所有的ip都能访问 DATABASES = {} # 启动测试,然后去浏览器访问192.168.15.9:8000 [root@web03 linux]# python3 manage.py runserver 0.0.0.0:8000 5、编辑项目配置文件:键入以下内容并保存 [root@localhost ~]# vim /opt/linux/myweb_uwsgi.ini [uwsgi] # 端口号 socket = :8000 # 指定项目的目录 chdir = /opt/linux # wsgi文件路径 wsgi-file = linux/wsgi.py # 模块wsgi路径 module = linux.wsgi # 是否开启master进程 master = true # 工作进程的最大数目 processes = 4 # 结束后是否清理文件 vacuum = true 6、启动uwsgi [root@web03 linux]# uwsgi -d --ini myweb_uwsgi.ini --uid 666 -d : 以守护进程方式运行 --ini : 指定配置文件路径 --uid : 指定uid # 这时候再去浏览器访问192.168.15.9:8000已经不能访问了, 因为uwsgi是一种TCP服务,需要转换成http服务才能在浏览器访问。TCP 服务包含http,http不包含tcp。如果需要访问的话就需要nginx来进行转换。 7、编辑Nginx配置文件:键入以下内容并保存 [root@web03 nginx]# cd /etc/nginx/conf.d/ [root@web03 conf.d]# ll [root@web03 conf.d]# vim /etc/nginx/conf.d/python.conf server { listen 80; server_name py.test.com; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; uwsgi_read_timeout 2; uwsgi_param UWSGI_SCRIPT linux.wsgi; uwsgi_param UWSGI_CHDIR /opt/linux; index index.html index.htm; client_max_body_size 35m; } } 8、重启Nginx配置 [root@web03 conf.d]# systemctl restart nginx 9、域名解析完成后去浏览器访问 172.16.1.9即可访问成功。 C:\Windows\System32\drivers\etc 172.16.1.9 py.test.com # 每个语言都有对应配置的params。 [root@web03 linux]# cd /etc/nginx [root@web03 nginx]# ll uwsgi_params : 给python用的 scgi_params : 给java用的 fastcgi_params : 给PHP用的 V2_params : 给Go用的,目前linux不支持 10、压力测试: [root@web03 conf.d]# cd /opt/linux [root@web03 linux]# python3 manage.py runserver 0.0.0.0:8001 # 在浏览器访问192.168.15.9:8001 [root@web03 linux]# cd /etc/nginx/conf.d [root@web03 conf.d]# vim py.conf server { listen 80; server_name py1.test.com; location / { proxy_pass 127.0.0.1:8001; } } # 域名解析 C:\Windows\System32\drivers\etc 172.16.1.9 py1.test.com # 换一个客户端进行域名解析再进行压测 [root@web02 ~]# cd /opt [root@web02 opt]# vim /etc/hosts 172.16.1.9 py.test.com py1.test.com [root@web02 opt]# curl -I -H'Host: py1.test.com' 172.16.1.9 [root@web02 opt]# curl -I -H'Host: py.test.com' 172.16.1.9 # netstat -nutlp # 查看端口使用状态
3、部署BBS项目
1、部署数据库 [root@db01 ~]# yum install mariadb* -y 2、启动数据库 [root@db01 ~]# systemctl start mariadb 3、远程连接MySQL数据:在数据库输入以下命令 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; FLUSH PRIVILEGES; CREATE DATABASE `bbs` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; # 然后去pycharm新增连接SQL,name输入db01,Host输入172.16.1.61,User输入root,Password输入123456,点test connection测试通过后点OK即可完成远程连接。 4、部署BBS 4.1、上传代码然后解压,更改路径 [root@db01 ~]# unzip bbs.zip [root@db01 ~]# mv bbs /opt/ 4.2、数据库迁移(数据库迁移前:只留__init__,,其他都删掉) [root@web03 migrations]# cd /opt/bbs/app01/migrations/ [root@web03 migrations]# pwd /opt/bbs/app01/migrations [root@web03 migrations]# rm -rf 00* [root@web03 migrations]# rm -rf __pycache__/ [root@web03 migrations]# ll [root@web03 migrations]# cd /opt/bbs/ [root@web03 bbs]# pwd /opt/bbs # 修改Django版本 [root@web03 bbs]# pip3 uninstall django [root@web03 bbs]# pip3 install django==1.11 # 安装MySQL数据库插件 [root@web03 bbs]# pip3 install pymysql # 修改数据连接修改以下内容并保存: [root@web03 bbs]# vim bbs/settings.py ALLOWED_HOSTS = ['*'] DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'bbs', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '172.16.1.61', 'PORT': 3306, 'CHARSET': 'utf8' } } # 创建数据库迁移文件 [root@web03 bbs]# python3 manage.py makemigration # 数据库迁移 [root@web03 bbs]# python3 manage.py migrate 4.3、配置UWSGI(wsgi是C语言写的,启动了之后直接绕过python,提高性能。) [root@localhost ~]# vim /opt/bbs/myweb_uwsgi.ini [uwsgi] # 端口号 socket = :8002 # 指定项目的目录 chdir = /opt/bbs # wsgi文件路径 wsgi-file = bbs/wsgi.py # 模块wsgi路径 module = bbs.wsgi # 是否开启master进程 master = true # 工作进程的最大数目 processes = 4 # 结束后是否清理文件 vacuum = true [root@web03 bbs]# uwsgi --ini myweb_uwsgi.ini --uid 666 [root@web03 bbs]# ps -ef | grep uwsgi [root@web03 bbs]# kill -9 3260 [root@web03 bbs]# kill -9 13708 4.4、配置Nginx并重启nginx [root@localhost ~]# vim /etc/nginx/conf.d/bbs.conf server { listen 80; server_name bbs.test.com; location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8002; uwsgi_read_timeout 2; uwsgi_param UWSGI_SCRIPT bbs.wsgi; uwsgi_param UWSGI_CHDIR /opt/bbs; index index.html index.htm; client_max_body_size 35m; } } [root@web03 bbs]# systemctl restart nginx 4.5、域名解析后浏览器访问 bbs.test.com C:\Windows\System32\drivers\etc 172.16.1.9 bbs.test.com
这篇关于linux基础之nginx 详述03的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享