離線部署Django工程項目遷移到無網絡環境

已有環境

  • CentOS 6
  • Python 3
  • Django 1.11

主要用到下面三個命令:

# 導出依賴
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條很是關鍵!!!!

  1. 一定要注意平臺,windows離線下載的離線包只適用於windows,macOS、Linux同理。
  2. 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

如果報錯,那就是一些系統級別的依賴沒有安裝好,可以試試下面這些(其實是安裝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

4、 安裝成功後, 打包pyenv 的目錄: tar -czf pyenv.tgz .pyenv ,然後上傳到無網主機上安裝。注意配好pyenv環境變量。

( 寫到這裏,我發現可以使用另外一個思路來離線安裝:在pyenv安裝好後,直接切換到你想要的Python版本,此時pip也對應切換,這時使用pip直接安裝 requiremans.txt裏面的包,因爲這些包都是安裝在.pyenv目錄下的的。然後直接打包上傳到無網機器安裝。 不過這樣的缺點是:事先安裝的包是全局性的,如果後續還安裝新的、別的版本的包,會導致混亂,所以得確保當前pyenv是使用固定的包版本情況下。

無後患的做法是:
1、使用pyenv切換Python版本;
2、創建虛擬目錄;
3、激活虛擬目錄;
4、安裝離線包——這個時候,離線包纔是安裝到了隔離開的環境裏面,也是局部性的包。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章