项目结构

/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. kubenetes1.26中安装kubesphere3.4版本

    一.安装前环境准备 # kubesphere官网:https://kubesphere.io/zh/docs/v3.4/introduction/what-is-kubesphere/ # 1.kub ...

  2. CSP-S2023游记

    不知不觉也高二了呢,最后一年OI了. Day -?? 过了初赛.没什么难度. Day -4 模拟赛挂分. RP++. Day -3 模拟赛挂分. RP++. Day -2 没挂分--?换数据了,又挂了 ...

  3. Solution Set - 线段树

    A[洛谷P5787]无向图,每条边有一个出现时段,求每个单位时段图是否是二分图. B[洛谷P5227]无向图,询问删除一个边集后是否连通. C[洛谷P3733]连通无向图,边有权,加边.修改(增加的边 ...

  4. gorm 动态拼接查询条件

    结构体 type Mould struct { MouldId string `grom:"column:mouldID"` MouldInteriorID string `gro ...

  5. 字节面试:说说Java中的锁机制?

    Java 中的锁(Locking)机制主要是为了解决多线程环境下,对共享资源并发访问时的同步和互斥控制,以确保共享资源的安全访问. 锁的作用主要体现在以下几个方面: 互斥访问:确保在任何时刻,只有一个 ...

  6. SR-IOV 网卡虚拟化技术

    目录 文章目录 目录 PCI 与 PCIe 设备 SR-IOV 在 KVM 中启用 SR-IOV 网卡 手动挂载 VF 到虚拟机 指令方式挂载 SR-IOV 的数据包分发机制 PCI 与 PCIe 设 ...

  7. 用pageOffice文档控件实现 office文档在线编辑

    第三方文档控件,pageOffice 系统开发中经常要处理办公文档,如果word,excel,ppt,编辑整理,保存,归档. 开发市场上也有很多第三文文档控件,多年的总结,还是认为pageOffice ...

  8. vue项目使用研究1

    在windows上安装了npm vue-cli之后,创建vue项目. 用pycharm打开 vue form表单最简单提交方法 <!DOCTYPE html> <html lang= ...

  9. 记录一次HTTPS无法访问的错误

    Https无法连接Nginx,日志报错 *2179 SSL_do_handshake() failed (SSL: error:1420918C:SSL routines:tls_early_post ...

  10. MyBatis两级缓存机制详解

    缓存是提高软硬件系统性能的一种重要手段:硬件层面,现代先进CPU有三级缓存,而MyBatis也提供了缓存机制,通过缓存机制可以大大提高我们查询性能. 一级缓存 ​ Mybatis对缓存提供支持,但是在 ...