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 一般 ...
随机推荐
- golang向上取整、向下取整和四舍五入
一.概述 官方的math 包中提供了取整的方法,向上取整math.Ceil() ,向下取整math.Floor() 二.用法 package main import ( "fmt" ...
- DNS(5) -- 主从dns
目录 1. DNS主从服务器 1.1 主从服务器概述 1.2 主从DNS实现 1.2.1 主从DNS实现要点 1.2.2 主DNS服务器配置 1.2.3 从DNS服务器配置 1.2.4 测试主从同步 ...
- nim 8. 异常处理
基本的异常处理 try: let d = newSeq[int]() echo "value: ", d[2] except: let e = getCurrentExceptio ...
- 🔥httpsok-v1.8.1 一分钟搞定SSL证书自动续期
httpsok-v1.8.1 一分钟搞定SSL证书自动续期 简介 一行命令,一分钟轻松搞定SSL证书自动续期 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx 服务器设计. ...
- 继承与ER图
会员是用户吗? 实体与集合 er图叫实体联系图.什么是实体?是现实中存在的事物个体,用户背后是实际存在的单个人. 对象->实体 类->实体的集合 er图描述的是实体间的联系 会员是真实存在 ...
- 鸿蒙HarmonyOS实战-Stage模型(应用上下文Context)
前言 应用上下文(Context)是应用程序的全局信息的接口.它是一个抽象类,提供了访问应用程序环境的方法和资源的方法.应用上下文可以用于获取应用程序的资源.启动Activity.发送广播等.每个应用 ...
- 前端如何对cookie加密
在前端对 Cookie 进行加密时,你可以使用加密算法对 Cookie 的值进行加密,然后再将加密后的值存储到 Cookie 中.常用的加密算法包括对称加密算法(如 AES)和非对称加密算法(如 RS ...
- Windows Server 2022 安装
获取 Windows Server 2022 https://www.microsoft.com/zh-cn/evalcenter/evaluate-windows-server-2022 查看 Wi ...
- Sqlserver存储过程中使用try-catch和事务
BEGIN TRY BEGIN TRANSACTION --逻辑代码 COMMIT TRANSACTION --提交事务 END TRY BEGIN CATCH SELECT @Msg = ERROR ...
- MyBatis延迟加载策略详解
延迟加载就是在需要用到数据的时候才进行加载,不需要用到数据的时候就不加载数据.延迟加载也称为懒加载. 优点:在使用关联对象时,才从数据库中查询关联数据,大大降低数据库不必要开销. 缺点:因为只有当需要 ...