zoukankan      html  css  js  c++  java
  • 离线部署Django工程项目迁移到无网络环境

     

    已有环境

    • CentOS 7
    • Python 3.7
    • Django 2.1

    主要用到下面三个命令:

    # 导出依赖
    pip freeze > requirements.txt  
    # 按照依赖下载离线包
     pip download -d packagesDir -r requirements.txt     
    # 安装离线包
    whl包、tgz包
    单个包、目录下的包
    pip install --no-index --find-links="packages_dir" -r requirements.txt

    提前准备

    (1)requirements.txt 依赖文件 pip freeeze > requirements.txt

    (2)离线包下载(有坑)
    下载命令: pip download -d /dir/of/packagesDir -r requirements.txt

    注意,下面2条很是关键!!!!:

    一定要注意平台,windows离线下载的离线包只适用于windows,macOS、Linux同理。
    CentOS 6 和CentOS 7的也不一样。前者下载的离线包也不适用后者,不然离线安装的时候会报错。
    上面两点对应上后,再下载离线包,然后转移到内网机器上。

    离线主机安装Python3

    因为系统自带的是Python2.6,但是要安装Python3适用,而且不能覆盖安装Python2.

    已经测试过,安装Python3 然后适用命令 python3 manage.py runserver, 会出现一系列问题。 因此采用 pyenv工具安装不同的Python解释器,这里安装Python3.。

    此处跳开 pyenv 的安装步骤, 假定已经使用 pyenv安装上 Python3.

    安装离线包

    离线包所在目录: offlinePackages
    安装命令:pip install --no-index --find-links="offlinePackages" -r requirements.txt

    就完成了项目需要的离线包安装,接下来可以正常使用类似django-admin的命令了。
    最后,需要修改django的配置文件等,数据库密码主机ip等。

    其它

    • 尝试过将venv虚拟目录一通打包,然后 source /venv/bin/active 但是不管用,还是上述方法解决了问题。
    • 一定要有一个Python解释器存在,不然虚拟目录激活后也用不成。

    附:离线安装pyenv方法

    有网的主机上先下载
    1、 使用这条命令主要是偷懒,方便好用: curl https://pyenv.sh | bash, 该步骤得到 .pyenv 目录,也就是pyenv工具的目录,后续需要打包该目录,并转移到无网主机上。

    2、还是有网主机上,写入pyenv的环境变量:

        $ echo 'export PYENV_ROOT="$HOME/.pyenv"'>> ~/.bashrc     #然后需要修改环境变量,使用 Bash Shell 的输入
        $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"'>> ~/.bashrc
        $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc

    3、安装想要的Python版本,比如3.6.5

    pyenv install 3.6.5

    4、如果报错,那就是一些系统级别的依赖没有安装好,可以试试下面这些(其实是安装Python的依赖):

    yum -y install zlib zlib-devel
    yum -y install bzip2 bzip2-devel
    yum -y install ncurses ncurses-devel
    yum -y install readline readline-devel
    yum -y install openssl openssl-devel
    yum -y install openssl-static
    yum -y install xz lzma xz-devel
    yum -y install sqlite sqlite-devel
    yum -y install gdbm gdbm-devel
    yum -y install tk tk-devel
    yum -y install gcc

    5、 安装成功后, 打包pyenv 的目录: tar -czf pyenv.tgz .pyenv ,然后上传到无网主机上安装。注意配好pyenv环境变量。

    ( 写到这里,我发现可以使用另外一个思路来离线安装:在pyenv安装好后,直接切换到你想要的Python版本,此时pip也对应切换,这时使用pip直接安装 requiremans.txt里面的包,因为这些包都是安装在.pyenv目录下的的。然后直接打包上传到无网机器安装。 不过这样的缺点是:事先安装的包是全局性的,如果后续还安装新的、别的版本的包,会导致混乱,所以得确保当前pyenv是使用固定的包版本情况下。

    无后患的做法是:
    1、使用pyenv切换Python版本;
    2、创建虚拟目录;
    3、激活虚拟目录;
    4、安装离线包——这个时候,离线包才是安装到了隔离开的环境里面,也是局部性的包。


    ————————————————
    版权声明:本文为CSDN博主「GeezKe」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Kohang/article/details/95631208



  • 相关阅读:
    在 Vim 中,删除 ^@ 符号的几种方法
    西瓜书机器学习算法脉络梳理之聚类
    西瓜书机器学习算法脉络梳理之集成学习
    西瓜书机器学习算法脉络梳理之贝叶斯分类器
    springboot项目,打包时携带所有依赖
    【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
    Tomcat组件梳理—Service组件
    Tomcat组件梳理—Digester的使用
    Tomcat组件梳理--Server
    Tomcat组件梳理--Catalina
  • 原文地址:https://www.cnblogs.com/wangcongxing/p/12362881.html
Copyright © 2011-2022 走看看