django项目上线环境部署

第一步 安装python虚拟环境

1 安装虚拟环境virtualenv

2 安装virtualenvwrapper工具

3 确认virtualenvwrapper.sh脚本正常使用

4 确认用户环境变量配置文件,有virtualenvwrapper.sh的四行配置

WORKON_HOME=~/Envs
VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
VIRTUALENVWRAPPER_PYTHON=/opt/python3.7/bin/python3
source /opt/python3.7/bin/virtualenvwrapper.sh

5 创建路飞学城专用虚拟环境ldjango_env

mkvirtualenv  django

6 上传requirements.txt

使用lrzsz直接从windows下托过去

7 安装路飞学城项目所需要的所有模块(这需要将windows虚拟环境中的安装包导入到文件中>pip freeze >requirements.txt)

pip3 install -r requirements.txt

第二步 配置mysql数据库

1导出数据库

有两种方法
第一种:
mysqldump -u root -p --all-databases > luffy_city.sql
第二种:
直接从navicat导出数据库的数据
(1) 先从navicat导出数据库数据,导出为luffycity.sql
(2) 将luffycity.sql上传到服务器的/opt目录下
(3) 在服务器上进入mysql,然后创建数据库luffycity
(4) 进入数据库luffycity
(5) 使用命令source luffycity.sql导入luffycity.sql数据
(6) 使用show tables命令查看数据是否成功导入

2登录linux数据库

mysql -uroot -p

3 刷新授权表

# 允许root用户远程登录,并且给予所有数据库所有表的所有权限
grant all privileges on *.* to root@'%' identified by 'nihao123';
flush privileges;

4将上传这个项目数据文件到Linux数据库中

(1) 进入mysql
mysql -u root -p
(2) 进入数据库
use luffycity
(3) 导入数据
source /opt/luffycity.sql
注意1,linux的数据库,需要对root用户设置远程链接的权限,
注意2,SELinux和linux的防火墙要给关闭,否则windows去链接linux的3306端口可能被拒绝
注意3: 第4步一定要确认OK之后才能继续往下操作

第三步 测试linux的python解释器去运行项目 切换到项目中运行(注意要解决解释器模块问题,才能正常运行项目)

1先修改项目中的配置文件使得其对应的数据库和授权用户一致

ALLOW_HOSTS=["*"]
数据库连接配置
注意: mariadb就是mysql,这里的ENGINE不用修改
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
"HOST": "127.0.0.1",
"PORT": 3306,
"USER": "root",
"PASSWORD": "nihao123",
"NAME": "luffycity",
}
}

2使用命令把django跑起来

python3 manage.py runserver 0.0.0.0:8000

第四步 完成uWSGI自动启动django项目(uWSGI支持多进程)

1安装uwsgi

(1) 进入django_env虚拟环境
workon django_env
(2) 安装uwsgi
pip3 install uwsgi

2 uwsgi 启动测试文件

(1) 创建一个testqishi2.py
(2) 写入以下几行代码
def application(env, start_response):
start_response('200 OK', [('Content-Type','text/html')])
return [b"Hello World"] # python3
(3) 通过uwsgi命令将测试文件跑起来
uwsgi --http :9000 --wsgi-file testqishi2.py
(4) 测试通过IP+端口访问
http://192.168.12.56:9000

3 uwsgi 启动django项目

uwsgi --http :9000 --module  django.wsgi

4uwsgi热加载启动()

uwsgi --http :9000 --module django.wsgi --py-autoreload=1

5使用uwsgi配置文件启动django项目

(1) 创建一个配置文件uwsgi.ini(注意,这个配置文件不管放在哪里都可以,但是启动的时候,需要找到这个配置文件)
(2) 写入以下配置
[uwsgi] chdir = /opt/luffy_city/luffy
module = luffy.wsgi
home = /root/Envs/luffy_city_env
master = true
processes = 1
socket = 0.0.0.0:8000
http = 0.0.0.0:8000
vacuum = true (3) 通过指定uwsgi.ini配置文件把django跑起来
uwsgi uwsgi.ini

6 uwsgi.ini配置详解

[uwsgi]
# Django-related settings
# the base directory (full path)
# 写上项目的绝对路径
chdir = /opt/book_manage
# Django's wsgi file
# 填写找到django的wsgi文件,填写相对路径,以chdir参数为相对路径
module = book_manage.wsgi
# the virtualenv (full path)
# 填写虚拟环境的绝对路径
home = /root/Envs/book_manage_env/
# process-related settings
# master
#启动uwsgi主进程
master = true
# maximum number of worker processes
processes = 1
# the socket (use the full path to be safe
#如果你使用了nginx,做反向代理,必须填写socket链接,而不是http参数
socket = 0.0.0.0:8000
#如果你不用nginx,直接使用uwsgi,运行一个http服务端,就用这个http参数
http = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# chmod-socket = 664
# clear environment on exit
vacuum = true

注意:由于uwsgi 不支持处理静态文件,所以,我们需要配置nginx与uwsgi结合,通过nginx来处理静态文件

第五步  完成nginx的安装配置,了解nginx。conf如何配置

1收集静态文件

(1)  修改settings.py配置文件, 加入以下一行配置
STATIC_ROOT='/opt/luffy_city/static'
(2) 创建静态文件存放目录/opt/luffy_city/static
mkdir -p /opt/luffy_city/static
(3) 一条命令收集django项目下面的所有静态文件
python3 manage.py collectstatic

2 配置nginx结合uwsgi进行端口转发

(1)在nginx.conf配置文件下添加以下配置文件

location / {
include /opt/nginx112/conf/uwsgi_params;
uwsgi_pass 0.0.0.0:9000;
}

(2) 将uwsgi.ini配置文件里面的http注释掉,启用socket

socket          = 0.0.0.0:9000   # 启用此行
# http = 0.0.0.0:9000 # 停用此行

(3) 在nginx.conf中添加静态文件地址

location /static {
alias /opt/luffy_city/static;
}

(4) 平滑重启nginx

/opt/nginx112/sbin/nginx -s reload

(5) 在物理机上添加hosts

192.168.12.56    www.qishi2.com

第六步 验证所有流程是否正常

1 验证域名是否正常访问
2 验证静态文件是否正常显示
3 验证数据库是否连接正常
4 验证redis数据库是否连接正常
5 验证uwsgi是否正常启动 

第七步 安装node,配置vue前端

(1) 下载安装node软件包

wget https://nodejs.org/download/release/v8.6.0/node-v8.6.0-linux-x64.tar.gz

(2) 解压缩

tar -zxvf node-v8.6.0-linux-x64.tar.gz

(3) 添加环境变量

PATH=/opt/node-v8.6.0-linux-x64/bin:/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

(4) 将vue项目里面的所有127.0.0.1和所有的localhost全部改为我们的服务器地址192.168.12.56

注意: 此步非常重要, 讲师机上面的vue项目里面,这个IP没有创建全局变量,导致127.0.0.1和localhost分布在很多个文件中,所以需要一个一个替换

(5) 进入到vue前端的项目目录, 使用npm run build生成dist项目静态文件

cd /opt/luffy_city/luffy_pc
npm run build

(6) 在luffy_pc目录下就可以看到dist文件夹

/opt/luffy_city/luffy_pc/dist

第八步 supervisor守护进程工具

1 安装supervisor

# 注意此时已经退出虚拟环境了!!!!!
easy_install supervisor
# 如果没有easy_install的话,就yum安装一个setuptools工具就可以用了
yum install python-setuptools

2 生成supervisord配置文件

echo_supervisord_conf > /etc/supervisord.conf

3 在/etc/supervisord.conf下添加以下两行配置

[program:luffy_city]
command=/root/Envs/luffy_city_env/bin/uwsgi /opt/luffy_city/luffy/uwsgi.ini

4 启动supervisor

supervisord -c /etc/supervisord.conf # 启动supervisor
supervisorctl -c /etc/supervisord.conf # 启动和进入supervisor交互模式

5 查看supervisor运行状态

supervisorctl  # 使用此命令后将会进入supervisor交互式管理界面
status # 查看进程运行状态

6 管理supervisor里面的进程

stop luffy_city    # 关闭luffy_city进程
stop all # 关闭所有进程
start luffy_city # 开启luffy_city进程
start all # 开启所有进程
status # 查看所有进程运行状态
supervisorctl status # 可以不用进入交互模式查

django项目上线环境部署的更多相关文章

  1. Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置

    Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...

  2. 玩转Django2.0---Django笔记建站基础十二(Django项目上线部署)

    第十二章 Django项目上线部署 目前部署Django项目有两种主流方案:Nginx+uWsGI+Django或者Apache+uWSGI+Django.Nginx作为服务器最前端,负责接收浏览器的 ...

  3. nginx+uwsgi+django+celery+supervisord环境部署

    前言 很久没更博客了,最近新写了一个小项目,后边有时间把一些心得放上来,先把环境的部署方式整理出来. 部署过程 先将环境的python升级为2.7 保证有pip 安装了nginx并配置 vim /Da ...

  4. Nginx + uwsgi + django + websocket(dwebsocket)环境部署

    1.安装nginx(/export/servers/nginx/) 保证/export/servers/nginx/是nginx的安装目录 /export/servers/nginx/conf/dom ...

  5. django-内网项目上线测试部署步骤

    1.安装python环境 由于测试环境只有内网,所以在外网同系统上安装python. wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5 ...

  6. linux安装Django 以及 生产环境部署实现高并发

    1.首先安装python Python编译安装 主要介绍linux环境下安装 cd  /usr/local/src     //进入安装目录 wget  https://www.python.org/ ...

  7. jenkins+supervisor实现django项目的自动部署(ubuntu)

    没有安装supervisor的话首先安装supervisor, apt install upservisor 安装supervisor大概率会出现问题,不推荐,最好是用pip 安装, 注意python ...

  8. jekins 实现Django项目的自动部署(ubuntu16.04,python2.7,django1.11)

    1.依赖的插件 如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json 因为我们只需要构建 ...

  9. django 项目开发及部署遇到的坑

    1.django 连接oracle数据库遇到的坑 需求:通过plsql建立的oracle数据表,想要django操作这几个表 python manage.py inspectdb table_name ...

随机推荐

  1. windows下复制文件报错“文件名对目标文件夹可能过长 。您可以缩短文件名并重试,或者......”

    我将一个路径下文件夹复制到另一个路径下时,出现了报错,报错图片如下: 然后查资料发现: 1.文件名长度最大为255个英文字符,其中包括文件扩展名在内.一个汉字相当于两个英文字符.2.文件的全路径名长度 ...

  2. CJSON create.c

    #include <stdio.h> #include "cJSON.h" /* { "semantic": { "slots" ...

  3. 软件测试第二次作业:初识JUNIT单元测试方法

    软件测试有很多分类,从测试的方法上可分为:黑盒测试.白盒测试.静态测试.动态测试   从软件开发的过程分为:单元测试.集成测试.确认测试.验收.回归等. 在众多的分类中,与开发人员关系最紧密的莫过于单 ...

  4. vue中使用vue-quill-editor及上传图片到自己服务器

    第一步,下载依赖 cnpm install vue-quill-editor --save 第二步,再main.js里引入组件(我这里是全局注册) // 富文本编辑器 import VueQuillE ...

  5. javascript将base64编码的图片数据转换为file并提交

    /** @param base64Codes 图片的base64编码 */ function sumitImageFile(base64Codes){ var form=document.forms[ ...

  6. 小程序开发-Now you can provide attr "wx:key" for a "wx:for" to improve performance

    Now you can provide attr "wx:key" for a "wx:for" to improve performance 是一个关于性能优 ...

  7. mysql 查询前几条数据

    limit是mysql的语法select * from table limit m,n其中m是指记录开始的index,从0开始,表示第一条记录n是指从第m+1条开始,取n条.select * from ...

  8. 2018-2019-2 网络对抗技术 20165305 Exp4 恶意代码分析

    Exp4 恶意代码分析 1.实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysi ...

  9. Saiku资源帖

    一.精选 1.李秋 随笔分类 - pentaho 二.概述 1.Saiku + Kylin 多维分析平台探索 三.Saiku+Kylin 1.使用Saiku+Kylin构建多维分析OLAP平台 2.使 ...

  10. Porsche Piwis Tester II V15.6 with CF30 Laptop or Lenovo E49AL Laptop

    Some of my customers let me recommended which auto diagnostic tool is good for Porsche , I recommend ...