项目结构

/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. Plumed分子模拟后分析

    技术背景 在前面的几篇博客中,我们分别介绍过Histogram算法的使用.Plumed安装与简单使用.Plumed一般就是两种用法:要么在运行分子动力学模拟的过程中实时的对接,要么就是把分子模拟的相关 ...

  2. 案例-java贪吃蛇(附源码)

    创建屏幕 开始游戏的窗口,首先引入窗口,然后在窗口画布上进行添加各类动画. JFrame frame=new JFrame("My SnakeGame"); Jframe 是个类, ...

  3. Java IO流文件

    Java IO流文件 创建文件 使用File类进行创建文件操作,创建该对象包含三种构造方法 new File(String pathname); //根据路径+文件名创建一个File对象 new Fi ...

  4. 简单聊一聊Java的历史

    Java这门语言有很多不可忽视的优点,比如一次编写到处运行,又比如它有一个相对安全的内存管理和访问机制,避免了C++中经常出现的内存泄露和指针越界问题等等,java带来的这些好处,让我们这些java程 ...

  5. C数据结构:树和森林存储方式与遍历方式

    文章目录 树的存储方式 双亲表示法 孩子链表表示法 孩子兄弟表示法(二叉树表示法) 树和二叉树的转换 森林和二叉树的转换 树和森林的遍历 树的遍历方式 森林的遍历方式 浅谈一下几个问题 为什么树没有中 ...

  6. .NET ASPIRE 预览版 7 发布

    .NET Aspire 预览版 7 并不是原计划的一部分,此预览版有很多重大 API 更改,部分原因是一旦产品发布,我们将致力于稳定的 API 表面.可以说,Aspire团队希望确保在最终发布之前完成 ...

  7. bond网卡

    目录 一.bond概述 1.1.bond的优点 二.bond模式 2.1.mode=0 2.2.mode=1 2.3.mode=2 2.4.mode=3 2.5.mode=4 2.6.mode=5 2 ...

  8. kubernets之高级调度

    一 节点的污点以及pod的容忍度以及节点的亲缘性对比 1.1 首先需要介绍的是节点的污点以及pod的污点容忍度 污点是节点的属性,容忍度是pod的属性,只有当一个pod的容忍度包含节点的污点,pod才 ...

  9. 京东面试:如何进行JVM调优?

    JVM 调优是一个很大的话题,在回答"如何进行 JVM 调优?"之前,首先我们要回答一个更为关键的问题,那就是,我们为什么要进行 JVM 调优? 只有知道了为什么要进行 JVM 调 ...

  10. 推荐几款卓越的 .NET 开源搜索组件

    前言 在当今日益数据化的世界中,信息的检索和搜索功能对于各种应用来说变得至关重要. 无论是电子商务网站.企业资源规划系统.还是内容管理系统,高效的搜索功能都是提升用户体验.促进业务发展的关键. 因此, ...