离线安装Django
在线上服务器部署Django的时候,不可能将所有服务器都连接到internet,然后通过pip进行联网安装。
离线安装Django以及相关软件模块
首先在一个可以连接internet的开发测试环境,在一个Python虚拟环境安装Django以及所有相关包,
在已经具备好所有运行模块的Django环境中执行以下命令列出所有安装的包和版本:
使用以下命令为模块包构建一个
wheelhouse
目录
注意:如果没有
-w wheelhouse
参数,则默认在当前目录下构建wheels - 参考 pip wheel
压缩
wheelhouse
目录
将上述压缩包
wheelhouse.zip
复制到目标服务器上,然后先切换到virtuanlenv
环境 - 这里假设已经参考在古老的CentOS 5上安装Python 2.7以及virtualenv环境构建好了Python运行虚拟环境venv2
,则按照下面步骤执行
pip install wheelhouse
的异常排查
wheelhouse
的异常排查pip
版本过低导致安装失败
pip
版本过低导致安装失败这里遇到一个报错:
参考 ValueError “Expected version spec” when installing local wheel via pip,原因是当前的pip
版本太低导致的。
通过本地安装升级pip来解决上述问题,下载以下4个文件复制到offline主机上(setuptools
有可能不需要),例如目录/tmp/update_pip
:
get-pip.py
( https://bootstrap.pypa.io/get-pip.py )pip-9.0.1-py2.py3-none-any.whl
( https://pypi.python.org/pypi/pip )setuptools-37.0.0-py2.py3-none-any.whl
( https://pypi.python.org/pypi/setuptools )wheel-0.30.0-py2.py3-none-any.whl
( https://pypi.python.org/pypi/wheel )
执行以下命令升级pip
可以看到升级了Python虚拟环境中的pip
和wheel
然后再次执行pip install wheelhouse/*
即可以成功。
XXXX.whl is not a supported wheel on this platform
XXXX.whl is not a supported wheel on this platform
在执行pip install wheelhouse/*
的时候,有些包安装会提示错误,例如:
开始我以为是操作系统不同,实际对比了操作系统版本完全一致。差别只是Python版本,目标服务器的Python版本较低是 2.7.8,而源服务器的Python版本是2.7.14。但是,相同的大版本2.7,应该是通用才对啊。
参考 pip安装报错:is not a supported wheel on this platform 和 Cannot install numpy from wheel format,可以通过以下命令来验证兼容的关键字
由于其中没有包含cp27mu
所以导致拒绝安装。(cp
表示CPython
)
实际上可以通过重新命名.whl
包名字来绕开这个问题:
然后就可以正常安装和使用了。
Python mysqlclient
安装
mysqlclient
安装上述pip install wheelhouse/*
还有一个报错提示
参考 https://pypi.python.org/pypi/mysqlclient/1.3.12 显示 mysqlclient-1.3.12 要求的MySQL版本如下:
MySQL-5.5 through 5.7 and Python 2.7, 3.4+ are currently supported. PyPy is supported too.
检查服务器,发现只安装了mysql-libs-5.5.17-1.el5.remi
,所以考虑升级MySQL
然后下载源代码编译
通过源代码安装了
mysqlclient
之后,可以从wheelhouse
目录下移除mysqlclient-1.3.12-cp27-cp27mu-linux_x86_64.whl
启动MySQL服务
如果数据库密码不正确,则执行MySQL Root用户密码重置
恢复Django应用
执行检查和同步迁移数据库
运行django服务
参考
Last updated