Django项目上线全过程!!!

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Centos7上线Django项目

python3环境安装

编译安装python3的步骤

1.很重要,必须执行此操作,安装好编译环境,c语言也是编译后运行,需要gcc编译器golang,对代码先编译,再运行,python是直接运行
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y

2.获取python的源代码,下载且安装,下载源代码包的形式,自由选择
用windows的迅雷极速下载,下载完了之后,发送给linux机器即可
mac的同学,可以用scp或者等传输工具

windows的同学可以用lrzsz(yum install lrzsz -y ),xftp(自行去网站下载,支持断点续传,大文件传输)等文件传输工具

wget  https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz 

3.下载完源代码包之后,进行解压缩
tar -zxvf Python-3.9.0.tgz 

4.解压缩完毕之后,生成了python369的源代码目录,进入源代码目录准备开始编译
cd Python-3.9.0

5.此时准备编译三部曲 ,编译的第一曲:指定python3的安装路径,以及对系统的开发环境监测,使用如下命令
#命令解释
#  configure 是一个脚本文件,用于告诉gcc编译器,python3即将安装到哪里,以及对基础的开发环境检查,检查openssl,检查sqllite,等等
# 编译第一曲,结束后,主要是生成makefile,用于编译的

[root@s25linux Python-3.6.9]# ./configure --prefix=/opt/python390/    

#编译第二曲:开始进行软件编译
直接输入 make指令即可
make && make install
#编译第三曲:编译安装,生成python3的可执行程序,也就是生成/opt/python369/
make install    

#编译的第二曲,和第三曲,可以简写成  make && make install   #代表make成功之后,继续make install 

6.等待出现如下结果,表示python3编译安装结束了
Successfully installed pip-20.2.3 setuptools-49.2.1

7.此时可以去检查python3的可执行程序目录
[root@s25linux bin]# pwd
/opt/python390/bin

8.配置PATH环境变量 ,永久修改PATH,添加Python3的bin目录放入PATH开头位置
vim /etc/profile
写入如下内容
PATH="/opt/python390/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:"

9.手动读取/etc/profile,加载文件中的所有变量
source  /etc/profile  

10.检查python3的目录,以及pip3的绝对路径
[root@s25linux bin]# which pip3
/opt/python390/bin/pip3

[root@s25linux bin]# which python3
/opt/python/bin/python3

python3解释器的虚拟环境

python3解释器绝对路径:/opt/python390/bin/python3,这是解释器本体

由于我们不希望所有的模块都交给这个解释器,会造成模块灾难,因此出现虚拟环境工具:复制解释器形成分身,随时创建、使用,不用了就可以随便删除。

1.下载虚拟环境工具
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv

# pip3安装的模块会放在这里
find /opt/python390/  -name site-packages

2.创建虚拟环境venv1
virtualenv --python=python3.9  venv1             # 在当前目录创建venv1,是相对路径

3.创建好venv1之后,需要激活方可使用,这个激活其实就是在修改了PATH,把路径加到了最前面
source /opt/venv1/bin/activate

4.deactivate  #直接执行此命令,退出虚拟环境,系统会自动删除venv的PATH,也就表示退出了

开发环境与生产环境模块一致性

python3环境、redis环境、mysql环境、vue环境、nginx环境

如何解决环境问题:

  • 虚拟机的模版克隆,打造好一个基础开发环境,克隆多份,生成多个部署环境
  • 用docker容器技术,一个镜像打包技术
# 导出物理环境的配置环境
pip3 freeze > requirements.txt            # 导出pip3 list的环境存在requirements.txt中

# 新开一个ssh运行虚拟环境
source /opt/venv1/bin/activate

# 在虚拟环境中下载requirements中环境
pip3 install -i https://pypi.douban.com/simple  -r  requirements.txt   

django项目运行

1.从电脑传包进入linux
scp order_online.zip root@192.168.78.128:/opt/

2.unzip解包
unzip order_online.zip

3.进入order_online,生成虚拟环境,并打开虚拟环境
virtualenv --python=python3 venv_order
source venv_order/bin/activate

4.解决模块依赖
xxxxx

#手动安装所有模块
pip3 install -i https://pypi.douban.com/simple django==3.2
(venv_crm) [root@s25linux tf_crm]# pip3 install -i https://pypi.douban.com/simple pymysql
(venv_crm) [root@s25linux tf_crm]# pip3 install -i https://pypi.douban.com/simple django-multiselectfield

5.启动mariadb数据库
systemctl start mariadb

6.注意可能需要修改django的settings.py有关数据库连接的账密信息等

7.电脑导出数据库,传给linux
mysqldump -u root -p order_online > ~/Desktop/order.sql

!!!格式不兼容问题:  Unknown collation: 'utf8mb4_0900_ai_ci'
用文本工具打开sql文件
查找:utf8mb4     全部替换为    utf8
查找:utf8mb4_0900_ai_ci  全部替换为:utf8_general_ci 

传到linux
scp ~/Desktop/order.sql root@192.168.78.128:/opt/  

8.导入本地数据库
mysql -u root -p  order_online <  order.sql

uwsgi启动python web

1.安装uwsgi工具
pip3 install -i https://pypi.douban.com/simple  uwsgi

2.编写uwsgi.ini配置文件,以多进程形式启动order_online
touch uwsgi.ini        #手动创建此uwsgi的配置文件,写入如下的内容参数,去启动项目

配置uwsgi.ini

[uwsgi]
# Django-related settings
# the base directory (full path)
#  填写项目的第一层绝对路径
chdir           = /opt/order_online/

# Django's wsgi file
# 填写项目第二层的相对路径,找到第二层目录下的wsgi.py
# 这里填写的不是路径,是以上一个参数为相对,找到第二层项目目录下的wsgi.py文件
module          = order_online.wsgi

# the virtualenv (full path)
# 填写虚拟环境解释器的第一层工作目录 
home            = /opt/order_online/venv_order
# process-related settings
# master
master          = true
# maximum number of worker processes
# 代表定义uwsgi运行的多进程数量,官网给出的优化建议是 2*cpu核数+1 ,单核的cpu填写几?
# 如果是单进程,十万个请求,都丢给一个进程去处理
# 3个工作进程,十万个请求,就分给了3个进程去分摊处理
processes       = 3

# the socket (use the full path to be safe
# 这里的socket参数,是用于和nginx结合部署的unix-socket参数,这里临时先暂停使用
# socket          = 0.0.0.0:8000
#  线上不会用http参数,因为对后端是不安全的,使用socket参数是安全的连接,用nginx反向代理去访问
# 后端程序是运行在防火墙内部,外网是无法直接访问的
# 临时使用http参数,便于我们用浏览器调试访问
http =  0.0.0.0:8000

# ... with appropriate permissions - may be needed
# chmod-socket    = 664
# clear environment on exit
vacuum          = true

uwsgi配置

[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /opt/order_online/
# Django's wsgi file
module          = order_online.wsgi
# the virtualenv (full path)
home            = /opt/order_online/venv_order
# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 3
# socket          = 0.0.0.0:8000
# the socket (use the full path to be safe
http            = 0.0.0.0:8000
# ... with appropriate permissions - may be needed
# clear environment on exit
vacuum          = true
3.此时可以用命令,基于uwsgi协议的一个高性能web后端启动了
uwsgi  --ini  ./uwsgi.ini      # 指定配置文件启动后端

4.此时crm项目,已经用uwsgi支持了3个进程的启动了,但是由于uwsgi对静态文件的解析性能很弱,线上是丢给nginx去处理的
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
存储 分布式数据库 数据库
Django项目中使用Hbase的方法
Django项目中使用Hbase的方法
|
3月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
96 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
1月前
|
数据采集 存储 数据处理
Python爬虫在Django项目中的数据处理与展示实例
Python爬虫在Django项目中的数据处理与展示实例
|
3月前
|
安全 JavaScript 搜索推荐
【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅
【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅
|
4月前
|
算法 Docker Python
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
59 0
|
4月前
|
算法 Java Python
Python【算法中心 01】Web框架Django入门(安装+项目创建+应用创建+服务启动)Python搭建算法中心后台实例分享
Python【算法中心 01】Web框架Django入门(安装+项目创建+应用创建+服务启动)Python搭建算法中心后台实例分享
47 0
|
4月前
|
Python
如何在 Django 中使用 MVT 创建基本项目?
如何在 Django 中使用 MVT 创建基本项目?
15 0
|
4月前
|
存储 前端开发 关系型数据库
Django 项目 MVT 结构
Django 项目 MVT 结构
43 1
|
6月前
|
搜索推荐 算法 前端开发
电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
69 0
电影推荐与管理系统Python+Django网页界面+协同过滤推荐算法【计算机毕设项目】
|
6月前
|
Python 容器
Django 创建你的第一个项目
Django 创建你的第一个项目