七、python Django发布上线[nginx、uwsgi合理配置、uwsgi开机自启、uwsgi定期删除分割日志]

flask配置到ubuntu使用nginx+uwsgi

基本同配置flask相同

一.安装虚拟环境

为什么要创建虚拟环境:为了避免包冲突,等学会安装,使用操作了,需要自行下载你项目需要的python包

1.安装

sudo pip install virtualenv
sudo pip install virtualenvwrapper

失败尝试下面:

sudo pip install pbr -i https://pypi.tuna.tsinghua.edu.cn/simple

sudo pip install --no-deps stevedore -i https://pypi.tuna.tsinghua.edu.cn/simple

sudo pip install virtualenvwrapper -i https://pypi.tuna.tsinghua.edu.cn/simple

2.配置

进入:

cd ~

ls -al  (查看一个隐藏文件名字)

vim .bashrc

添加:

# 在末尾添加该代码,不会使用vim自己查一下使用方法

export WORKON_HOME=$HOME/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh


初始化:

source ~/.bashrc

虚拟环境基础操作:

创建虚拟环境: 
mkvirtualenv --python=/usr/bin/python3 flask_env
# 上面创建的文件夹在cd ~/.virtualenvs

进入虚拟环境:
workon 虚拟环境名字

退出虚拟环境:
deactivate

查看当前目录的python包:
pip list

二.安装uwsgi

为什么安装它:nginx是对外服务器,uwsgi是对内服务器;nginx负责筛选文件,向用户返回静态文件,然后把动态路由加粗样式提交给内服务器uwsgi来与flask交互处理。

1. 安装

pip install uwsgi

2.配置

创建:

# 在项目文件下创建文件 uwsgi.ini
touch uwsgi.ini
vim uwsgi.ini

写入:
参数

  • processes:进程里面包含着线程,进程通常设置数同CPU核数一样,通常通过cat /proc/cpuinfo | grep '^processor' | wc -l查看
  • threads:通常和内存数量有关,先用总内存(8G)/总CPU核数(2核),如何将获得的值(4G)/2,比如最终结果为2G,一个线程占1M,但是实际中肯定比1M要大,所以threads的范围为1-2048,基本不可能取到2048,可以将其值/4(512),从此开始,进行压力测试,来调整threads的大小(特别注意是如果服务器是经常进行CPU操作的,线程要适当减少,以避免过渡争抢CPU)
  • py-autoreload:只能在开发模式下使用,生产环境会严重影响性能
[uwsgi]
master = true
socket=:8003# 该位置与nginx通讯该地址与下面说的nginx地址需要一致
chdir = /srv/项目文件
# wsgi-file=/srv/dingtalkDjango/dingtalkDjango/wsgi.py 避坑,网上说的写这个,但是根本运行不了
module = 项目文件.wsgi:application # 关键点之一
callable=dingtalkll # 自定义
processes=1 #进程
threads=10 # 线程
buffer-size = 65536
vacuum=true
pidfile =/srv/Django/uwsgi.pid #开启的进程号放置位置(自定义)
stats=/srv/Django/uwsgi.status# 开启与否状态存放位置(自定义)
daemonize =/srv/Django/uwsgi.log# 日志存放位置(自定义)
virtualenv=/root/.virtualenvs/dingtalkDjango_env  #虚拟环境地址
py-autoreload=1#python内容更新,自动生效,开发环境中使用,实际环境中会加大消耗

3.使用

注意:使用前自行先进入虚拟环境
查看进程:ps -aux
启动:uwsgi --ini uwsgi.ini
关闭:uwsgi --stop uwsgi.pid
重启:uwsgi --reload uwsgi.pid

注意:当你发现无法关闭时,多半是进程开启混乱和uwsgi.pid号错乱,此时可以通过重启服务器(强制结束进程,手动很难关闭),之后再重新开启恢复正常

4.uwsgi开机自启

适用于:debian(ubuntu也可试试)

测试:systemctl status rc-local.service
结果:

root@npi:/lib/systemd/system# systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset:
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: inactive (dead)
     Docs: man:systemd-rc-local-generator(8)
# 结果如此的话只需要配置/etc/rc.local文件即可

配置/etc/rc.local并在里面写入开机要执行的命令:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#要执行的命令
# /usr/local/bin/uwsgi需要用which uwsgi查看
/usr/local/bin/uwsgi --ini /srv/uwsgi.ini
exit 0

赋予权限:chmod 755 /etc/rc.local
最后:systemctl start rc-local.service
测试生效与否:reboot

5.uwsgi定期删除分割日志

#!/bin/bash
# 先将日志复制备份
cp /srv/uwsgi.log /srv/uwsgi_$(date +\%Y\%m\%d).log
# 清空uwsgi配置文件里面要写入的日志文件
cat /dev/null > /srv/uwsgi.log
# 删除7天前调整过的uwsgi_*.log这种格式的文件
find /srv/ -name "uwsgi_*.log" -mtime +7 -exec rm {} \;

定时执行:
crontab -e

# 每日0点10分执行
10 0 * * * /bin/bash /home/root/uwsgi_log_cut.sh

三.nginx

1.安装

内容:apt install nginx
测试:访问自己服务器的ip地址,看看是否成功

2.基础配置

打开:

vim /etc/nginx/sites-enabled/default

删除原文件写入:

server {
        listen  80;
        server_name  wwww.jk.cn;
        #动态请求
        location / {
          include uwsgi_params;
          uwsgi_pass 127.0.0.1:8001;
        }
        #静态请求
        location /static {
          alias /srv/flask/static;
        }
   }

3.https配置

注意:3和4可以最后再配置

server {
        listen  443;
        server_name  wwww.jk.cn;
        # ssl配置
        ssl on;
        ssl_certificate   /srv/fla/wwww.jk.cn_public.crt;
        ssl_certificate_key  /srv/faaalask/ssl/6.key;
        ssl_session_timeout  5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
}

4.强制跳转

解释:这里跳转是http://www.jk.cnhttp://jk.cnhttps://jk.cn这几种情况跳转到https://www.jk.cn

server {
        # 80跳转
        listen 80;
        server_name jk.cn,www.jk.com;
        return 301 https://www.jk.cn$request_uri;
}
server {
        listen  443 ssl;
        server_name  wwww.jk.cn;
        # ssl配置
        ssl on;
        ssl_certificate    /srv/fla/wwww.jk.cn_public.crt;
        ssl_certificate_key  /srv/faaalask/ssl/6.key;
        ssl_session_timeout  5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
   }         
server {
        # 443 域名格式跳转 
        listen 443 ssl;
        server_name jk.cn;
        return 301 https://www.jk.cn$request_uri;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值