一、python web 项目部署

python django默认启动
python3 manage.py runserver 0.0.0.0:8000这种方式调用wsgiref单机模块,性能较低,生产环境不用

线上使用uwsgi工具(由c语言编写的工具,性能强悍)启动django,
使用方式:

在激活虚拟环境的前提下,使用uwsgi
安装配置好virtualenvwrapper工具,或者virtualenv皆可

在虚拟环境下安装uwsgi

1、安装uwsgi工具

pip3 install -i https://pypi.douban.com/simple uwsgi

2、配置uwsgi.ini

手动创建uwsgi.ini,放在crm项目下,便于管理
touch uwsgi.ini

配置文件uwsgi.ini的内容如下,这就是一个普通文本,里面定义了功能参数

[uwsgi]
# Django-related settings
# the base directory (full path)
#项目的绝对路径,定位到nbcrm的第一层
chdir = /opt/NBcrm
# Django's wsgi file
# 找到项目第二层的wsgi文件(基于上面的路径)
module = NBcrm.wsgi
# the virtualenv (full path)
# 找到虚拟环境的绝对路径
home = /root/Envs/nbcrm
# process-related settings
# master
# 主进程
master = true
# maximum number of worker processes
# 开启uwsgi的多进程数,根据cpu核数来定义
processes = 16
# the socket (use the full path to be safe
# 基于socket链接运行crm,只有与nginx结合的时候,才使用socket形式
socket = 0.0.0.0:8000
# 当你没用nginx,调试项目的时候,使用http形式
#http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true
【指定一个参数,输入日志】
【如果你使用了supervisor,请注释掉这个参数】
#守护进程在后台运行,且将日志信息,输出到uwsgi.log日志中
#daemonize = uwsgi.log
#守护进程在后台运行
#daemonize = True

3、启动django项目

通过uwsgi.ini配置文件,启动crm

# 相对路径启动
uwsgi --ini uwsgi.ini

4、收集静态文件

此时后端项目uwsgi已经启动,但是由于uwsgi默认不解析django的静态文件,需要收集django所有静态文件,然后让nginx去处理静态文件
并且使用nginx的反向代理特性.

请求流程:

用户发起请求, >>>>>>>>>访问192.168.16.142(或者访问域名www.s20crm.com) ,

请求走到nginx这一层代理,>>>>>>>>>nginx直接转发(uwsgi_pass)给后端django的地址
django处理完毕 >>>>>>>响应给nginx >>>>>> nginx返回结果给浏览器界面

1、修改django的settings.py静态文件

添加如下参数:

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.11/howto/static-files/
#自定义的文件夹,统一管理django所有的静态文件
STATIC_ROOT='/opt/s20static' STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'statics'),
]

2、执行命令,收集crm的静态文件

python3  /opt/NBcrm/manage.py collectstatic

3、配置nginx的location路径匹配,找到crm这些静态文件

# 在nginx.conf中找到server{}标签,添加如下参数
# 当我的请求url是 192.168.16.142:80/static/xxxxxxxx
location /static {
alias /opt/s20static/;
}

5、配置nginx

server {
listen 80;
server_name localhost;
#最低级路径匹配,当请求url是 www.s20crm.com(192.168.16.142/)
location / {
#include翻译就是包含的意思,将外部一个文件的内容,包含进来
include uwsgi_params;
# 找的是用uwsgi启动django的主机,nginx和项目是分离的不在一个主机上
uwsgi_pass 127.0.0.1:8000;
}
#当请求是 192.168.16.142/static/xxxxx
#解析NBcrm静态文件内容,处理css js
location /static {
alias /opt/s20static/;
}
}

6、域名解析

通过访问www.crm.com会找到真实的ip,对真实的ip进行资源请求

设置域名:

本地host文件:

在本地构造虚拟网址:

二、supervisor进程管理工具

使用supervisor进程管理工具,管理你的项目
其实,supervisor就是在帮你执行命令而已
使用supervisor管理进程,这个进程不得在后台运行,

退出虚拟环境,在物理环境下安装supervisor

1.安装命令
pip3 install -i https://pypi.douban.com/simple supervisor
2.创建supervisor的配置文件
echo_supervisord_conf > /etc/supervisor.conf
3.编辑配置文件,写入管理nbcrm的任务参数
[program:s20nbcrm]
command=/root/Envs/nbcrm/bin/uwsgi --ini uwsgi.ini
command=/root/Envs/django01/bin/uwsgi --ini /root/Envs/django01/crm_rbac/homework_crm/uwsgi.ini
stopasgroup=true ;默认为false,进程被杀死时,是否向这个进程组发送stop信号,包括子进程
killasgroup=true ;默认为false,向进程组发送kill信号,包括子进程 4.启动supervisor,去管理uwsgi supervisord -c /etc/supervisor.conf #指定配置文件,启动这个服务 5.通过supervisorctl管理命令,管理uwsgi
supervisorctl -c /etc/supervisor.conf

管理uwsgi

# 状态
status all
# 启动
start s20nbcrm
# 停止
stop s20nbcrm
# 停止所有
stop all

注意:

如果想要django的admin我们需要在物理环境下创建超级用户:

python3 manage.py createsuperuser

在虚拟环境下创建的超级用户是隔离的,无法使用

Liunx之django项目部署的更多相关文章

  1. Django项目部署在Linux下以进程方式启动

    Django项目部署在Linux下以进程方式启动 这是一篇关于如何在linux下,以后台进程的方式运行服务,命令改改基本上就通用了. 开发完Django项目后,需要把项目部署到linux环境下.当然, ...

  2. 使用gunicorn将django项目部署到生产环境的子目录下,在nginx后端获取客户真实IP地址

    生产环境有时,并不是为了一个项目而存在的.毕竟,域名是比较稀有的. 今天遇到这个问题,解决了.作个记录. 并且,如果将django项目部署在Nginx后面,那如何获取用户真实的IP地址呢? 下面就来解 ...

  3. Django项目部署(django+guncorn+virtualenv+nginx)

    一.说明 为了django项目部署到生产环境上,能够稳定的运行,且能够同时指出http和https的访问,对django的部署进行了一些研究,决定采用django + gunicorn + virtu ...

  4. django项目部署过程

    django项目部署过程 1.上传代码 用git或者其他工具,如scp 代码上传后保证每个应用下的migrations文件夹里只有一个__init__.py文件,自己的迁移文件不要上传上来,具体的gi ...

  5. Windows下django项目部署 通过Apache2.4+mod_wsgi

    经过几天踩坑,记录在Windows10下通过Apache2.4部署Django项目的过程 运行环境: 先说下环境,怎么安装倒是其次的,版本很重要,我是根据mod_wsgi的版本要求下载的各个版本(py ...

  6. 学习VirtualEnv和Nginx+uwsgi用于django项目部署

    以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...

  7. django 项目部署在 Apache 后, 设置二级域名(Apache虚拟主机 、 万网二级域名设置)

    上一篇文章简单说了怎么把django的项目部署到Apache上. 现在想弄个二级域名,也就是我原来有个域名 www.mysite.com,现在我想弄个 bbs.mysite.com ,该怎么做呢. 要 ...

  8. Django项目部署到Apache服务器

    本文讲述的是在阿里云服务器(ECS)上部署Django项目于Apache,服务器操作系统为ubuntu,公网Ip地址为123.56.30.151. 将Django部署到Apache服务器的原因 Dja ...

  9. django项目部署上线

    前言 完善的django项目上线,有很多种上线的方法,比如apache, uwsgi, nginx等.这里只介绍2种,一种是django自带的,另外一种则是nginx + uwsgi完成介绍.这里的系 ...

随机推荐

  1. (二)如何利用C# Roslyn编译器写一个简单的代码提示/错误检查?

    上一篇我们讲了如何建立一个简单的Roslyn分析项目如分析检查我们的代码. 今天我们主要介绍各个项目中具体的作用以及可视化分析工具. 还是这种截图,可以看到解决方案下一共有三个项目. Analyzer ...

  2. shell脚本使用记录

    一些比较功能需求比较简单的可以考虑使用shell脚本来写,这样可以方便快捷稳定 1. 读取文件值,根据文件值1 或 0 来开启和关闭某些程序 a.  while : do done 是无限循环. b. ...

  3. JS基础 sessionStorage

    html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只 ...

  4. Framework7 - 入门教程(安装、配置、创建一个H5应用)

    1,Framework7介绍 (1)Framework7 是一个开源免费的框架.可以用来开发混合移动应用(原生和 HTML 混合)或者开发 iOS & Android 风格的 WEB APP. ...

  5. MyBaties --day1

    今天就来聊聊这个东西 今天的主角相信大家也看到了 MyBaties  是个什么东东 它有什么作用?怎么用?好不好用今天来说说 .说到MyBaties 就不得不谈到JDBC大家可能都知道 JDBC用来操 ...

  6. zabbix初级进阶

    目录 一.理论概述 zabbix功用 运行条件 缺点 zabbix组件 部署 web安装zabbix 优化 总结 这篇文章主要对zabbix有一个全面且简单的了解 一.理论概述 zabbix功用 检测 ...

  7. mybatis逆向工程(eclipse版本)

    1. 新建maven项目, 目录结构 2. src/main/resources中新建generatorConfig.xml <?xml version="1.0" enco ...

  8. 【Intel 汇编】ELF文件

    ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型: 可重定位的目标文件(Relocatable,或者Object File) 可执行文件(Executab ...

  9. Python For嵌套循环 图形打印X型 nested loop - 练习题答案

    上一篇:Python For嵌套循环 图形打印X型 nested loop - 练习题 上一篇留的Python For嵌套循环 图形打印X型练习题的答案. 由于网上很多嵌套循环都是C++语言写的,用P ...

  10. 说一下 atomic 的原理?(未完成)

    说一下 atomic 的原理?(未完成)