Linux04 /创建虚拟环境、在linux环境运行Python项目
1. 大体流程
-
windows上的代码,放到linux上,运行要做哪些事
安装python3 安装crm的模块 上传crm代码 mysql(mariadb)
-
本地开发环境
安装python3 安装crm的模块 上传crm代码 mysql(mariadb)
-
预生产服务器环境
安装python3 安装crm的模块 上传crm代码 mysql(mariadb)
-
正式线上服务器环境
安装python3 安装crm的模块 上传crm代码 mysql(mariadb)
-
总结:
虚拟机的模板克隆解决环境问题 docker镜像去解决环境部署问题 在windows本地打包一个镜像
2. linux环境安装python3
-
解决系统的基础开发工具,防止python3编译过程出错
1、安装依赖:
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、确保机器可以上网,在线下载软件包
ip addr show # 测试是否可以上网
3、配置好阿里云的yum仓库,yum源,加速下载,提供大量的软件包
配置yum源的过程: centos的默认yum仓库路径是 /etc/yum.repos.d ,在这目录下,第一层文件夹中的repo文件会识别为仓库文件 1.获取阿里云的yum源 打开网址https://opsx.alibaba.com/mirror 2.找到第一个仓库 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 3.下载第二个仓库 wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 4.生成yum缓存,加速以后下载 yum makecache
-
获取python3的源代码,去官网下载即可
wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz # wget 在线下载一个资源
-
解压缩源代码包,进入源码包
xz -d Python-3.6.7.tar.xz # 去掉.xz压缩后缀 tar -xvf Python-3.6.7.tar # 解压缩 cd Python-3.6.7 # 进入源码包
-
编译三部曲,几乎所有的linux软件,编译安装都是这个步骤,nginx,redis都是这样
第一曲:指定安装路径
./configure --prefix=/opt/python367/ # 执行configure脚本文件 ,指定软件的安装路径
第二曲:开始编译
make # 指定make指令 ,针对当前文件夹下的makefile开始读取
第三曲:开始安装
make install # 编译安装,生成最终的可以使用的python3.6.7的解释器
-
配置PATH环境变量,让命令可以快捷执行
1、取出当前PATH的值
echo $PATH # 代码示例: [root@s24_linux bin]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
2、修改PATH的值,永久修改,写入到/etc/profile ,每次用户登录都加载这个文件,因此变量永久生效
vim /etc/profile # 在最底行,写入如下信息 PATH="/opt/python367/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin" # 把python3的路径,放到最前面,因为虚拟环境的创建的时候,可能会有坑,PATH的加载顺序是自上而下的
3、读取/etc/profile -- 让其永久生效
source /etc/profile # 用source命令,去读这个文件 内容,让变量生效 # 或者 退出会话,重新登录linux,即可加载新的PATH
3. 创建虚拟环境
1. 虚拟环境
- python虚拟环境就是管理python解释器,python的虚拟环境,其实就是在机器上,方便的创建出多个解释器,每个解释器运行一个项目,互相之间不受影响
2. virtualenv
-
virtualenv工具,可以方便的创建,使用,删除也很方便
-
low版虚拟环境管理工具:virtualenv
1、virtualenv安装
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenv
2、创建虚拟环境 venv ,用于运行django1
virtualenv --no-site-packages --python=python3 venv1 参数说明: --no-site-packages # 这个参数 ,创建虚拟环境是干净隔离的 --python=python3 # 这个--python参数,是指定解释器的版本 venv1 是虚拟环境的名字,文件夹的名
3、激活虚拟环境,需要执行如下命令
source /opt/venv1/bin/activate # 这是激活虚拟环境的命令 deactivate # 退出虚拟环境
4、在venv1这个虚拟环境下,运行一个django1版本
# 得先安装django模块 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.9
-
**高级版虚拟环境工具:virtualenvwrapper ,以后用这个就行 *****
1、virtualenvwrapper 安装
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvwrapper
2、配置系统的全局变量,加载virtualenvwrapper这个工具
vim /etc/profile 写入如下内容后先刷新一个配置文件source /etc/profile
WORKON_HOME=~/Envs # 设置virtualenv的统一管理目录 VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 添加virtualenvwrapper的参数,生成干净隔绝的环境 VIRTUALENVWRAPPER_PYTHON=/opt/python367/bin/python3 # 指定python解释器 source /opt/python367/bin/virtualenvwrapper.sh # 执行virtualenvwrapper安装脚本
3、virtualenvwrapper 常用操作
mkvirtualenv venv1 # 创建虚拟环境venv1 mkvirtualenv venv2 # 创建虚拟环境venv2 mkvirtualenv venv3 # 创建虚拟环境venv3 workon # 激活虚拟环境,支持tab键补全 cdvirtualenv # 进入虚拟环境家目录 lsvirtualenv # 列出当前所有的虚拟环境 lssitepackages # 列出当前解释器,所有的模块文件夹 cdsitepackages # 进入当前解释器的模块文件夹
4. 打包源环境模块
-
打包源环境模块简述:
保证开发环境和生产环境的模块一致性的方法 保证windows的模块和linux的模块的一致性
-
导出前环境所有的模块
pip3 freeze > requirements.txt # 这是导出解释器所有模块信息的命令
-
安装以上文件中所有的模块
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
5. 解决数据库问题:安装/启动mariadb
-
安装mariadb /三种方式
1、rpm:rpm手动安装,很恶心,解决依赖关系 2、源代码编译安装:指定安装路径,可以自由选择最新的软件版本,可以扩展第三方高级的功能 3、yum安装方便,自动解决依赖(安装路径默认,软件仓库版本可能过低) yum install mariadb-server(服务端的软件名) mariadb(客户端软件名) -y
-
启动mariadb数据库,通过yum安装的软件,都可以通过systemctl 去管理
systemctl start/stop/restart mariadb
-
mysql 的root远程访问权限
grant all privileges on *.* to root@'%' identified by ''; flush privileges;
如果远程还是访问不到数据库的话,修改配置文件 vim /etc/my.cnf
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 bind-address = 0.0.0.0 # 确保不是本地回环地址 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid bind-address = 0.0.0.0 !includedir /etc/my.cnf.d
6. 上传项目代码到linux
-
将项目传到linux环境,这里以crm为例
1.可以用xftp用xftp工具更省心 2.压缩文件后,用lrzsz,lrzsz是windows提供的工具,和xshell结合,只能是在windows使用 3.如果是mac,就用scp命令
-
解决crm运行的模块依赖/老土方法,用模块打包方式导入
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.9 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple django-multiselectfield
-
导出windows的crm数据,传递给linux进行导入
# 这给命令是发给操作系统的,把windows 中的mysql数据库导出来是一个crm.sql文件 mysqldump -u root -p crm > crm.sql # 指定数据库导出的命令
-
传输crm.sql文件到linux后,进行数据导入
方式1: 命令形式导入
# 1、得先创建好数据库 ,进入mysql后再敲打,它是sql语句 create database crm; # 2、指定数据库导入数据 mysql -uroot -p crm < crm.sql # 在linux中敲打,他是linux的命令
方式2:交互式终端的导入数据
# 1、得先创建好数据库 create database crm; # 2、导入数据 use crm ; source /opt/crm.sql ;
-
修改django的配置文件settings.py
1.确保mariadb数据库的密码和settings配置文件密码一致 2.修改ALLOW_HOSTS为:ALLOW_HOSTS=['*']
-
启动crm项目
python3 manage.py runserver 0.0.0.0:8000