linux安装python3
下载python3包,解压并进入目录
安装依赖
- - yum install openssl-devel # pip依赖
- - yum install sqlite-devel # sqliet依赖
编译安装py3
- - ./configure
- - make
- - make install
项目主要配置
DEBUG配置改为False
ALLOWED_HOSTS = [] 允许主机IP端口
uwsgi配置项目
安装uwsgi : pip3 install uwsgi
直接启动 :
uwsgi --http :端口号 --chdir 项目目录 --wsgi-file wsig文件
# uwsgi --http :9003 --chdir /data/s8day145/ --wsgi-file s8day145/wsgi.py
配置文件启动
[uwsgi]
http = 0.0.0.0:9005 # IP,端口 如果是本机http改为socket
chdir = /data/oldboy/ # 项目目录
wsgi-file = oldboy/wsgi.py # wsgi.py 文件
processes = 4 # 进程数,根据核心数配置
static-map = /static=/data/oldboy/allstatic # 静态文件目录
启动
uwsgi --ini s8day145_uwsgi.ini # 配置文件
Django收集静态文件
配置
DEBUG = False
STATIC_ROOT = "allstatic"
命令
python3 manage.py collectstatic # 将所有的静态文件备份在在配置的STATIC_ROOT
flask配置
[uwsgi]
socket = 127.0.0.1:5051
pythonpath = /home/flask # 项目目录
module = manage # app执行的py文件名
wsgi-file = /home/flask/manage.py # app执行的py文件路径
callable = app # flask实例名
processes = 4
threads = 2
daemonize = /home/wyz/flask/server.log
Nginx+uwsgi
nginx作用:
- - 处理静态文件
- - 反向代理
- - 负载均衡(LVS、haproxy)
uwsig作用:
- - 处理动态请求
Nginx配置
user root;
worker_processes 4; # 开启进程数
error_log /var/log/nginx/error.log; # 错误日志
pid /var/run/nginx.pid; # 不用管
events {
worker_connections 1024; # 单个进程允许最大外部链接
}
http {
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 /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream django { # 相当于一个名叫django的池
server 127.0.0.1:8001; # 指定ip端口
server 127.0.0.1:8002;
}
server {
listen 80; # 监听80端口
charset utf-8;
# max upload size
client_max_body_size 75M;
location /static { # location路由的匹配
alias /data/s8day145/allstatic;
# 当客户端请求 /request_path/image/cat.png 的时候,
# Nginx把请求映射为/local_path/image/cat.png
}
location / {
uwsgi_pass django; # 指定池或指定IP端口
include uwsgi_params;
}
}
}
池中IP端口就是uwsgi启动的IP端口
uwsgi_pass 是给uwsgi用的, 负载均衡还有一个proxy_pass, 可以对应一个HTTP服务, 或者一个负载均衡池, 前面要写上HTTP:
保持服务启动
安装supervisor : yum安装即可
配置中添加
/etc/supervisord.conf
[program:s8day145] # 起个名
command=/usr/local/bin/uwsgi --ini /data/s8day145/s8day145_uwsgi_8001.ini ;命令
priority=999 ; 优先级(越小越优先)
autostart=true ; supervisord启动时,该程序也启动
autorestart=true ; 异常退出时,自动启动
startsecs=10 ; 启动后持续10s后未发生异常,才表示启动成功
startretries=3 ; 异常后,自动重启次数
exitcodes=0,2 ; exit异常抛出的是0、2时才认为是异常
stopsignal=QUIT ; 杀进程的信号
stopwaitsecs=10 ; 向进程发出stopsignal后等待OS向supervisord返回SIGCHILD 的时间。若超时则supervisord将
使用SIGKILL杀进程
user=root ; 设置启动该程序的用户
log_stdout=true ; 如果为True,则记录程序日志
log_stderr=false ; 如果为True,则记录程序错误日志
logfile=/var/log/cat.log ; 程序日志路径
logfile_maxbytes=1MB ; 日志文件最大大小
logfile_backups=10 ; 日志文件最大数量
启动软件
systemctl start supervisord.service