Linux04 /创建虚拟环境、在linux环境运行Python项目

1. 大体流程

  1. windows上的代码,放到linux上,运行要做哪些事

    安装python3
    安装crm的模块
    上传crm代码
    mysql(mariadb)
  2. 本地开发环境

    安装python3
    安装crm的模块
    上传crm代码
    mysql(mariadb)
  3. 预生产服务器环境

    安装python3
    安装crm的模块
    上传crm代码
    mysql(mariadb)
  4. 正式线上服务器环境

    安装python3
    安装crm的模块
    上传crm代码
    mysql(mariadb)
  5. 总结:

    虚拟机的模板克隆解决环境问题
    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

  1. 将项目传到linux环境,这里以crm为例

    1.可以用xftp用xftp工具更省心
    2.压缩文件后,用lrzsz,lrzsz是windows提供的工具,和xshell结合,只能是在windows使用
    3.如果是mac,就用scp命令
  2. 解决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
  3. 导出windows的crm数据,传递给linux进行导入

    # 这给命令是发给操作系统的,把windows 中的mysql数据库导出来是一个crm.sql文件
    
    mysqldump -u root -p   crm  >  crm.sql  # 指定数据库导出的命令
  4. 传输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 ;
  5. 修改django的配置文件settings.py

    1.确保mariadb数据库的密码和settings配置文件密码一致
    2.修改ALLOW_HOSTS为:ALLOW_HOSTS=['*']
  6. 启动crm项目

    python3 manage.py runserver 0.0.0.0:8000

Linux04 /创建虚拟环境、在linux环境运行Python项目的更多相关文章

  1. linux环境运行java项目并有外部引用jar

    eclipse目录结构: linux目录结构: lib目录结构: 其中除了IMT_ENCODING_DSP.jar其余的都是外部引用的jar IMT_ENCODING_DSP.jar是java项目打包 ...

  2. Linux环境下Python的安装过程

    Linux环境下Python的安装过程 前言 一般情况下,Linux都会预装 Python了,但是这个预装的Python版本一般都非常低,很多 Python的新特性都没有,必须重新安装新一点的版本,从 ...

  3. linux环境下 python环境import找不到自定义的模块

    linux环境下 python环境import找不到自定义的模块 问题现象: Linux环境中自定义的模块swport,import swport 出错.swport模块在/root/sw/目录下. ...

  4. 发布项目到 Linux 上运行 Core 项目

    发布项目到 Linux 上运行 Core 项目 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win ...

  5. linux环境安装python

    linux环境下安装python3,一步一步来吧! 安装python3 安装readline-devel依赖 ,用于解决python3安装完成后,退格和方向键乱码问题 yum install read ...

  6. 服务器(Linux)上运行python总结

    跑实验换了几次服务器了,每次遇到相似问题都要重新百度,而且每次百度搜索出的顺序都不一样,又得重新找半天,这次把遇到的问题都总结一下. 1.准备 PuTTY和FileZilla FileZilla使用F ...

  7. 利用virtualenvwrapper创建虚拟环境出现错误“/usr/bin/python: No module named virtualenvwrapper”

    Linux:CentOS7 python: 系统默认python版本2.7,利用python启动 自己安装python版本3.8,利用python3启动 问题描述: 在上述环境中利用virtualen ...

  8. jmeter(二十五)linux环境运行jmeter并生成报告

    jmeter是一个java开发的利用多线程原理来模拟并发进行性能测试的工具,一般来说,GUI模式只用于创建脚本以及用来debug,执行测试时建议使用非GUI模式运行. 这篇博客,介绍下在linux环境 ...

  9. Python_01 在DOS环境运行python程序

    >怎么在DOS环境运行一个python程序 >>在文本编辑器中编辑程序,最后保存成   文件名.py  的格式 >>在DOS界面下找到源程序所在的路径,然后用  pyth ...

随机推荐

  1. 凭这份pdf让我轻松拿下了蚂蚁金服、字节跳动、小米等大厂的offer

    关于程序员,除了做项目来提高自身的技术之外,还有一种提升自己的专业技能就是:多!看!书! 小编整理出一篇Java进阶架构师之路的核心知识,同时也是面试时面试官必问的知识点,篇章也是包括了很多知识点,其 ...

  2. [计网笔记] 传输层---UDP

  3. MySQL的LIKE模糊查询优化

    原文链接:https://www.cnblogs.com/whyat/p/10512797.html %xxx%这种方式对于数据量少的时候,我们倒可以随意用,但是数据量大的时候,我们就体验到了查询性能 ...

  4. 通信中的错误代码 (repost from https://blog.csdn.net/zzhuan_1/article/details/80066716)

    • 100 - 继续.• 101 - 切换协议.• 110 重新启动标记答复.• 120 服务已就绪,在 nnn 分钟后开始.• 125 数据连接已打开,正在开始传输.• 150 文件状态正常,准备打 ...

  5. cc23b_demo-函数对象c++ 调用操作符的重载与函数对象-//用模板定义一元谓词、代码示范

    //用模板定义一元谓词. #include <iostream> #include <vector> #include <algorithm> using name ...

  6. Linux工具之开发调试命令

    目录 gcc gdb vim pmap pstack strace readelf objdump ldd gcc 详见 gcc -E 只预处理 gcc -S 生成汇编代码 gcc -c 生成可重定向 ...

  7. 【SEED Labs】DNS Rebinding Attack Lab

    Lab Overview 实验环境下载:https://seedsecuritylabs.org/Labs_16.04/Networking/DNS_Rebinding/ 在这个实验中模拟的物联网设备 ...

  8. Nginx 如何自定义变量?

    之前的两篇文章 Nginx 变量介绍以及利用 Nginx 变量做防盗链 讲的是 Nginx 有哪些变量以及一个常见的应用.那么如此灵活的 Nginx 怎么能不支持自定义变量呢,今天的文章就来说一下自定 ...

  9. 爬取B站弹幕并且制作词云

    目录 爬取弹幕 1. 从手机端口进入网页爬取找到接口 2.代码 制作词云 1.文件读取 2.代码 爬取弹幕 1. 从手机端口进入网页爬取找到接口 2.代码 import requests from l ...

  10. Java 多线程基础(十二)生产者与消费者

    Java 多线程基础(十二)生产者与消费者 一.生产者与消费者模型 生产者与消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”.“消费者”.“仓库”和“产品”.他们之间的关系如下: ①.生 ...