每一名或一組技術人員決定要在PostERP平台開發應用系統時,必須先透過兆筆官網租用一部Debian Linux主機。有了該主機之後,兆筆官網即為該主機準備好開發環境:
該主機有dba這個Linux的帳號。
該主機的PostgreSQL的pg_hba.conf含有這個設定參數:
local all postgres peer map=super |
該主機的PostgreSQL的pg_ident.conf含有這個設定參數:
super dba postgres |
假設兆筆官網顯示該主機的IP地址是192.168.1.200。
首先,如果您當地機器沒有~/.ssh/這個目錄的話,則可以執行這個ssh-keygen -t rsa指令以生成一些檔案。然後複製你當地機器的~/.ssh/id_rsa.pub這個檔案到兆筆官網。複製完成後,兆筆官網立即把該檔案的內容追加到您的開發主機以及您全部雲端客戶的主機的/home/dba/.ssh/authorized_keys這個檔案的內容後面。
自此,您當地機器就可以無條件以dba這個Linux帳號登入該主機以及您全部雲端客戶的主機。
要在這部主機從事應用系統的開發工作時,您可以採用下列任一方法以取得該主機的PostgreSQL資料庫最高權限:
請參考Secure TCP/IP Connections with SSH Tunnels。
用Linux的dba帳號登入這部主機,並建立安全通道(port# 63333):
ssh -L 63333:localhost:5432 dba@192.168.1.200 |
在你的當地機器再開一個窗,透過該安全通道,以PostgreSQL的超級用戶postgres接入到PostgreSQL cluster:
psql -h localhost -p 63333 postgres |
用Linux的dba帳號登入這部主機:
ssh -l dba 192.168.1.200 |
以PostgreSQL的超級用戶postgres接入到PostgreSQL cluster:
psql -U postgres |
當一位應用系統開發者登記要開發一套新應用系統時,兆筆官網就指定一個特定編號給該新應用系統,例如:1或5,稱之為應用系統編號。本文件自此以5為例。
除了PostgreSQL這個伺服器軟體以外,下列伺服器軟體也安裝 在每一部主機裏,並且運行:
開發主機
PostERP HTTP伺服器軟體
這個伺服器軟體提供開發人員從事開發以及測試服務,以及訪客的免費線上體驗服務。開發人員以及訪客使用新款的瀏覽器來操作雲端版的PostERP。
PostERP報表伺服器軟體
這個伺服器軟體回應HTTP伺服器軟體的請求,產生報表。
桌面版的PostERP伺服器軟體
這個伺服器軟體接收開發人員的瘦客戶軟體的連接請求。開發人員使用瘦客戶軟體來開發報表樣板,以供其客戶使用瀏覽器生成報表。
客戶的主機
PostERP HTTP伺服器軟體
客戶使用瀏覽器來操作雲端版的PostERP。這個伺服器軟體回應客戶的瀏覽器請求。
PostERP report server
這個伺服器軟體回應HTTP伺服器軟體的請求,產生報表。
PostERP的HTTP伺服器軟體預讀一部分PostgreSQL的table以提高效率:t2、t5、t37、t20、t30、t39、t13、t16、t63等table。 若要重讀t2這個table,必須重新啟動PostERP HTTP伺服器軟體。 對這些table操作INSERT、UPDATE、以及DELETE等SQL指令,會自動觸發PostERP HTTP伺服器軟體去重讀上述table。但是COPY指令無此效果。所以,開發者於執行COPY後,應執行PostgreSQL的pg_notify()指令,通知PostERP HTTP伺服器軟體去重讀上述table。開發者可以在psql輸入\dt t37等指令,以顯示table t37的附屬trigger function或rule。然後,參考開發文件檔案trigger.sql所述內容,以得知如何執行pg_notify()指令。 |
繼續沿用應用系統編號『5』。
雲端版資料庫分成下列種類:
您正在開發中的資料 – dev5。
開發者的開發工作都是在您的開發主機裏的這個資料庫進行。於您註冊這個應用系統編號時,這個資料庫就自動被生成,並且從PostERP的基礎metadata資料庫回存。
您的穩定資料庫或樣板資料庫 – app5。
這個資料庫的作用:
假設一位新客戶請求承租您的雲端版PostERP的應用系統編號『5』時,這時,兆筆官網即依序執行下列動作:
鎖住app5資料庫。
鎖住期間,不允許開發者對應用系統編號『5』從事Section 17.3動作。
複製app5資料庫給該客戶。
解鎖app5資料庫。
解鎖之後,重新開放開發者對應用系統編號『5』從事Section 17.3動作。
於您註冊這個應用系統編號時,這個資料庫就自動被生成,並且從PostERP的基礎metadata資料庫回存。
您的體驗資料庫 - try_5
如果您的開發主機裏面有這個資料庫的話,那麼,您的開發主機裏面的PostERP伺服器軟體就會提供全球不特定人士線上體驗您的資訊系統。在體驗過程中,PostERP伺服器軟體就在這個資料庫上面操作。
訪客可能輸入大量資料到該資料庫裏,也可能上傳大檔案到/var/www/posterp_uploads/目錄裏,附掛在一些記錄之下。所以,您可能必須定期刪除體驗資料庫 try_5並清除/var/www/posterp_uploads/try_5目錄裏的檔案。 |
這個crontab例子可以定期刪除這些上傳的檔案:
* * * * * find /var/www/posterp_uploads/try_5 -type f -mtime +1 -delete >/dev/null 2>&1 * * * * * find /var/www/posterp_uploads/try_5 -type f -size +5M -delete >/dev/null 2>&1 |
您的客戶使用的資料庫。
因為維護雲端版客戶資料庫的工作由您全權負責,所以前述授權Section 17.2.1也準用在您全部雲端客戶的資料庫。
請參見Section 2.1.3。
新設資料庫dev5和app5自「骨架資料庫」複製完成後,裏面的預設登入帳號的初始密碼為空白NULL。如果t43.f4為NULL,則雲端版PostERP拒絕客戶登入。為執行開發和測試工作,請手工設定這些帳號的登入密碼,例如執行這道SQL指令:UPDATE t43 SET f4=crypt('我的密碼',gen_salt('bf',7)) WHERE f1 IN ('admin','en','tw','cn');。請注意!務必呼叫crypt這個function以及bf這個algorithm。
如果有任何資料庫被刪除然後重建,請執行下列SQL以提供crypt這個function:
|
設計報表Section 18.9的工作目前只能在桌面版的客戶程式上面進行。
在您的開發主機裏運行的桌面版PostERP伺服器軟體:
請先在作者:兆筆官網設定伺服器程式要連接的PostgreSQL資料庫,然後在同一個頁面重新啟動伺服器程式。這時,伺服器程式接受客戶連接TCP port 7500。
桌面版PostERP客戶軟體:
客戶軟體以及伺服器軟體可以在下載,在Windows或WINE的環境裏運行。
每一部運行PostERP的主機裏面都有幾個報表伺服器軟體在運行。這些報表伺服器軟體以PostgreSQL的reporting這個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; |