每一名或一组技术人员决定要在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 16.2。
新设数据库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; |