项目结构

/data/playback_project/
├── PlayBack
└── script

/data/playback_project/PlayBack
├── app01
├── db.sqlite3
├── manage.py
├── Middle
├── PlayBack
├── README
├── requirements.txt
├── static
├── static_all
├── templates
└── utils

一、环境配置

1. CENTOS安装PY3

#!/bin/bash
cd /usr/local/src
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel lib-devel ncurses-devel tk-devel gcc make
tar -xf Python-3.6.4.tgz
cd Python-3.6.4
./configure --prefix=/usr/local/python-3.6.4
make
make install
echo "export PATH=$PATH:/usr/local/python-3.6.4/bin" >> /etc/profile
source /etc/profile

Install Py3

2. 安装uWSGI

pip3 freeze
pip3 install uWSGI

3. 使用uWSGI命令启动

前提,1.用python manage runserver x.x.x.x:prot 启动成功

2.pip -r requirements.txt 依赖安装完成

requirements.txt

Django==1.11
Pillow==4.3
aliyun-python-sdk-core==2.13
oss2==2.9
XlsxWriter==1.2

进入项目目录。uwsgi --http x.x.x.x:prot  --file PlayBack/wsgi.py --static-map=/static=static  --static-map参数尽量写,不然样式有的时候会出问题

二、NGINX整合INI文件启动项目

1. 通过uWSGI.ini文件启动

[uwsgi]
#项目目录
chdir=/data/playback_project/PlayBack/
#启动uwsgi的用户名和用户组
uid=root
gid=root
#加载一个wsgi模块
module=PlayBack.wsgi
#指定sock的文件路径
socket=/data/playback_project/script/uwsgi.sock
#启用主进程
master=true
#进程个数,也可以使用processes指定
workers=1
pidfile=/data/playback_project/script/uwsgi.pid
#自动移除unix Socket和pid文件当服务停止的时候
vacuum=true
#序列化接受的内容,如果可能的话
thunder-lock=true
#启用线程
enable-threads=true
#设置自中断时间
harakiri=30
#设置缓冲
post-buffering=4096
#设置日志目录
daemonize=/data/playback_project/script/uwsgi.1og
#logto=/data/playback_project/script/uwsgi.log

uWSGI.ini

uwsgi --ini uwsgi.ini
uwsgi --stop uwsgi.pid

2. 安装配置NGINX

yum install nginx
# conf
server {
listen 8081;
server_name domian;
access_log /var/log/nginx/playexecl_access.log main;
error_log /var/log/nginx/playexecl_error.log warn;
charset utf-8;
gzip on;
gzip_types text/plain application/x-javascript text/css text/javascript application/x-httpd-php application/json text/json image/jpeg image/gif image/png application/octet-stream;
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
# 单指定项目路径uwsgi
location / {
rewrite ^/(.*) http://$server_name/playback/home/$1 permanent;
} location ^~ /playback/ {
include uwsgi_params;
uwsgi_connect_timeout 30;
uwsgi_pass unix:/data/playback_project/script/uwsgi.sock;
} # 指定静态文件路径
location /static/ {
alias /data/playback_project/PlayBack/static/;
index index.html index.htm;
}
}

NGINX配置

3. 为了防止样式丢失

我们发现,访问的时候,有些样式会丢失,往往是DJANGO ADMIN,通过下面方法收集解决此类问题

首先在项目settings.py中添加静态文件目录   STATIC_ROOT = os.path.join(BASE_DIR, "static_ all")

然后使用内置命令进行静态文件收集  python3 manage.py collectstatic --noinput

最后更改NGINX静态文件目录为  alias /data/playback_project/PlayBack/static_all/

三、重启脚本

# 指定项目目录
PROJECT_DIR="/data/playback_project/PlayBack/"
#指定脚本目录在哪里
SCRIPTS_DIR="/data/playback_project/script"
# 描述
DESC="playback daemon"
# 名称
NAME="playback"
# 脚本名称
SCRIPT_FILENAME="manage_playback.sh"
#脚本名称
SCRIPTNAME=$(pwd)/$SCRIPT_FILENAME
# PID
PID="uwsgi.pid" # 启动函数
d_start() {
# 进入到项目目录
cd $SCRIPTS_DIR
# 判断这个PID是否存在
if [ ! -f $PID ]; then
echo -e "\n\033[34m$NAME 项目启动中...\033[0m"
# 如果不存在执行
uwsgi --ini uwsgi.ini
nginx -s reload
cd $PROJECT_DIR && python3 manage.py collectstatic --noinput
echo -e "\n\033[32m$NAME 项目启动完成...\033[0m"
exit 0
fi
echo -e "\n\033[33m$NAME 项目已启动请勿重复启动\033[0m"
} # 关闭函数
d_stop() {
cd $SCRIPTS_DIR
# 判断这个pid文件是否存在
if [ ! -f "uwsgi.pid" ]; then
# 这个项目已经关闭
echo -e "\n\033[33m$NAME 项目已经关闭...\033[0m"
exit 0
fi
echo -e "\n\033[34m$NAME 项目关闭中...\033[0m"
# 如果没有关闭
uwsgi --stop uwsgi.pid
echo -e "\n\033[32m$NAME 项目关闭完成...\033[0m"
} d_restart() {
d_stop
sleep 1
d_start
} case "$1" in
start)
echo -e "\nstarting $DESC: $NAME"
d_start
;;
stop)
echo -e "\nstop $DESC: $NAME"
d_stop
;;
restart)
echo -e "\nrestart $DESC: $NAME"
d_restart
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}"
exit 3
;;
esac

RESTART BASH

四、SYSTEMD

 /usr/lib/systemd/system/playback.service/playback.service 

[Unit]
#描述
Description="playback" #表示服务信息
[Service]
Type=forking
#注意:需要和conf配置文件中的信息一致
PIDFile=/data/playback_project/script/uwsgi.pid
#启动服务的命令
ExecStart=/usr/local/python-3.6.4/bin/uwsgi --ini /data/playback_project/script/uwsgi.ini
ExecStartPost=/usr/local/python-3.6.4/bin/python3 /data/playback_project/PlayBack/manage.py collectstatic --noinput
#ExecStartPost=nginx -s reload
#重新加载命令
ExecReload=/bin/kill -s HUP $MAINPID
#停止服务的命令
ExecStop=/bin/kill -s QUIT $MAINPID
#SIGQUIT信号将会毁掉systemd服务
KillSignal=SIGQUIT
#意外的失败,就将重启
Restart=on-failure
#重启服务之前,需要等待的秒数
RestartSec=5s #安装相关信息
[Install]
#multi-user.target表明当系统以多用户方式启动时,这个服务需要被自动运行
WantedBy=multi-user.target systemctl daemon-reload playback
systemctl enable playback

SYSTEMD

Django部署在CENTOS7上的更多相关文章

  1. Redis介绍及部署在CentOS7上(一)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  2. django部署到apache上(非常重要的,3者版本要一致,是32位就都要是32位的)

    网上把django部署到apache的文章挺多的,但是按照大家的操作,并没有一次就成功,还是遇到了一些问题,这里主要有以下几个情况. 1.网上找到的mod_wsgi的版本问题,导致动态库加载不上. 2 ...

  3. 将 django部署到 heroku上

    为什么要这样做,因为我并没有弄懂,使用传统和推荐的方法来部署django.刚好我手里有这么一份教程我就按照这么做了. 1. 访问 http://heroku.com/ 完成一个注册,注册需要一个国外的 ...

  4. asp.net Core 部署到CentOs7上,使用Nginx做代理

    一.CentOs7部署Nginx 1.准备工作 Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,注意安装顺序如下: 1 SSL功能需要openssl库,直接通过 ...

  5. vs2017创建dotnetcore web项目,并部署到centos7上

    一.打开vs2017创建web项目 二.简单的创建项目后,发布项目 三. 在centos上创建webroot目录,将发布的项目文件复制到该目录下(本人用虚拟机测试) 四.在webroot目录下打开终端 ...

  6. django部署到linux上不显示.svg图标处理方法

    在setting文件的最开始添加如下内容: import mimetypes mimetypes.add_type("image/svg+xml", ".svg" ...

  7. python3.8.0 Django 开发后端接口api 部署到 Linux Centos7上

    经历了两天的时候终于把本地使用python3 django开发的接口API部署到服务器上了,还是记录一下,以免之后忘记,哈哈 注意一点,就是,centos7是基于python2的,我这边默认的是pyt ...

  8. (转)Centos7上部署openstack ocata配置详解

    原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124  文章-2  评论-82  Centos7上部署openstack ocata配置详解 ...

  9. centos7上部署新版 jumpserver 跳板机服务

    CentOS 7 建议在一个纯净的 centos7上进行下面的安装部署 关闭 selinux 和防火墙 [root@jumpserver ~]# setenforce 0 [root@jumpserv ...

  10. 在 CentOS7 上部署 MySQL 主从

    在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...

随机推荐

  1. 一键启动的AI离线知识库,无需复杂环境依赖,小白都能上手了

    简介 在人工智能技术飞速发展的今天,我们经常面临一个挑战:如何快速.简便地部署和使用AI技术?AntSK项目,一个开源的AI知识库和智能体,就是为了解决这一问题而诞生的.现在,我们自豪地宣布,AntS ...

  2. C++ 异常处理机制详解:轻松掌握异常处理技巧

    C++ 异常处理 C++ 异常处理机制允许程序在运行时处理错误或意外情况.它提供了捕获和处理错误的一种结构化方式,使程序更加健壮和可靠. 异常处理的基本概念: 异常: 程序在运行时发生的错误或意外情况 ...

  3. Mybatis学习五($和#区别以及其他tips)

    1.$和#区别 1 #是将传入的值当做字符串的形式,eg:select id,name,age from student where id =#{id},当前端把id值1,传入到后台的时候,就相当于 ...

  4. 在线自动加字幕!超快完成Pr的字幕制作!

    在线自动加字幕!超快完成Pr的字幕制作! https://www.bilibili.com/video/BV1T441167eX/?spm_id_from=333.788.videocard.3 ht ...

  5. 关于sql server导出csv格式文件的身份证号乱码问题处理办法

    1.使用SQL Server数据库经常会遇到导出大量数据的情况,例如导出40万条数据,虽然EXCL支持可以放入百万的数据,但是使用数据库复制,粘贴到EXCL表格时,数据库会提示溢出的情况,如下图所示: ...

  6. CentOS7部署Docker(联网)

    一.参考地址 https://blog.csdn.net/m0_49762804/article/details/131398587 二.Docker安装 安装依赖环境,yum-utils ## 检查 ...

  7. PageOffice调用本地office实现多人在线同时编辑Word文档

    说明:多人同时在线编辑文件大多数会出现文档相互覆盖的问题,后保存的文档会覆盖先保存的文档.pageoffice的这个功能可以用程序控制不同用户打开文件后,编辑Word文档中属于自己的区域,并且不会互相 ...

  8. Python:解决Matplotlib保存图片显示不全问题

    保存图片的时候设置参数bbox_inches = 'tight',如: plt.savefig("Matplotlib/graph.png", bbox_inches = 'tig ...

  9. Java生成微信小程序码

    官网文档地址:获取小程序码 package test; import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.cor ...

  10. 解决input中输入中文过程中会触发input事件的问题

    问题描述: 监听文本输入框的input事件,在拼写汉字时会触发input事件,如下图: 需求: 选词完成后触发input事件,只触发一次. 解决办法: 通过查阅资料得知在输入中文(包括语音识别时)会先 ...