django项目上线环境部署
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项目上线环境部署的更多相关文章
- Vue项目上线环境部署,项目优化策略,生成打包报告,及上线相关配置
Node.js简介 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,用来方便快速地搭建易于扩展的网络应用.Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量 ...
- 玩转Django2.0---Django笔记建站基础十二(Django项目上线部署)
第十二章 Django项目上线部署 目前部署Django项目有两种主流方案:Nginx+uWsGI+Django或者Apache+uWSGI+Django.Nginx作为服务器最前端,负责接收浏览器的 ...
- nginx+uwsgi+django+celery+supervisord环境部署
前言 很久没更博客了,最近新写了一个小项目,后边有时间把一些心得放上来,先把环境的部署方式整理出来. 部署过程 先将环境的python升级为2.7 保证有pip 安装了nginx并配置 vim /Da ...
- Nginx + uwsgi + django + websocket(dwebsocket)环境部署
1.安装nginx(/export/servers/nginx/) 保证/export/servers/nginx/是nginx的安装目录 /export/servers/nginx/conf/dom ...
- django-内网项目上线测试部署步骤
1.安装python环境 由于测试环境只有内网,所以在外网同系统上安装python. wget https://www.python.org/ftp/python/3.6.5/Python-3.6.5 ...
- linux安装Django 以及 生产环境部署实现高并发
1.首先安装python Python编译安装 主要介绍linux环境下安装 cd /usr/local/src //进入安装目录 wget https://www.python.org/ ...
- jenkins+supervisor实现django项目的自动部署(ubuntu)
没有安装supervisor的话首先安装supervisor, apt install upservisor 安装supervisor大概率会出现问题,不推荐,最好是用pip 安装, 注意python ...
- jekins 实现Django项目的自动部署(ubuntu16.04,python2.7,django1.11)
1.依赖的插件 如果插件下载失败 更换源 http://mirror.xmission.com/jenkins/updates/current/update-center.json 因为我们只需要构建 ...
- django 项目开发及部署遇到的坑
1.django 连接oracle数据库遇到的坑 需求:通过plsql建立的oracle数据表,想要django操作这几个表 python manage.py inspectdb table_name ...
随机推荐
- windows环境在本地配nginx
本地搭建了前端项目,但奈何有时候需要https访问的需求,所以做了一个尝试在本地(windows环境)下配置nginx,最终的效果就是 搭建的时候,遇到两个问题: 第一个是如果要在本地搭建https, ...
- mac Robotframework执行时报错Robot Framework installation not found.
虽然已经装了,但一直报错 ,版本是3.1.1 最新版 ➜ ~ pip install robotframework DEPRECATION: Python 2.7 will reach the en ...
- EF性能检测工具MiniProfilerEF6的使用
一.在VS项目中分别安装包MiniProfiler.MiniProfiler.EF6.MiniProfiler.MVC4 二.在Global.asax文件的Application_BeginReque ...
- django--如何将数据结果集序列化传给前端页面展示
示例为一对多的表关系,学生为多,老师为一,设置外键字段可以为空,也就是说关联的老师被删除该学生依然存在,只是相应字段留空 class Teacher(models.Model): name = mod ...
- web自动化测试python+selenium学习总结----python编辑器pycharm环境安装
下载安装文件 下载最新文件路径:https://www.jetbrains.com/pycharm/ 安装: 一直点击下一步即可 破解: 配置hosts文件.C:\Windows\System32\d ...
- 201905<<金字塔原理>>
金字塔原理是本好书,主要从写作,思考,解决问题三个方面讲解了如何使用金字塔结构来分析.自下而上的分析,自上而下的表达,解决问题时先确定问题的四要素,搭建三棱镜框架,再解决问题.三棱镜分析问题的方法感触 ...
- noVNC支持手机自带键盘输入
代码修改说明 novnc的web链接类似为:http://192.168.1.177:6080/vnc_auto.html?token=105356fa-bbe3-43e4-a0ce-7703dc42 ...
- 媒体查询@media 屏幕适配
@media(max-width: 1199px){.banner{height: 400px;}}1.6倍@media(min-width: 1200px) and (max-width: 1365 ...
- JAVA函数的重载和重写
一.什么是重载(overlording) 在JAVA中,可以在同一个类中存在多个函数,函数名称相同但参数列表不同.这就是函数的重载(overlording).这是类的多太性表现之一. 二.重载的作用: ...
- 数据库session立即生效(64---8192) SCOPE参数
SCOPE=MEMORY|SPFILE|BOTH 指示了修改参数时的“作用域”: SCOPE=MEMORY :只在实例中修改,重启数据库后此次修改失效. SCOPE=SPFILE :只修改SPFILE ...