项目结构

/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

  1. #!/bin/bash
  2. cd /usr/local/src
  3. wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz
  4. yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel lib-devel ncurses-devel tk-devel gcc make
  5. tar -xf Python-3.6.4.tgz
  6. cd Python-3.6.4
  7. ./configure --prefix=/usr/local/python-3.6.4
  8. make
  9. make install
  10. echo "export PATH=$PATH:/usr/local/python-3.6.4/bin" >> /etc/profile
  11. 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

  1. 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文件启动

  1. [uwsgi]
  2. #项目目录
  3. chdir=/data/playback_project/PlayBack/
  4. #启动uwsgi的用户名和用户组
  5. uid=root
  6. gid=root
  7. #加载一个wsgi模块
  8. module=PlayBack.wsgi
  9. #指定sock的文件路径
  10. socket=/data/playback_project/script/uwsgi.sock
  11. #启用主进程
  12. master=true
  13. #进程个数,也可以使用processes指定
  14. workers=1
  15. pidfile=/data/playback_project/script/uwsgi.pid
  16. #自动移除unix Socket和pid文件当服务停止的时候
  17. vacuum=true
  18. #序列化接受的内容,如果可能的话
  19. thunder-lock=true
  20. #启用线程
  21. enable-threads=true
  22. #设置自中断时间
  23. harakiri=30
  24. #设置缓冲
  25. post-buffering=4096
  26. #设置日志目录
  27. daemonize=/data/playback_project/script/uwsgi.1og
  28. #logto=/data/playback_project/script/uwsgi.log

uWSGI.ini

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

2. 安装配置NGINX

  1. yum install nginx
  2. # conf
  3. server {
  4. listen 8081;
  5. server_name domian;
  6. access_log /var/log/nginx/playexecl_access.log main;
  7. error_log /var/log/nginx/playexecl_error.log warn;
  8. charset utf-8;
  9. gzip on;
  10. 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;
  11. error_page 404 /404.html;
  12. error_page 500 502 503 504 /50x.html;
  13. # 单指定项目路径uwsgi
  14. location / {
  15. rewrite ^/(.*) http://$server_name/playback/home/$1 permanent;
  16. }
  17.  
  18. location ^~ /playback/ {
  19. include uwsgi_params;
  20. uwsgi_connect_timeout 30;
  21. uwsgi_pass unix:/data/playback_project/script/uwsgi.sock;
  22. }
  23.  
  24. # 指定静态文件路径
  25. location /static/ {
  26. alias /data/playback_project/PlayBack/static/;
  27. index index.html index.htm;
  28. }
  29. }

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/

三、重启脚本

  1. # 指定项目目录
  2. PROJECT_DIR="/data/playback_project/PlayBack/"
  3. #指定脚本目录在哪里
  4. SCRIPTS_DIR="/data/playback_project/script"
  5. # 描述
  6. DESC="playback daemon"
  7. # 名称
  8. NAME="playback"
  9. # 脚本名称
  10. SCRIPT_FILENAME="manage_playback.sh"
  11. #脚本名称
  12. SCRIPTNAME=$(pwd)/$SCRIPT_FILENAME
  13. # PID
  14. PID="uwsgi.pid"
  15.  
  16. # 启动函数
  17. d_start() {
  18. # 进入到项目目录
  19. cd $SCRIPTS_DIR
  20. # 判断这个PID是否存在
  21. if [ ! -f $PID ]; then
  22. echo -e "\n\033[34m$NAME 项目启动中...\033[0m"
  23. # 如果不存在执行
  24. uwsgi --ini uwsgi.ini
  25. nginx -s reload
  26. cd $PROJECT_DIR && python3 manage.py collectstatic --noinput
  27. echo -e "\n\033[32m$NAME 项目启动完成...\033[0m"
  28. exit 0
  29. fi
  30. echo -e "\n\033[33m$NAME 项目已启动请勿重复启动\033[0m"
  31. }
  32.  
  33. # 关闭函数
  34. d_stop() {
  35. cd $SCRIPTS_DIR
  36. # 判断这个pid文件是否存在
  37. if [ ! -f "uwsgi.pid" ]; then
  38. # 这个项目已经关闭
  39. echo -e "\n\033[33m$NAME 项目已经关闭...\033[0m"
  40. exit 0
  41. fi
  42. echo -e "\n\033[34m$NAME 项目关闭中...\033[0m"
  43. # 如果没有关闭
  44. uwsgi --stop uwsgi.pid
  45. echo -e "\n\033[32m$NAME 项目关闭完成...\033[0m"
  46. }
  47.  
  48. d_restart() {
  49. d_stop
  50. sleep 1
  51. d_start
  52. }
  53.  
  54. case "$1" in
  55. start)
  56. echo -e "\nstarting $DESC: $NAME"
  57. d_start
  58. ;;
  59. stop)
  60. echo -e "\nstop $DESC: $NAME"
  61. d_stop
  62. ;;
  63. restart)
  64. echo -e "\nrestart $DESC: $NAME"
  65. d_restart
  66. ;;
  67. *)
  68. echo "Usage: $SCRIPTNAME {start|stop|restart}"
  69. exit 3
  70. ;;
  71. esac

RESTART BASH

四、SYSTEMD

  1. /usr/lib/systemd/system/playback.service/playback.service
  2.  
  3. [Unit]
  4. #描述
  5. Description="playback"
  6.  
  7. #表示服务信息
  8. [Service]
  9. Type=forking
  10. #注意:需要和conf配置文件中的信息一致
  11. PIDFile=/data/playback_project/script/uwsgi.pid
  12. #启动服务的命令
  13. ExecStart=/usr/local/python-3.6.4/bin/uwsgi --ini /data/playback_project/script/uwsgi.ini
  14. ExecStartPost=/usr/local/python-3.6.4/bin/python3 /data/playback_project/PlayBack/manage.py collectstatic --noinput
  15. #ExecStartPost=nginx -s reload
  16. #重新加载命令
  17. ExecReload=/bin/kill -s HUP $MAINPID
  18. #停止服务的命令
  19. ExecStop=/bin/kill -s QUIT $MAINPID
  20. #SIGQUIT信号将会毁掉systemd服务
  21. KillSignal=SIGQUIT
  22. #意外的失败,就将重启
  23. Restart=on-failure
  24. #重启服务之前,需要等待的秒数
  25. RestartSec=5s
  26.  
  27. #安装相关信息
  28. [Install]
  29. #multi-user.target表明当系统以多用户方式启动时,这个服务需要被自动运行
  30. WantedBy=multi-user.target
  31.  
  32. systemctl daemon-reload playback
  33. 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. golang向上取整、向下取整和四舍五入

    一.概述 官方的math 包中提供了取整的方法,向上取整math.Ceil() ,向下取整math.Floor() 二.用法 package main import ( "fmt" ...

  2. 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 测试主从同步 ...

  3. nim 8. 异常处理

    基本的异常处理 try: let d = newSeq[int]() echo "value: ", d[2] except: let e = getCurrentExceptio ...

  4. 🔥httpsok-v1.8.1 一分钟搞定SSL证书自动续期

    httpsok-v1.8.1 一分钟搞定SSL证书自动续期 简介 一行命令,一分钟轻松搞定SSL证书自动续期 httpsok 是一个便捷的 HTTPS 证书自动续签工具,专为 Nginx 服务器设计. ...

  5. 继承与ER图

    会员是用户吗? 实体与集合 er图叫实体联系图.什么是实体?是现实中存在的事物个体,用户背后是实际存在的单个人. 对象->实体 类->实体的集合 er图描述的是实体间的联系 会员是真实存在 ...

  6. 鸿蒙HarmonyOS实战-Stage模型(应用上下文Context)

    前言 应用上下文(Context)是应用程序的全局信息的接口.它是一个抽象类,提供了访问应用程序环境的方法和资源的方法.应用上下文可以用于获取应用程序的资源.启动Activity.发送广播等.每个应用 ...

  7. 前端如何对cookie加密

    在前端对 Cookie 进行加密时,你可以使用加密算法对 Cookie 的值进行加密,然后再将加密后的值存储到 Cookie 中.常用的加密算法包括对称加密算法(如 AES)和非对称加密算法(如 RS ...

  8. Windows Server 2022 安装

    获取 Windows Server 2022 https://www.microsoft.com/zh-cn/evalcenter/evaluate-windows-server-2022 查看 Wi ...

  9. Sqlserver存储过程中使用try-catch和事务

    BEGIN TRY BEGIN TRANSACTION --逻辑代码 COMMIT TRANSACTION --提交事务 END TRY BEGIN CATCH SELECT @Msg = ERROR ...

  10. MyBatis延迟加载策略详解

    延迟加载就是在需要用到数据的时候才进行加载,不需要用到数据的时候就不加载数据.延迟加载也称为懒加载. 优点:在使用关联对象时,才从数据库中查询关联数据,大大降低数据库不必要开销. 缺点:因为只有当需要 ...