Django部署在CENTOS7上
项目结构
/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上的更多相关文章
- Redis介绍及部署在CentOS7上(一)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- django部署到apache上(非常重要的,3者版本要一致,是32位就都要是32位的)
网上把django部署到apache的文章挺多的,但是按照大家的操作,并没有一次就成功,还是遇到了一些问题,这里主要有以下几个情况. 1.网上找到的mod_wsgi的版本问题,导致动态库加载不上. 2 ...
- 将 django部署到 heroku上
为什么要这样做,因为我并没有弄懂,使用传统和推荐的方法来部署django.刚好我手里有这么一份教程我就按照这么做了. 1. 访问 http://heroku.com/ 完成一个注册,注册需要一个国外的 ...
- asp.net Core 部署到CentOs7上,使用Nginx做代理
一.CentOs7部署Nginx 1.准备工作 Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,注意安装顺序如下: 1 SSL功能需要openssl库,直接通过 ...
- vs2017创建dotnetcore web项目,并部署到centos7上
一.打开vs2017创建web项目 二.简单的创建项目后,发布项目 三. 在centos上创建webroot目录,将发布的项目文件复制到该目录下(本人用虚拟机测试) 四.在webroot目录下打开终端 ...
- django部署到linux上不显示.svg图标处理方法
在setting文件的最开始添加如下内容: import mimetypes mimetypes.add_type("image/svg+xml", ".svg" ...
- python3.8.0 Django 开发后端接口api 部署到 Linux Centos7上
经历了两天的时候终于把本地使用python3 django开发的接口API部署到服务器上了,还是记录一下,以免之后忘记,哈哈 注意一点,就是,centos7是基于python2的,我这边默认的是pyt ...
- (转)Centos7上部署openstack ocata配置详解
原文:http://www.cnblogs.com/yaohong/p/7601470.html 随笔-124 文章-2 评论-82 Centos7上部署openstack ocata配置详解 ...
- centos7上部署新版 jumpserver 跳板机服务
CentOS 7 建议在一个纯净的 centos7上进行下面的安装部署 关闭 selinux 和防火墙 [root@jumpserver ~]# setenforce 0 [root@jumpserv ...
- 在 CentOS7 上部署 MySQL 主从
在 CentOS7 上部署 MySQL 主从 通过 SecureCRT 连接至 MySQL 主服务器: 找到 my.cnf 文件所在的目录: mysql --help | grep my.cnf 一般 ...
随机推荐
- SQL server 表字段扩展设计
一.扩展字段表 一个表的字段可能并非一成不变,系统的运行.需求的变化等客观条件可能会需要增加其他字段,如何在不直接修改表设计的前提下满足需求呢?该扩展字段表的思想就是将列设计转化为行设计,字段的增加表 ...
- vue使用promise.all异步实现多个请求完成之后在执行某些操作
使用场景:多个请求方法拿到数据之后需要对这不同的数据进行比较,之后在输出并渲染 思路:使用promise.all()异步操作: Promise.all([ //上架 new Promise((reso ...
- 04 Xpath_[实例]爬取maoyan
目录 Xpath lxml库的安装和使用 提取的内容 代码 生成的csv 下载的图片 参考文档 Xpath lxml库的安装和使用 提取的内容 随意选取的一段 节点包含的影片信息,如下所示: < ...
- kkfileview搭建指南
最近公司有个需求,需要在线预览pdf,excel,world文档,pdf浏览器是直接支持预览的,vue也有很多插件支持,但是world文档和excel的方案就非常少了,市面上很多付费的,但是咱一般不舍 ...
- C语言:将文件中所得到的单词表保存到一个顺序表中--使用动态分配数组。
在很多时候我们想要在程序中存储想要的信息,但是又不知道该信息的大小或者说不知道需要多长的数组来存放.动态分配空间这个很好的解决了这个问题,动态分配不仅只可以用在链表中分配节点空间,其实更多时候用来分配 ...
- C语言:头文件ctype.h的内置函数
#include <stdio.h> #include <ctype.h>//内置函数的头文件 #include <math.h> int main() { int ...
- 一键自动化博客发布工具,用过的人都说好(51cto篇)
51cto是一个优秀的博客平台,今天给大家讲解一下blog-auto-publishing-tools如何自动发布博客到51cto上. 当然在实现过程中有可能会遇到各种困难,不过不用担心,我们一个个来 ...
- uniapp video组件全屏导致页面横竖错乱问题
uniapp video组件全屏导致页面横竖错乱问题 背景介绍 使用 video组件做一个视频播放功能,不全屏的情况正常.在苹果手机上全屏后,点击左上角退出全屏,页面出现问题如下图问题,主要系统iOS ...
- Kubernetes Pod调度:从基础到高级实战技巧
本文深入探讨了Kubernetes中的Pod调度机制,包括基础概念.高级调度技术和实际案例分析.文章详细介绍了Pod调度策略.Taints和Tolerations.节点亲和性,以及如何在高流量情况下优 ...
- 【超详细】宝塔面板安装WordPress程序图文教程
宝塔面板是目前广受用户喜爱的服务器控制面板之一,自己也在用,确实很方便,很多用户的网站都是基于宝塔面板搭建,今天简单介绍下宝塔面板是如何安装WordPress的,方便新手用户快速部署.也方便自己以后查 ...