離線部署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

相關文章
相關標籤/搜索