uWSGI + nginxdjango + virtualenv + supervisor发布web服务器

项目部署步骤

1.项目准备阶段

1.准备项目代码,从本地拷贝

2.将项目上传到linux服务器中,也就是拖进linux中...

3.执行命令解压缩项目文件 

2.解决项目运行的环境问题

1.通过命令导出开发机器的所有模块,可以在windows下通过命令,导出模块文件

pip3  freeze  > requirements.txt     #这是开发者约定俗成的文件名

2.将这个文件上传linux上.进行安装
  pip3 install -i https://pypi.douban.com/simple -r requirements.txt 

3.数据库操作

1.准备需要使用的数据库db  #例如mysql    没有就下载
yum install mariadb-server mariadb -y 2.启动数据库
systemctl start maridb 3.修改项目中settings.py中配置文件,修改mysql数据库驱动,还有ALL_HOSTS = [" * "],允许所有网段访问 4.创建数据库和项目对应的库名

4.virtualenv虚拟环境配置

1.配置好python3虚拟环境
2.进入虚拟环境安装uwsgi
pip3 install uwsgi

python3虚拟环境配置虚拟环境,参照 --->https://www.cnblogs.com/CrazySheldon1/p/10488249.html

5.uwsgi准备和配置

uwsgi.ini配置参考这个博友https://blog.51cto.com/wangfeng7399/2341281

通过uwsgi启动django项目

#1. 首先进入项目的第一层    cd   项目名

#2.执行命令启动
django uwsgi --http :8000 --module 项目名.wsgi #也可以执行热加载命令: uwsgi --http :8000 --module 项目名.wsgi --py-autoreload=1 #--py-autoreload=1 就是检测到项目中修改代码后进行自动重启进行同步 #3.使用nginx的话就需要通过配置文件启动uwsgi,在项目第一层创建一个uwsgi.ini的文件 touch uwsgi.ini 4.手动配置uwsgi.ini文件
[uwsgi]
# Django-related settings
# the base directory (full path)
#这里写入项目的绝对路径
chdir= /opt/项目名
# Django's wsgi file
#写入django的第二层文件夹,和wsgi.py文件
module = 项目名.wsgi
# the virtualenv (full path)
#虚拟环境的绝对路径
home= /root/Envs/虚拟环境名
# process-related settings
# master
master= true
# maximum number of worker processes
processes= 1
#如果你没用nginx,想直接访问django后台,可以使用http协议
#http = 0.0.0.0:8000
#如果你用了nginx进行反向代理,请使用socket协议,注释掉http协议 socket= 0.0.0.0:8000 # ... with appropriate permissions - may be needed
# chmod-socket= 664
# clear environment on exit
vacuum= true  

6.nginx配置结合uwsgi启动

1.修改nginx配置文件.nginx.conf
#如下nginx的反向代理
location /{
include uwsgi_params;
uwsgi_pass 0.0.0.0:8000;
} #http://192.168.11.250/static/admin/css/base.css#当请求url,从
static路径开始时,我们就让他去找某一个文件夹解决静态文件的配置方式
location /static{
alias /opt/自定义名称 #(存放static静态文件)
} 2.修改django的settings.py,收集静态资源
STATIC_ROOT = '/opt/project_name_static' #在settings.py中添加(自定义名称)
#同时保证以下两个配置存在
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
3.使用命令收集django的静态文件
python3 manage.py collectstatic #注意在manage.py同级目录执行 

7.使用supervisor启动uwsgi

#1.首先退出虚拟环境,安装supervisor, 注意python3不支持supervisor,因此要使用物理环境的python2进行安装,
#yum - install python-setuptools
#easy_install supervisor #2.安装完毕后,生成配置文件 echo_supervisord_conf > /etc/supervisord.conf #3.在配置文件中,添加任务,管理uwsgi
vim /etc/supervisord.conf #在最底行,写入配置如下 [program:自定义名称]
command=/root/Envs/虚拟环境名称/bin/uwsgi --ini
/opt/项目名称/uwsgi.ini
stopasgroup=true
killasgroup=true #4.启动supervisor服务
supervisord -c /etc/supervisord.conf #5.通过命令进行管理uwsgi
supervisorctl -c /etc/supervisord.conf #6.学习管理supervisor的命令
start 任务名
stop 任务名
stop all
start all
status 任务名

此时项目部署完毕,如果没有差错,便可以通过ip正常跑起来了...

项目细节部分

不用nginx也能实现项目部署,通过uwsgi热加载也可以启动django项目,为什么要用nginx?

  • 安全问题:程序不能直接被浏览器访问,而是通过nginx,nginx只开放某个接口,uwsgi本身是内网接口,这样运维人员在nginx上加上安全性限制,可以达到保护程序的作用
  • 负载均衡问题:一个uwsgi 很可能不够用,即使开了多个work也不行,毕竟一台机器的cpu内存是有限的,有了nginx做代理,一个nginx可以代理多台uwsgi完成uwsgi的负载均衡
  • 静态问题:使用django或是uwsgi来负责静态文件是很浪费的行为,而且他们本身对文件的处理也不如nginx好,所以整个静态文件的处理都直接由nginx完成.

...

linux ---部署django项目篇的更多相关文章

  1. linux部署django项目流程(全)

    1.python3和python2共存配置 流程在下面网址中 https://www.cnblogs.com/vinic-xxm/p/11358894.html 2.安装依赖包 yum install ...

  2. Linux 下部署Django项目

    Linux 下部署Django项目   说明:本文所使用的环境为CentOS 6+Python2.7+Django1.11 安装Django.Nginx和uWSGI 1.确定已经安装了2.7版本的Py ...

  3. linux上使用nginx、uwsgi部署django项目

    参考:CentOS7下部署Django项目详细操作步骤 注意事项: 在虚拟环境中操作,虚拟环境中安装nginx.uwsgi,虚拟环境外需安装uwsgi -- 临时关闭防火墙:systemctl sto ...

  4. 在裸机centos7系统中部署django项目的过程

    概要 本文用一台安装了centos7.5系统的裸奔Linux机器(当然是虚拟机)详细讲解从无到有部署django项目的过程. 安装必要的工具 配置yum源 至于什么是yum源大家请自行百度,本人用的是 ...

  5. 打造专属测试平台4-使用Docker部署Django项目

    编写完项目代码后,为了稳定的运行,需要将其部署至服务器.这里我选择了Docker去部署Django后端代码. 首先来看看Runoob对Docker的介绍: Docker 是一个开源的应用容器引擎,基于 ...

  6. mac osx 上面部署Django项目 apache+mysql+mod_wsgi

    1.安装Xcode command line tools 首先,编译mysql和Homebrew需要用到Xcode command line tools,所以首先安装command line tool ...

  7. CentOS 6.8 部署django项目一

    CentOS 6.8 部署django项目二 1.安装python3.5(默认是2.6) 参考:http://blog.csdn.net/shaobingj126/article/details/50 ...

  8. docker 部署django项目(nginx + uwsgi +mysql)

    最近在学习用docker部署Django项目,经过百折不挠的鼓捣,终于将项目部署成功,爬过好多坑,也发现很多技能需要提高.特此写下随笔与小伙伴们分享,希望能对大家有所启发. docker的理论我就不赘 ...

  9. 使用Nginx+uWSGI部署Django项目

    1.linux安装python3环境 参考链接:https://www.cnblogs.com/zzqit/p/10087680.html 2.安装uwsgi pip3 install uwsgi l ...

随机推荐

  1. Javascript 函数声明、函数表达式与匿名函数自执行表达式

    函数表达式(Function Expression)注:将函数定义为表达式语句(通常是变量赋值)的一部分 //func() 错误 var func = function () { } //func() ...

  2. git主要操作命令

    1.创建版本库 (1)初始化一个 Git仓库,使用git init命令 (在相应的本地库目录下执行,将该目录初始化为一个Git库): (2)添加文件到Git仓库,分两步: 第一步,使用命令 git a ...

  3. iOS ReplayKit实时录制屏幕实现方案的细节记录

    项目有个需求,需要把ios设备上的操作画面实时传输出去,也就是类似推流手机直播画面的方案. 一番调研后发现在ios中,我们可以通过ios自带ReplayKit框架实现. 关于ReplayKit的讲解, ...

  4. 一个会学习(观察->活学->求变)的人,在任何领域都能变得强大无比

      开始今天的话题之前,我说个小故事.   很早以前有一部美剧,叫<Hero>.   大概讲的是正反两派都是一群有超能力的人,彼此为了某个巨大的阴谋互相撕逼了十多集.虽然剧情很老套,但是让 ...

  5. django 与 mysql 勾结指南

  6. maven 使用 国内镜像的方法 解决依赖下载慢

    转自:http://blog.csdn.net/banqgg/article/details/55804569 Maven是当前流行的项目管理工具,但官方的库在国外经常连不上,连上也下载速度很慢.国内 ...

  7. paste

    echo "step 1" >> steplog.txt    echo "step 1"        sudo apt-get install ...

  8. SQL2008R2的 遍历所有表更新统计信息 和 索引重建

    [2.以下是更新统计信息] DECLARE UpdateStatisticsTables CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.s ...

  9. window10下TensorFlow-gpu环境搭建

    安装python 下载python3.5.4 https://www.python.org/downloads/release/python-354/ 选择Windows x86-64 executa ...

  10. iOS- UITextView与键盘回收与键盘遮挡输入框

    一.UITextView 可以实现多行输入的文本框,基本属性与UITextField相似,可以输入多行,可以滚动.UITextView还有个代理方式- (BOOL)textView:(UITextVi ...