离线部署Django工程项目迁移到无网络环境

 

已有环境

  • CentOS 7
  • Python 3.7
  • Django 2.1

主要用到下面三个命令:python

# 导出依赖
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.txtsql

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

注意,下面2条非常关键!!!!:django

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

windows

离线主机安装Python3

由于系统自带的是Python2.6,可是要安装Python3适用,并且不能覆盖安装Python2.bash

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

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

安装离线包

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

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

其它

  • 尝试过将venv虚拟目录一通打包,而后 source /venv/bin/active 可是无论用,仍是上述方法解决了问题。
  • 必定要有一个Python解释器存在,否则虚拟目录激活后也用不成。

附:离线安装pyenv方法

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

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

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

三、安装想要的Python版本,好比3.6.5

pyenv install 3.6.5

四、若是报错,那就是一些系统级别的依赖没有安装好,能够试试下面这些(实际上是安装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

 

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

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

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

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

相关文章
相关标签/搜索