更新Python及Django

Windows

1.備份OMFLOW

停用並備份OMFLOW,備份方式請詳見【備份與還原】章節

2.確認當前python套件

  1. 以"系統管理員身份"執行命令提示字元(command line)

  2. 切換到omflow的Python資料夾

cd "C:\Program Files\OMFLOW Server\Python"
  1. 列出當前所有套件(請自行紀錄套件清單)

python.exe -m pip freeze
  1. 命令提示字元(command line)離開當前目錄

cd ..
  1. 將Python資料夾名稱改為"Python_backup"

3.安裝新版Python

  1. 下載 Python3.x ( 32 Bit ) Windows Installer 並執行

  2. 選擇 Customize installation 自定義安裝路徑

  3. 安裝路徑選擇 C:\PROGRA\~1\OMFLOW Server\Python

4.安裝python套件

離線環境請參考後續『補充』章節

  1. 命令提示字元(command line)切換回Python目錄

cd "C:\Program Files\OMFLOW Server\Python"
  1. 開始安裝所需套件(2.3章節所列出的所有套件)

python.exe -m pip install <套件名>

5.修改httpd.conf

打開C:\Program Files\OMFLOW Server\Apache24\conf\httpd.conf,並修改下列兩行資料,將python37與mod_wsgi.cp37改為新版本號

LoadFile "C:\Program Files\OMFLOW Server\Python\python37.dll"
LoadModule wsgi_module "C:\Program Files\OMFLOW Server\Python\lib\site-packages\mod_wsgi\server\mod_wsgi.cp37-win32.pyd"

6.修改客製化內容

python 3.7 => 3.11 Django 2.2 => 4.2

此節內容以上述環境為範例,其他本版所需修改內容請自行上Python或Django官方網站查閱。

  1. 打開C:\Program Files\OMFLOW Server\omflow\omcustom\urls.py

  2. 刪除下列一行

from django.conf.urls import url
  1. 修改下列一行,並將內文所有 url() 改為 re_path()

#舊的
from django.urls import path
#改為
from django.urls import path, re_path
  1. 修改完成後儲存並關閉檔案

7.重啟OMFLOW

重啟omflow服務

Linux

1.備份OMFLOW

請先備份OMFLOW,備份方式請詳見【備份與還原】章節

2.停止OMFLOW

omflow_server stop

3.刪除/opt/omflow資料夾底下的python資料夾

rm -rf /opt/omflow/python/

4.安裝ubuntu套件

套件清單

  • python 3.x

  • python3.x-dev

  • python3.x-venv

  • python3-pip

安裝方式一:線上安裝版(需連線網際網路)

# 更新套件庫
apt-get update -y
# 增加套件庫
add-apt-repository ppa:deadsnakes/ppa -y
# 更新套件庫
apt-get update -y

# 安裝python3.x及相關套件
apt-get install -y python3.x python3.x-dev python3.x-venv python3-pip

安裝方式二:無網路環境、離線安裝方式請見補充

下載Ubuntu套件離線安裝包 離線安裝Ubuntu套件

5.設定python 3.x為環境變數(使得python3.x可用指令python3呼叫)

update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.x 1

6.建立python 3.x的虛擬環境在/opt/omflow資料夾底下

python3 -m venv /opt/omflow/python

7.進入虛擬環境並安裝python套件

python套件清單

  • wheel

  • django==4.2

  • ldap3

  • mod_wsgi

  • openpyxl

  • DB會用到的python套件

  • 其他會用到的套件…

  • 線上安裝版(需連線網際網路)

# 進入虛擬環境
source /opt/omflow/python/bin/activate

# 安裝 wheel
pip install wheel

# 非必要可略
python /usr/lib/python3.11/test/libregrtest/setup.py bdist_wheel

# 安裝必要套件,其他套件請自行評估安裝
pip install django==4.2 ldap3 mod_wsgi openpyxl

無網路環境、離線安裝方式請見補充

下載python套件離線安裝包(.whl) 離線安裝python套件

8.修改apache http.conf裡的wsgi_module路徑改成新的路徑

# 修改django.conf
vim /etc/apache2/sites-enabled/django.conf

# 修改wsgi_module的路徑

補充:

此章節所有指令以python3.11為範例,不同版本請自行修改

下載Ubuntu套件離線安裝包

找一台環境與OMFLOW server相同的Ubuntu,需有網際網路連線。

需要套件:

  • python3.11

  • python3.11-dev

  • python3.11-venv

  • python3-pip

下載指令:

# 切換root身分
sudo su

# 新增套件庫**deadsnakes** PPA
add-apt-repository ppa:deadsnakes/ppa

# 更新套件列表: 
apt-get update

# (如果需要的話)清理預設的下載資料夾
apt-get clean

# 下載但不安裝套件
apt-get install --download-only python3.11 python3.11-dev python3.11-venv python3-pip

下載的安裝包將被保存在 /var/cache/apt/archives/ 目錄下,自行使用FTP軟體取出並放至OMFLOW server環境。

離線安裝Ubuntu套件

需要套件:

  • python3.11

  • python3.11-dev

  • python3.11-venv

  • python3-pip

.deb 文件複製到Ubuntu的某個目錄,此用 **/tmp/Downloads**舉例

Ubuntu指令:

# 切換root身分
sudo su

# 移動到安裝包所在的路徑底下
cd /tmp/Downloads

# 使用 dpkg 安裝下載的套件包
dpkg -i *.deb

從現有環境匯出已安裝的python套件清單

如果您已經有原OMFLOW使用的套件清單可略過本步驟。

參考資料: https://pip.pypa.io/en/stable/cli/pip_freeze/

匯出指令:

# 切換到OMFLOW的虛擬環境
source /opt/omflow/python/bin/activate

# 匯出python套件清單至/tmp底下
pip freeze > /tmp/requirements.txt

# 將django的版本改為4.2以上版本
vim /tmp/requirements.txt

自行使用FTP軟體取出並放至有網路的Ubuntu環境,作為後續下載套件的參考。

下載python套件離線安裝包(.whl)

請準備一台已經安裝好python3.11的環境,方便下載python3.11適用的套件版本,此環境必須能連到網路。

下載指令:

# 新增一個存放離線安裝包的資料夾
mkdir /tmp/python_package
cd /tmp/python_package

# [方法一]使用requirements.txt批次下載
# 假設您已經將前一步的requirements.txt放在/tmp/底下
pip -m install /tmp/requirements.txt

# [方法二]手動輸入套件名稱下載
pip -m install <套件名>

# 下載完成後檢視資料夾內有多少.whl安裝檔
ll

自行使用FTP軟體取出並放回OMFLOW server。

補充: mod_wsgi會得到tar.gz,安裝方式較為特別,請見離線安裝mod_wsgi。

離線安裝python套件

假設python套件的離線安裝包(.whl)放在此路徑**/opt/omflow/tmp**底下

安裝指令:

# 切換到OMFLOW的虛擬環境
source /opt/omflow/python/bin/activate

# 切換到離線安裝包的檔案路徑底下
cd /opt/omflow/tmp

# 安裝所有whl
pip install *.whl

離線安裝mod_wsgi

安裝指令:

# 切換到OMFLOW的虛擬環境
source /opt/omflow/python/bin/activate

# 解壓縮mod_wsgi的tar.gz
tar zxvf <mod_wsgi的檔案路>

cd <mod_wsgi解壓縮後的路>

# 簡易安裝mod_wsgi
python setup.py install

錯誤處理

如果更新完 OMFLOW 後無法啟動服務,請依照【備份與還原】章節將 OMFLOW 進行還原,再重新執行更新步驟。

最后更新于