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去处理的