离线部署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
标签:离线,pyenv,yum,工程项目,install,devel,Django,安装 来源: https://www.cnblogs.com/wangcongxing/p/12362881.html