Django项目在linux系统中虚拟环境部署
1.在linux系统下,安装virtualenv
命令:pip install virtualenv
2.项目部署前的准备
1. Django web project deployment
1.1. 项目准备
准备打包好项目组开发的web项目,通过FTP上传到指定的linux/unix服务器
案例项目:mysite/
1.2. 生产环境准备
Django生产环境服务器,常规情况下使用Linux/Unix平台作为服务器平台,需要准备如下运行环境
l 环境:python2.x / python3.x
l 软件:mysql-server、mysql-client
l 模块:pymysql、pillow、django、uwsgi
1.3. 项目部署【UWSGI部署】
在指定的文件夹中上传项目文件
使用FTP连接linux系统,一般情况下建议使用非root账号和密码进行连接。
上传文件之前可以使用pip freeze > 文件名,在原来的项目环境中进入项目搜集第三方模块,并保存在自定义文件中,将该文件创建于项目内部,一起上传如linux系统。
(1) 在生产环境打开mysql-client命令行,执行项目sql脚本语句,初始化数据库
(2) 在项目根目录中,添加uwsgi.ini配置文件,添加如下内容
[uwsgi] # 指定服务器部署IP地址和端口 http=192.168.10.120:8000 # 配置项目在当前服务器中的绝对路径 chdir=/home/worker/django_pro_1_11/mysite # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 pidfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log |
(3) 项目运行
启动项目,当前路径中,直接运行命令启动项目
uwsgi --ini uwsgi.ini |
停止项目,通过包含主进程编号的文件设置停止项目
uwsgi --stop uwsgi.pid |
重启项目
uwsgi --reload uwsgi.pid |
1.4. 项目部署【UWSGI + NGINX】
通过UWSGI服务器部署Django项目,通过nginx进行反向代理
(1) 项目根目录创建uwsgi.ini配置文件
[uwsgi] # 配置和nginx反向代理之间的连接地址 socket=localhost:8000 # 配置项目根路径 chdir=/home/worker/django_pro_1_11/mysite # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 pidfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log |
(2) 编辑nginx.conf配置文件,设置反向代理
nginx和uwsgi进行配合使用时,nginx主要有两个作用,使用nginx作为静态文件服务器和反向代理服务器
l 设置静态文件
打开django项目的配置文件,添加STATIC_ROOT配置
编辑mysite/mysite/settings.py
.. STATIC_ROOT=/home/worker/django_pro_1_11/myweb/static_file/ .. |
进入Django项目根目录执行命令收集静态文件
>>> python manage.py collectstatic |
l 反向代理配置
编辑/etc/nginx/nginx.conf配置文件,编辑server配置选项
核心配置反向代理server服务器和静态文件别名
.. events { ... } .. http { .. server { listen 80; server_name 192.168.10.120; # 反向代理配置 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8000; } # 静态文件路径配置 location /static { alias /home/worker/django_pro_1_11/myweb/static_file/; } } .. } |
(3) 启动项目进行测试
l 首先进入项目目录,启动Django项目
>>> uwsgi --ini uwsgi.ini |
l 启动nginx服务器
>>> nginx |
l 检查进程启动情况
>>> ps -ef|grep wsgi .. >>> ps -ef|grep nginx .. |
l 测试访问项目
TEST
1.5. 项目分布式部署【UWSGI + NGINX】
使用UWSGI配置Django项目的多进程部署,使用nginx进行静态文件的部署和负载均衡的配置
(1) 在多台主机上部署多个相同的django项目【同一台主机上部署多个项目进行模拟】
设置两个或者多个Django项目的启动配置信息如下
mysite/uwsgi.ini
[uwsgi] # 配置项目访问地址 http=localhost:8000 # 配置项目根路径 chdir=/home/worker/django_pro_1_11/mysite # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 pidfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log |
mysite2/uwsgi.ini
[uwsgi] # 配置项目访问地址 http=localhost:9000 # 配置项目根路径 chdir=/home/worker/django_pro_1_11/mysite2 # 相对路径指定当前项目中wsgi.py wsgi-file=mysite/wsgi.py # 设置启动的进程数量 processes=4 # 设置每个进程启动的线程数量 threads=2 # 设置主进程 master=True # 指定保存主进程编号的文件 pidfile=uwsgi.pid # 指定守护进程的日志存储 daemonize=uwsgi.log |
(2) 配置nginx静态服务器映射和负载均衡
.. .. # 使用默认的轮询分发配置多个分布的服务主机 upstream myweb { server 127.0.0.1:8000; server 127.0.0.1:9000; } server { listen 80; server_name 192.168.10.120; # 配置分布式负载转发 location / { proxy_pass http://myweb; } # 配置静态文件服务器 location /static { alias /home/worker/django_pro_1_11/myweb/static_file/; } .. .. |
(3) 测试访问项目
TEST
2. Tornado web project deployment
2.1. 项目准备
参考Django 1.1部分
2.2. 项目常规部署【使用自带服务器直接操作】
直接通过配置文件或者命令行指定端口运行程序,就可以使用torando自带的web服务器启动web项目并提供正常的web服务了
但是这样的操作方式并不是可取的,命令行需要处理让启动的程序后台运行,并且如果部署多进程项目的话,多个进程之间没有进行统一管理的操作,很不方便后期的维护操作
直接运行【阻塞方式】
>>> python demo.py --port=8000 |
后台运行【非阻塞方式】
>>> python demo.py --port=8000 & |
2.3. supervisor管理进程
针对tornado多进程部署方式,第三方提供了各种进程管理模块用于进行tornado项目多个进程的维护管理,项目中常用的如supervisor、circus等等
(1) ubuntu中安装supervisor
$ sudo apt-get install supervisor |
备注:可以使用pip install supervisor安装
安装完成后,生成supervisor配置文件
$ cd /etc/supervisor $ echo_supervisord_conf > supervisord.conf |
修改配置文件/etc/supervisor/supervisord.conf
.. [include] files=./conf.d/*.conf |
(2) 添加tornado管理配置文件/etc/supervisor/conf.d/tornadoes.conf
[group:td] programs=tornado-8000, tornado-8001 [program:tornado-8000] command=/home/worker/tornado_web/tornado_lib/bin/python /home/worker/tornado_web/web1/demo01.py --port=8000 directory=/home/worker/tornado_web/web1 user=www-data autorestart=true redirect_stderr=true stdout_logfile=/home/worker/tornado_web/web1/log/tornado.log loglevel=debug [program:tornado-8001] command=/home/worker/tornado_web/tornado_lib/bin/python /home/worker/tornado_web/web1/demo01.py --port=8001 directory=/home/worker/tornado_web/web1 user=www-data autorestart=true redirect_stderr=true stdout_logfile=/home/worker/tornado_web/web1/log/tornado.log loglevel=info |
(3) 进程管理
启动进程管理器
$ supervisord -c supervisord.conf |
进程管理器包含进程状态管理
supervisorctl status # 查看管理的所有进程的状态 supervisorctl update # 重新启动配置文件修改的程序 supervisorctl stop td:* # 停止所有进程[可以指定进程] supervisorctl start td:* # 启用所有进程[可以指定进程] supervisorctl restart td:* # 重启所有进程进程[可以指定进程] |
2.4. supervisor+nginx分布式部署
参考Django项目部署1.5章节nginx部署部分
3. Flask web project deployment
模仿Django和Tornado的项目部署方式
参考
http://docs.jinkan.org/docs/flask/deploying/index.html#deployment
3.在指定的文件夹中上传项目文件
使用FTP连接linux系统,一般情况下建议使用非root账号和密码进行连接。
上传文件之前可以使用pip freeze > 文件名,在原来的项目环境中进入项目搜集第三方模块,并保存在自定义文件中,将该文件创建于项目内部,一起上传如linux系统。
Django项目在linux系统中虚拟环境部署的更多相关文章
- 使用URLOS在linux系统中极速部署NFS共享存储服务
如何在linux系统里搭建NFS服务?其实我们只需要安装一个URLOS面板,然后就能在3分钟内将NFS服务部署完成.近日,URLOS在应用市场中上架了一款NFS应用,它可以让我们的节点主机在3分钟内极 ...
- windows系统下的maven项目放到linux系统中运行时报org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnection这种异常的解决办法
这个错误的解决办法其实很简单你把连接mysql数据库的那个jar包换成linux版本的就行了: linux版本的连接mysql数据库的jar包链接:http://files.cnblogs.com/f ...
- 在Linux系统中部署NodeJS项目
在Linux系统中部署NodeJS项目 安装NodeJS 首先进入 Node 官网,下载对应的 Node包 下载下来后是一个后缀为 xz 的压缩包,我们把这个包上传到 Linux 系统中的 /usr/ ...
- Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)
Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt) 作者: Desmond Chen,发布日期: 2014-05- ...
- Linux系统中ElasticSearch搜索引擎安装配置Head插件
近几篇ElasticSearch系列: 1.阿里云服务器Linux系统安装配置ElasticSearch搜索引擎 2.Linux系统中ElasticSearch搜索引擎安装配置Head插件 3.Ela ...
- Linux系统中tomcat的安装及优化
Linux系统中Tomcat 8 安装 Tomcat 8 安装 官网:http://tomcat.apache.org/ Tomcat 8 官网下载:http://tomcat.apache.org/ ...
- Django项目之打分系统
打分系统 关注公众号"轻松学编程"了解更多. 项目GitHub地址:https://github.com/liangdongchang/VoteSys.git 1.开发需求 a. ...
- 【Docker】在Linux系统中安装Docker虚拟机、启动停止重启查看Docker命令
安装Docker 文章目录 安装Docker Docker虚拟机架构 在Linux系统中安装Docker虚拟机 管理Docker虚拟机 参考资料 Docker虚拟机架构 Docker创建的所有虚拟实例 ...
- 用户管理 之 Linux 系统中的超级权限的控制
在Linux操作系统中,root的权限是最高的,也被称为超级权限的拥有者.普通用户无法执行的操作,root用户都能完成,所以也被称之为超级管理用户. 在系统中,每个文件.目录和进程,都归属于某一个用户 ...
随机推荐
- 1_Linux概述
linux就是一套操作系统 //系统调用与内核如果能够参考硬件的功能函数并修改你的操作系统程序代码,那经过改版后的操作系统就能够在另一个硬件平台上面运行了,这个操作通常被称为"软件移植&qu ...
- Windows10家庭版用户无法在计算机管理更改权限的解决办法
问题描述:今天因为动了注册表导致windows登陆界面只剩下一个管理员账号,而平常用的账号不知所踪~这个问题本来很好解决,但是由于在用的笔记本安装的是Windows家庭中文版,无法通过计算机管理在本地 ...
- Series.str——字符串批量处理方法
针对dataframe中的某一行(或列)想做批量字符串处理时,可采用此方法 series.str.python内置的str方法 例如: series.str.replace('A','B') # ...
- Gerapy的简单使用
1. Scrapy:是一个基于Twisted的异步IO框架,有了这个框架,我们就不需要等待当前URL抓取完毕之后在进行下一个URL的抓取,抓取效率可以提高很多. 2. Scrapy-redis:虽然S ...
- linux c使用socket进行http 通信,并接收任意大小的http响应(五)
http.c data2.c http_url.c http.h data2.h http_url.h主要实现的功能是通过URL结构体来实现HTTP通信,你可以把这三个文件独立出来,作为HTTP通信模 ...
- day051 Django创建
Django的下载安装 下载Django: pip3 install django==1.11.14 创建Django project(项目) 步骤1: 步骤2: 步骤3: 配置settings属性 ...
- Vue解决同一页面跳转页面不更新
问题分析:路由之间的切换,其实就是组件之间的切换,不是真正的页面切换.这也会导致一个问题,就是引用相同组件的时候,会导致该组件无法更新. 方案一:使用 watch 进行监听 watch: { /* = ...
- eclipse中创建DataBase Connections
1.window --> show view --> other --> Data Management --> Data Exploerer --> ok: 2.右键单 ...
- 积累的关于linux的安装卸载软件基本命令
Linux安装.卸载软件 在linux环境中,尤其是cenos中安装过一些软件,一般是二进制安装与源码安装,现小结一下linux中的安装与卸载. 一.通常Linux应用软件的安装包有三种: 1) ...
- JAVA学习笔记系列3-JVM、JRE和JDK的区别
JVM(Java Virtual Machine)就是一个虚拟的用于执行bytecode字节码的“虚拟计算机”.它和os打交道 JRE(Java Runtime Environment)包含:Java ...