Nginx介绍
Nginx是一个高性能的HTTP和反向代理服务器,它是在BSD-like协议下发行。
由俄罗斯的程序设计师lgor Sysoev所开发,其特点是占有内存少,并发能力强。据alexa的统计,
在排名前1000的网站中有38.8%正在使用它,居于其他同类软件之首。目前在国内,淘宝、腾讯、
百度、新浪、网易等大厂都在使用中。
Nginx的特点
1、高并发响应,官方介绍nginx处理静态 文件并发可达到5w/s,实际经过优化达到更高并发处理能力
epoll、非阻塞模型
2、内存、cpu占用率低
3、支持fastcgi、wsgi
4、支持虚拟主机 (把一台机器能虚拟成多个独立的网站,完全独立,互不干扰)
5、配置简洁、上手容易
6、支持ssl
常用的web服务器
Apache httpd
微软 IIS
Lighttpd
Tomcat/Resin
Node.js
Uwsgi --- 处理python
yum和编译方式安装nginx
一、通过yum安装
yum install epel-release -y ---------nginx的依赖
yum install nginx -y
启动、停止、重启
service nginx start
service nginx stop
service nginx reload
二、源码编译安装
yum install -y make libtool gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
wget -nc http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz
cd nginx-1.14.0
./configure --prefix=/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre
make
make install
/apps/nginx/sbin/nginx -V
nginx的配置文件位置
/apps/nginx/conf/nginx.conf
nginx启动及启动中常见问题
语法检测 /apps/nginx/sbin/nginx –t
启动nginx /apps/nginx/sbin/nginx
重启nginx /apps/nginx/sbin/nginx –s reload
启动nginx后,在浏览器输入服务器的ip地址,可以看到欢迎界面。
常见问题
1、报错 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
端口被占用,查看被占端口命令 ss -nalp|grep 80
2、如果无法访问欢迎界面,如何排查?
三步走
查看是否有nginx进程 ps aux |grep nginx
查看是否有监听端口 ss -nalp|grep 80
查看本机是否连同端口 telnet ip 80
http、进程、端口相关命令
命令行的浏览器
curl http://www.baidu.com
curl -I http://baidu.com 查看http header信息
curl http://taobao.com -I –L 追随重定向
curl –d “a=100” http://test.com 发送post数据
最常用的状态码
请求成功 永久重定向 临时重定向 不存在的页面 没有权限 服务内部错误
↓ ↓ ↓ ↓ ↓ ↓
200 301 302 404 403 500
进程和端口
查看指定的进程 ps aux |grep 进程名
终止本机上的进程 kill 进程号 或者kill -9 pid
查看机器上的监听端口 netstat –lnp|grep redis 或者ss –ltn
测试端口是否能够连通 telnet ip port
Nginx配置文件讲解
http {
server {
listen 80;
server_name localhost; -----配域名
location / {
root html; root是设置文档目录,来告诉路由去html中,尽量用绝对路径
index index.html index.htm;
}
access_log logs/access.log main;
}
include /apps/nginx/conf.d/*.conf;
}
server模块包含在http模块里面,是nginx重要的配置模块,包含如下指令
listen 指定监听的端口,默认是80
server_name 指定域名
location 用来匹配url的 ※ ※ ※
root指定你的代码文件存放路径,可以放在server模块内也可以放在location内,可以写绝对路径,也可以写相对路径,建议用绝对路径 ※ ※ ※
index 指定主页文件
access_log 用来记录每次访问的日志存放位置,可以放在http模块里面也可以放在server模块里面
include 当有多个域名需要配置,可以每个域名单独存放在文件中,然后通过include引入
nginx location语法介绍
location [ = | ~ | ^~ ] uri { ... }
= :精确匹配(必须全部相等) ※ ※ ※
~ :正则表达式匹配 ※ ※ ※
^~ :匹配以某个uri开头
1.location 是在 server 块中配置。
2.可以根据不同的 URI 使用不同的配置(location 中配置),来处理不同的请求。
3.location 是有顺序的,会被第一个匹配的location 处理。
location 越精确,越被优先匹配
常用的location
location / { }
location ~ /static/ {
root /webroot/static/;
}
location ~* \.(gif|jpg|png|css|js) {
root /webroot/res/;
expires 30d;
}
图解WSGI和UWSGI
WSGI(Web Server Gateway Interface),定义了web服务器(nginx、apache、iis等)和 web应用(
或者将web框架,flask、django等)之间的接口规范。
也就是说,只要 web服务器和 web应用都遵守WSGI协议,那么 他们就能相互组合、通信。
uwsgi可以看做是实现了wsgi协议和http协议的应用程序,利用uWIGS可以使我们的web应用得到更强的并发能力
2种方式安装部署uwsgi
一、yum方式,需要先安装epel (推荐方式)
yum install epel-release -y
yum install uwsgi –y
uwsgi的配置文件 /etc/uwsgi.ini
二、源码编译安装
# 可以去pypi,搜索uwsgi下载:
wget https://files.pythonhosted.org/packages/98/b2/19b34b20662d111f7d2f926cdf10e13381761dd7dbd10666b9076cbdcd22/uwsgi-2.0.17.tar.gz
# 安装命令如下:
tar xvzf uwsgi-2.0.17.tar.gz
cd uwsgi-2.0.17
make
三。
Pip3 install uwsgi
uwsgi配置详解
[uwsgi]
uid = www
gid = www
pidfile = /tmp/uwsgi.pid
#项目目录
chdir=/data/BBS
#指定项目的application,及入口文件
module=BBS.wsgi:application
# 指定监听端口
http=0.0.0.0:9090
#进程个数
workers=5
# 启用主进程
master=true
# 自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
# 设置日志目录
daemonize=/var/log/uwsgi.log
uwsgi常用命令
uwsig常用命令
# 通过配置文件启动
uwsgi --ini uwsgi.ini
# 会生成两个文件
PID文件 他是标识这个程序所处的状态
SOCK文件 他是用来和其他程序通信的
# 停止uwsgi
uwsgi --stop uwsgi.pid
# 重载配置
uwsgi --reload uwsgi.ini
nginx结合uwsgi配置
server {
listen 80;
server_name localhost;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090; //必须和uwsgi中的设置一致
}
location /static {
root /data/BBS/;
}
}
部署一个BBS项目
步骤
mkdir /data
rz #上传bbs.tar包
tar –xvf BBS.tar
cd BBS
sh BBS/init.sh #安装mysql;用migrate初始化数据库
chown www.www –R BBS #给uwsgi的启动用户对项目文件能够有读写的权限
动静分离
日常大的项目,需要先在settings里面配置STATIC_ROOT,然后用collectstatic把各个app
和中间件的静态文件收集起来,然后通过nginx配置location来访问静态文件
python3 manage.py collectstatic
理解windows的hosts文件
Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与
其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自
动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再
将网址提交DNS域名解析服务器进行IP地址的解析。
路径:C:\Windows\System32\Drivers\etc\hosts
一句话:hosts就是优先于dns做域名解析的
用途:通过hosts切换到各种环境(开发环境、测试环境、生产环境)