web服务器软件
windows
- IIS服务器
linux
- nginx服务器
- apache服务器(收费)
- lighthttp
# linux下
curl -I #域名 可以查看网站的响应头头部信息 ,包括服务器类型
nginx是一个开源,支持高性能,高并发的www服务和代理服务器软件,nginx比apache性能改进了许多,nginx占用的系统资源更少,支持更高的并发连接,有更高的访问效率,nginx不仅是一个优秀的服务器软件还可以作为反向代理,负载均衡,以及缓存服务使用,安装也简单,方便,灵活。
apt-get install nginx
进入nginx工作目录
一般为/etc/nginx/
nginx.conf
worker_processes 4 # nginx工作进程数,根据cpu核数定义
events{
worker_connections 1024; #连接数
}
# http代码块,定义nginx的核心web功能
http{
log_format main '$remote_addr - $remote_user [$time_local] "$request"'
'$status $boby_bytes_sent "$http_referer"'
'"$http_user_agent" "$http_x_forwarded_for"'; # 日志格式
access_log /opt/logs/access.log main; # 开启日志访问功能的参数
keepalive_timeout 65; # 保持长连接的时间
gzip on; # 支持图片gif等压缩 减少网络带宽
# server是控制nginx的虚拟主机(web站点) 若想要多虚拟主机(多个域名对应一个服务器但指向不同的页面)就多写一个server块 在里面配置,server_name 写域名
server{
listen 80; # 监听的端口
server_name localhost; # 填写域名,没有域名则写ip地址
charset utf-8 # 定义编码
location /{
# deny 192.168.1.1 禁止某一ip访问
root html; # 参数定义网站根目录
index index.html index.htm; #定义网页的首页文件的名字的
}
error_page 404 /404.html; # 定义404错误页面
}
}
实时检查access.log的日志信息
tail -f access.log
会根据名字进行匹配杀进程
pkill nginx
在 location块中 配置反向代理
location /{
proxy_pass http://192.168.1.25
}
与django配置
location /static {
alias /home/mysite/static; #静态文件配置,uwsgi不提供静态资源服务
}
location /media {
alias /home/mysite/media;
}
location /{
uwsgi_pass 127.0.0.1:8001; # 程序运行的地址和端口
include /etc/nginx/uwsgi_params; # nginx与uwsgi交互的参数
}
集群;一堆服务器做一件事
负载均衡:请求的分发,负载压力的分担
在http块中写上以下代码
# 负载均衡池
upstream webserver{
server 192.168.13.79;
server 192.168.13.11;
}
在location块中添加反向代理给负载均衡池
proxy_pass http://webserver;
默认为按顺序轮询
可以加权值
如下列代码
# 负载均衡池
upstream webserver{
server 192.168.13.79 weight=10;
server 192.168.13.11 weight=1;
}
也可以ip_hash配置
根据客户端的ip进行hash 不能和weight一起用
如下列代码所示
# 负载均衡池
upstream webserver{
ip_hash;
server 192.168.13.79;
server 192.168.13.11;
}
其他的方法还有url_hash(根据访问的url结果进行hash转发),least_conn(最少链接数) 等
python3 的运行环境
uwsgi 实现了wsgi(web服务网关接口)标准的一个接口(实现了python web应用的协议)
nginx+uwsgi(常用)
apache+mode_wsgi
virtualenvwrapper 虚拟环境管理包
后端 python程序,也就是我们的django服务器应用程序
前端 比如vue.js的代码
nginx (对nginx对静态文件处理的优秀性能,以及nginx的反向代理功能和默认的80端口)
mysql
redi
supervisor linux下的进程管理工具
pip install uwsgi
通过uwsgi启动一个django项目,并且支持热加载项目,不启动项目,自动生效
uwsgi --http :8000 --module aa.wsgi --py-autoreload=1
–module 指定找到django项目下的wsgi.py文件
touch uwsgi.ini
内容为
[uwsgi]
chdir = /opt/mysite
module = mysite.wsgi
home = /opt/venv
master = true
processes =1
socket = 0.0.0.0:8000 # 当你使用nginx时必须使用的参数,启动一个socket连接
# http = 0.0.0.0:8000 # 启动一个http连接,当你不用nginx只用uwsgi时使用这个参数
vacum = true