python中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 安装路飞学城项目所需要的所有模块

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 [email protected]‘%‘ 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  # 可以不用进入交互模式查

原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/10756668.html

时间: 2024-12-11 17:14:19

python中django项目上线环境部署的相关文章

Django项目发布 环境部署(中)

python环境部署 我们今天学习的内容是如何将Django项目部署到linux服务器上,我们部署的linux系统是centos7首先,我们先在linux上搭建我们的Python3环境: 在这里首先强调一下,Centos7系统自带的Python2我们不要删除,我们要做的是在Python2和python3并存. 1.  安装Python3的依赖包 2.  命令: [[email protected] Desktop]# yum install zlib-devel bzip2-devel open

Django项目发布 环境部署(下)

上一篇完成了python的安装,接下来安装python的依赖包和项目的依赖包 1.  python-devel 命令:yum -y install python-devel 安装Django1.8.2 pillow django-ckeditor5.4.0 pip3 install django==1.8.2 pip3 install pillow pip3 install django-ckeditor==5.4.0 python uwsgi 上面我们已经完成了python+Django环境的

真正搞明白Python中Django和Flask框架的区别

在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题. 一.为什么要使用框架? 为了更好地阐述这个问题,我们把开发一个应用的过程进行类比,往往开发一个应用(web应用.系统应用)跟建造房子的过程一样,需要先打地基,搭好骨架,然后一块砖一块砖叠上去. 而开发一个应用呢?同样也需要一个好的架构设计,数据库建模,然后一个模块一个模块使用代码实现. 如果开发一个软件应用不使用框架,和我们建房子时,每一块砖.每一根钢筋都需要自己生产出来本质上是一样的. 显而易见,如果在

Django 项目之--环境准备01

1.环境准备; (1).python 版本 3.6.0 (2).Django 版本 1.8.2 2.windows 开发环境老是出现文件编码和各种环境问题; (本博文采用远端配置python django项目环境) 3.远端linux服务器信息;    服务器主机IP          系统版本信息         内核版本信息            备注 192.168.1.12   CentOS Linux release 7.4.1708 3.10.0-693.el7.x86_64 默认

python例子-Django项目中的模版特性

一.在网页上显示一个字符变量 在views.py中定义处理函数:(记得在urls.py中绑定URL) #coding: utf-8 #这里如果不指定utf-8的话,汉字输出就会报编码错误. from django.shortcuts import render def home(request): string = u"一个中文字符" return render(request, 'home.html', {'string': string}) 在templates模版文件夹下的模版文

Python:Django 项目中可用的各种装备和辅助

1 Redis 数据库 2 MySQL 数据库 3 前端服务器 live-server 4 定时任务 django-crontab扩展 5 Docker 容器 --用来运行 FastDFS 分布式文件系统 6 FastDFS分布式文件系统 --包含Tracker server 和 Storage server 7 CKEditor 富文本编辑器 --方便网站运营人员需要录入商品并编辑商品的详情信息 8 定时器 9 celery 异步任务服务器 10 Json web token (JWT) 11

网站开发学习Python实现-Django项目部署-同步之前写的博客(6.2.2)

目录 1.说明 2.思路 3.代码 关于作者 @ 1.说明 之前写的博客都在csdn和博客园中 要将博客同步到自己的博客网站中 因为都是使用markdown格式书写的,所以直接爬取上传就完事 2.思路 分析了下博客园,发现可行.先登录进入自己的博客主页,可以看到有下一页的标志,每一页包含若干个博客详情,博客详情中包含edit页(编辑页面)和正常页面(其他用户访问的),要获取的就是eidt页面的博客名字,博客内容.博客分类在edit页面中不好获取,转而去正常页面获取,发现是一个ajax请求,传入用

【第一天】django快速开发——环境部署、表单、数据库操作、模板、文件学习

安装django 1.安装 setuptools yum install python-setuptools 2.完成之后,就可以使用 easy_install 命令安装 django easy_install django 注意:django对于pip和setuptools的版本有严格要求,如果不想那么麻烦建议直接装个python3.6 django管理命令 django-admin.py 这是django的管理命令,无论在哪个目录都可以用这个命令来对project或app做操作 最常用的命令

Python - 自学django,上线一套资产管理系统

一.概述 终于把公司的资产管理网站写完,并通过测试,然后上线.期间包括看视频学习.自己写前后端代码,用时两个多月.现将一些体会记录下来,希望能帮到想学django做web开发的人.大牛可以不用看了,小白的第一个项目,写的很low,不入眼. 二.过程 1. python自学断断续续都有好长的时间,总是零零散散,没有去完完全全开发一个项目出来,跟别人说我会python,都没有啥说服力.后来下定决心,用python去做一个网站出来.正好公司平常维护资产的时候使用的是excel表,十分不科学.领导有意思