16.2. 雲端開發環境

16.2.1. 開發應用系統的主機

每一名或一組技術人員決定要在PostERP平台開發應用系統時,必須先透過兆筆官網租用一部Debian Linux主機。有了該主機之後,兆筆官網即為該主機準備好開發環境:

假設兆筆官網顯示該主機的IP地址是192.168.1.200

首先,如果您當地機器沒有~/.ssh/這個目錄的話,則可以執行這個ssh-keygen -t rsa指令以生成一些檔案。然後複製你當地機器的~/.ssh/id_rsa.pub這個檔案到兆筆官網。複製完成後,兆筆官網立即把該檔案的內容追加到您的開發主機以及您全部雲端客戶的主機/home/dba/.ssh/authorized_keys這個檔案的內容後面。

自此,您當地機器就可以無條件以dba這個Linux帳號登入該主機以及您全部雲端客戶的主機

要在這部主機從事應用系統的開發工作時,您可以採用下列任一方法以取得該主機的PostgreSQL資料庫最高權限:

16.2.2. 應用系統編號

當一位應用系統開發者登記要開發一套新應用系統時,兆筆官網就指定一個特定編號給該新應用系統,例如:15,稱之為應用系統編號。本文件自此以5為例。

16.2.3. 伺服器軟體

除了PostgreSQL這個伺服器軟體以外,下列伺服器軟體也安裝 在每一部主機裏,並且運行:

Note

PostERP的HTTP伺服器軟體預讀一部分PostgreSQLtable以提高效率:t2t5t37t20t30t39t13t16t63等table。

若要重讀t2這個table,必須重新啟動PostERP HTTP伺服器軟體。

對這些table操作INSERTUPDATE、以及DELETE等SQL指令,會自動觸發PostERP HTTP伺服器軟體去重讀上述table。但是COPY指令無此效果。所以,開發者於執行COPY後,應執行PostgreSQLpg_notify()指令,通知PostERP HTTP伺服器軟體去重讀上述table。開發者可以在psql輸入\dt t37等指令,以顯示table t37的附屬trigger function或rule。然後,參考開發文件檔案trigger.sql所述內容,以得知如何執行pg_notify()指令。

16.2.4. 雲端資料庫分類

繼續沿用應用系統編號5』。

雲端版資料庫分成下列種類:

16.2.5. 預設登入帳號

請參見Section 15.2

新設資料庫dev5app5自「骨架資料庫」複製完成後,裏面的預設登入帳號的初始密碼為空白NULL。如果t43.f4NULL,則雲端版PostERP拒絕客戶登入。為執行開發和測試工作,請手工設定這些帳號的登入密碼,例如執行這道SQL指令:UPDATE t43 SET f4=crypt('我的密碼',gen_salt('bf',7)) WHERE f1 IN ('admin','en','tw','cn');。請注意!務必呼叫crypt這個function以及bf這個algorithm。

Important

如果有任何資料庫被刪除然後重建,請執行下列SQL以提供crypt這個function:

CREATE EXTENSION pgcrypto;
				

16.2.6. 設計報表

設計報表Section 17.9的工作目前只能在桌面版的客戶程式上面進行。

每一部運行PostERP的主機裏面都有幾個報表伺服器軟體在運行。這些報表伺服器軟體以PostgreSQLreporting這個role接入目標資料庫,並執行SQL指令以生成報表。如果有任何資料庫或相關table被刪除然後重建,請執行下列相關的SQL以賦予reporting這個role所需的權限:

GRANT USAGE ON SCHEMA public TO public;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO public;
GRANT INSERT,UPDATE ON TABLE t41 TO reporting;
GRANT INSERT,UPDATE ON TABLE t48 TO reporting;
GRANT INSERT,UPDATE ON TABLE t112 TO reporting;
GRANT INSERT,UPDATE ON TABLE t118 TO reporting;
GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO public;
			

例如t_220表格(table),如果被drop掉之後再重新create的話,reporting這個role就失去對t_220表格的全部存取權。所以,如果做了drop掉表格之後再重新create的話,務必記得再下這道指令以恢復reporting這個role對該表格的SELECT權限:

GRANT SELECT ON TABLE t_220 TO public;
			

同理,如果上述報表伺服器必須INSERT和UPDATE的table被刪除後再重新CREATE的話,請執行下面相關的指令:

GRANT INSERT,UPDATE ON TABLE t41 TO reporting;