環(huán)境下干部人事檔案管理系統(tǒng)安裝部署實(shí)踐)
信創(chuàng)版干部人事檔案管理系統(tǒng)的安裝與使用這些年單位里搞信創(chuàng)替代最讓我頭疼的其實(shí)不是操作系統(tǒng)本身而是那堆跑在Windows上的業(yè)務(wù)系統(tǒng)。尤其是干部人事檔案管理系統(tǒng)數(shù)據(jù)敏感、流程嚴(yán)格、操作權(quán)限又多稍微有點(diǎn)閃失就麻煩。最近我們總算把整套系統(tǒng)遷移到了信創(chuàng)環(huán)境用的麒麟V10服務(wù)器版加國(guó)產(chǎn)數(shù)據(jù)庫(kù)過程中踩了不少坑也積累了一些經(jīng)驗(yàn)。我把從環(huán)境準(zhǔn)備到系統(tǒng)上線、再到日常使用中常見的幾個(gè)問題完整梳理一遍希望對(duì)正在做同類遷移的運(yùn)維或者檔案管理員有點(diǎn)用。這套系統(tǒng)說白了就是把傳統(tǒng)的紙質(zhì)人事檔案電子化——從人員基本信息、履歷材料、考核材料到學(xué)歷學(xué)位、培訓(xùn)經(jīng)歷、任免調(diào)動(dòng)、薪酬待遇等全部歸檔到數(shù)據(jù)庫(kù)里再按權(quán)限開放給組織人事部門查詢、統(tǒng)計(jì)、借閱審批。信創(chuàng)版要解決的不僅是功能對(duì)等更重要的是跑在國(guó)產(chǎn)CPU、國(guó)產(chǎn)操作系統(tǒng)、國(guó)產(chǎn)數(shù)據(jù)庫(kù)之上從硬件到軟件整個(gè)鏈路都自主可控。1. 項(xiàng)目背景與部署思路1.1 為什么檔案管理系統(tǒng)要優(yōu)先遷移信創(chuàng)很多單位做信創(chuàng)遷移時(shí)通常會(huì)先拿OA、郵件這種非核心系統(tǒng)練手但干部人事檔案系統(tǒng)往往排在后面原因很簡(jiǎn)單——高風(fēng)險(xiǎn)、高要求、高敏感。數(shù)據(jù)一旦出問題不是重啟能解決的。但從另一個(gè)角度看這類系統(tǒng)恰恰是最該先遷的。檔案管理系統(tǒng)的數(shù)據(jù)格式相對(duì)標(biāo)準(zhǔn)化字段固定、流程固定不像OA那樣天天有新需求。而且它是典型的內(nèi)網(wǎng)系統(tǒng)用戶量不大并發(fā)壓力低非常適合作為信創(chuàng)落地的樣板工程。我們用下來最大的感受是只要基礎(chǔ)環(huán)境穩(wěn)定應(yīng)用層面其實(shí)比想象中遷移起來省事。從技術(shù)選型上說信創(chuàng)環(huán)境下的國(guó)產(chǎn)化棧目前已經(jīng)成熟到足夠支撐這類管理系統(tǒng)了。芯片層面有鯤鵬、飛騰、龍芯、海光等選擇操作系統(tǒng)主流是麒麟和統(tǒng)信UOS數(shù)據(jù)庫(kù)可以用達(dá)夢(mèng)、人大金倉(cāng)、GaussDB等中間件有東方通TongWeb、金蝶天燕等。我們這次選的是麒麟V10 鯤鵬920 達(dá)夢(mèng)8 東方通TongWeb的組合整體跑下來性能和穩(wěn)定性都不錯(cuò)。1.2 整體架構(gòu)與部署流程設(shè)計(jì)整個(gè)部署架構(gòu)其實(shí)不復(fù)雜一臺(tái)服務(wù)器就夠了。生產(chǎn)環(huán)境建議用兩臺(tái)做雙機(jī)熱備數(shù)據(jù)庫(kù)放到單獨(dú)的主機(jī)上。我們測(cè)試階段是一臺(tái)服務(wù)器同時(shí)跑Web中間件和數(shù)據(jù)庫(kù)資源也夠用因?yàn)闄n案系統(tǒng)的訪問量確實(shí)不高關(guān)鍵是數(shù)據(jù)處理時(shí)別卡頓。部署流程大體分五步走系統(tǒng)環(huán)境準(zhǔn)備操作系統(tǒng)安裝、網(wǎng)絡(luò)配置、時(shí)鐘同步、安全加固基礎(chǔ)軟件安裝JDK、數(shù)據(jù)庫(kù)、中間件應(yīng)用部署上傳應(yīng)用包、配置數(shù)據(jù)源、初始化數(shù)據(jù)庫(kù)腳本數(shù)據(jù)遷移把舊系統(tǒng)的歷史數(shù)據(jù)導(dǎo)入新系統(tǒng)做數(shù)據(jù)清洗和目錄建庫(kù)聯(lián)調(diào)測(cè)試功能驗(yàn)證、權(quán)限驗(yàn)證、歸檔流程測(cè)試剛開始我們想跳過流程直接裝結(jié)果后面在權(quán)限配置上反復(fù)折騰。建議還是按部就班來每一步做完都做個(gè)簡(jiǎn)單驗(yàn)證后面出了問題也好定位。2. 環(huán)境準(zhǔn)備與基礎(chǔ)軟件安裝2.1 服務(wù)器硬件與操作系統(tǒng)選型信創(chuàng)服務(wù)器現(xiàn)在可選的范圍挺廣不管是華為泰山、浪潮、中科曙光還是其他品牌的機(jī)器核心問題就一個(gè)CPU架構(gòu)和操作系統(tǒng)要匹配好。比如鯤鵬920是ARM架構(gòu)飛騰也是ARM龍芯是LoongArch海光則是x86架構(gòu)。選操作系統(tǒng)時(shí)一定要確認(rèn)對(duì)應(yīng)的版本是否支持你這個(gè)CPU。我們用的是麒麟V10服務(wù)器版。麒麟系統(tǒng)分桌面版和服務(wù)器版千萬別裝混了。服務(wù)器版有兩個(gè)內(nèi)核分支一個(gè)是4.19的內(nèi)核兼容性更好另一個(gè)是5.10的內(nèi)核對(duì)較新的硬件支持更好。如果是鯤鵬920這種新平臺(tái)建議直接用5.10內(nèi)核的版本。判斷方法很簡(jiǎn)單安裝時(shí)可以在啟動(dòng)菜單里看到選擇也可以進(jìn)系統(tǒng)后用uname -r查看。注意安裝系統(tǒng)時(shí)選擇語(yǔ)言和時(shí)區(qū)務(wù)必選亞洲/上海否則后面日志時(shí)間、檔案借閱時(shí)間戳全對(duì)不上排查起來很頭疼。裝完系統(tǒng)第一步是配置靜態(tài)IP因?yàn)榉?wù)器IP變了會(huì)導(dǎo)致配置的數(shù)據(jù)庫(kù)連接、中間件地址全部失效。麒麟系統(tǒng)改IP可以編輯/etc/sysconfig/network-scripts/ifcfg-ensxxx文件把BOOTPROTOstatic然后添加IPADDR、NETMASK、GATEWAY、DNS。改完重啟網(wǎng)絡(luò)服務(wù)nmcli con reload nmcli con up ensxxx2.2 麒麟系統(tǒng)的初始化配置四件套服務(wù)器安裝完后有四件事必須做第一件事配好軟件源。很多人在麒麟上安裝軟件失敗就是因?yàn)槟J(rèn)源沒配好或者連不上。麒麟V10自帶的源如果用的是內(nèi)網(wǎng)環(huán)境需要掛載安裝光盤或者配置本地源。一個(gè)常見做法是把系統(tǒng)ISO掛載到/mnt/cdrom然后新建repo文件指向它mount /dev/cdrom /mnt/cdrom cat /etc/yum.repos.d/local.repo EOF [local] namelocal baseurlfile:///mnt/cdrom enabled1 gpgcheck0 EOF yum clean all yum makecache第二件事關(guān)閉防火墻或者放行對(duì)應(yīng)端口。檔案系統(tǒng)涉及Web訪問、數(shù)據(jù)庫(kù)連接等默認(rèn)防火墻策略會(huì)攔截。如果你只是內(nèi)網(wǎng)測(cè)試可以直接停掉防火墻systemctl stop firewalld systemctl disable firewalld sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config生產(chǎn)環(huán)境別這么干按端口精細(xì)化放行。Web端口通常是8080或8443數(shù)據(jù)庫(kù)端口達(dá)夢(mèng)默認(rèn)是5236把這些端口加入白名單即可。第三件事同步服務(wù)器時(shí)間。檔案系統(tǒng)的時(shí)間戳非常重要借閱記錄、審核時(shí)間、材料歸檔時(shí)間差一分鐘都可能造成業(yè)務(wù)問題。如果內(nèi)網(wǎng)有NTP服務(wù)器配置一下yum install -y chrony cat /etc/chrony.conf EOF server 192.168.1.10 iburst EOF systemctl enable chronyd --now chronyc sources -v第四件事配置主機(jī)名和hosts文件。后面裝數(shù)據(jù)庫(kù)和中間件時(shí)大概率要通過主機(jī)名互相訪問先把/etc/hosts配好能省很多麻煩。2.3 JDK與國(guó)產(chǎn)中間件的安裝配置檔案管理系統(tǒng)大多數(shù)基于Java開發(fā)所以JDK是必須的。信創(chuàng)環(huán)境下強(qiáng)烈建議使用配套的國(guó)產(chǎn)化OpenJDK版本比如畢昇JDK華為、麒麟自帶的OpenJDK。直接安裝麒麟源里的OpenJDK就行或者解壓官方大版本JDK到/usr/local/java然后配環(huán)境變量export JAVA_HOME/usr/local/java/jdk-17.0.2 export PATH$JAVA_HOME/bin:$PATH export CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar配置完之后在/etc/profile里追加就行記得source /etc/profile生效。驗(yàn)證是否裝好用java -version看輸出如果是openjdk version 17.0.2 這種就說明OK。中間件方面東方通TongWebTongWeb 7.0是基于Java EE規(guī)范的應(yīng)用服務(wù)器在國(guó)企和黨政機(jī)關(guān)用得比較多對(duì)國(guó)產(chǎn)化環(huán)境適配也做得比較好。它本質(zhì)上跟Tomcat類似但多了一些管理和集群功能而且通過了等保和密評(píng)適配安全策略更全。解壓后啟動(dòng)腳本在bin/startserver.shcd /opt/tongweb/bin ./startserver.sh默認(rèn)端口是8080。啟動(dòng)完訪問http://IP:8080/看到管理控制臺(tái)頁(yè)面就表示中間件起來了。3. 檔案管理系統(tǒng)的部署與初始化3.1 應(yīng)用包結(jié)構(gòu)分析與上傳檔案管理系統(tǒng)一般交付物就是一個(gè)WAR包或者一個(gè)解壓后的業(yè)務(wù)目錄。我們拿到手的是一個(gè)名字類似filearchive-web.war的包內(nèi)部結(jié)構(gòu)無非是靜態(tài)資源、WEB-INF/classes下的配置文件、lib目錄下的依賴jar包。部署前先把結(jié)構(gòu)看明白尤其是配置文件這樣后面改數(shù)據(jù)源連接才能找到地方。上傳WAR包到TongWeb的自動(dòng)部署目錄通常是/opt/tongweb/webapps然后重啟中間件讓它自動(dòng)解壓。或者直接用TongWeb管理控制臺(tái)上傳操作界面類似Tomcat Manager。我習(xí)慣手動(dòng)丟目錄里因?yàn)閃AR包解壓后能直觀看到配置文件在哪。上傳完記得檢查解壓后的WEB-INF/classes/application.properties或者jdbc.properties所有的數(shù)據(jù)源、Redis連接、文件存儲(chǔ)路徑配置都在這里。3.2 達(dá)夢(mèng)數(shù)據(jù)庫(kù)的初始化與腳本導(dǎo)入檔案系統(tǒng)使用的是達(dá)夢(mèng)8數(shù)據(jù)庫(kù)。達(dá)夢(mèng)對(duì)Oracle兼容性做得好一些SQL語(yǔ)法上也比較接近Oracle。新裝達(dá)夢(mèng)之后先初始化實(shí)例cd /opt/dmdbms/bin ./dminit PATH/opt/dmdbms/data DB_NAMEARCHIVE INSTANCE_NAMEDMSERVER PORT_NUM5236然后用./dmserver /opt/dmdbms/data/DAMENG/dm.ini啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)。達(dá)夢(mèng)默認(rèn)用戶名密碼是SYSDBA/SYSDBA登進(jìn)去之后先建表空間和用戶CREATE TABLESPACE TS_ARCHIVE DATAFILE /opt/dmdbms/data/TS_ARCHIVE.DBF SIZE 1024 AUTOEXTEND ON NEXT 100 MAXSIZE 20480; CREATE USER ARCHIVE IDENTIFIED BY Archive2024 DEFAULT TABLESPACE TS_ARCHIVE; GRANT DBA TO ARCHIVE;對(duì)系統(tǒng)初始化腳本比較穩(wěn)妥的做法是執(zhí)行全庫(kù)腳本也就是建表、建索引、初始化字典數(shù)據(jù)一起跑。一般交付方會(huì)提供一個(gè)init.sql或者install.sql直接執(zhí)行./disql ARCHIVE/Archive2024localhost:5236 -e set CHAR_CODEUTF8 -f /home/migration/init.sql提醒一下執(zhí)行腳本之前先檢查字符集。如果數(shù)據(jù)庫(kù)建庫(kù)時(shí)不是UTF8后面中文全部亂碼特別是檔案材料里的姓名和單位名稱亂碼基本等于整個(gè)庫(kù)廢了。檢查方式很簡(jiǎn)單執(zhí)行SELECT * FROM v$parameter WHERE name LIKE %CHAR%;或者初始化時(shí)指定CHARSET11代表UTF-8。3.3 數(shù)據(jù)源配置與中間件聯(lián)調(diào)數(shù)據(jù)庫(kù)初始化完成后回到應(yīng)用配置。修改application.properties中數(shù)據(jù)源相關(guān)配置spring.datasource.urljdbc:dm://127.0.0.1:5236/ARCHIVE spring.datasource.usernameARCHIVE spring.datasource.passwordArchive2024 spring.datasource.driver-class-namedm.jdbc.driver.DmDriver改完之后重啟TongWeb讓應(yīng)用重新加載配置。查看啟動(dòng)日志看到類似Started FileArchiveApplication這樣的信息說明應(yīng)用啟動(dòng)成功。這時(shí)訪問http://IP:8080/filearchive-web/應(yīng)該能看到登錄頁(yè)面。登錄頁(yè)面能出來但登錄報(bào)錯(cuò)大概率是應(yīng)用連不上數(shù)據(jù)庫(kù)。這個(gè)時(shí)候不要慌逐步排查先用達(dá)夢(mèng)客戶端連一下數(shù)據(jù)庫(kù)disql ARCHIVE/Archive2024127.0.0.1:5236能連上說明數(shù)據(jù)庫(kù)和用戶沒問題再看中間件日志里報(bào)的異常棧是網(wǎng)絡(luò)不通、賬號(hào)密碼錯(cuò)還是驅(qū)動(dòng)類找不到如果是驅(qū)動(dòng)找不到把達(dá)夢(mèng)的JDBC驅(qū)動(dòng)jar包DmJdbcDriver18.jar放到WEB-INF/lib下重啟這個(gè)環(huán)節(jié)我卡過一次原因是應(yīng)用自帶的是MySQL驅(qū)動(dòng)整個(gè)換成達(dá)夢(mèng)驅(qū)動(dòng)光改連接串沒改driver-class-name折騰了半天才反應(yīng)過來。4. 人事檔案數(shù)據(jù)遷移與目錄建庫(kù)4.1 檔案分類與代碼表初始化系統(tǒng)能登錄后先別急著導(dǎo)數(shù)據(jù)。先把基礎(chǔ)代碼表搞定比如檔案分類代碼十大類、人員狀態(tài)代碼在職、離休、退休、離職等、材料類型代碼履歷材料、自傳材料、考核考察材料、學(xué)歷學(xué)位材料、政審材料、黨團(tuán)材料、獎(jiǎng)勵(lì)材料、違紀(jì)違法材料、工資待遇材料、其他材料。這些代碼表一般都在初始化SQL里預(yù)置好了但為了保險(xiǎn)起見我建議切到管理端把每個(gè)代碼表都打開看一眼。特別是十大類代碼因?yàn)楹罄m(xù)檔案目錄排序、材料歸類全靠它。如果分類代碼對(duì)不上導(dǎo)進(jìn)去的數(shù)據(jù)在目錄樹里顯示就是亂的。代碼表驗(yàn)證方法也很簡(jiǎn)單用檔案編號(hào)去反查分類名稱如果對(duì)應(yīng)關(guān)系不對(duì)手動(dòng)在代碼維護(hù)頁(yè)面改一下即可。這一步感覺枯燥但它是整個(gè)檔案系統(tǒng)數(shù)據(jù)呈現(xiàn)的基礎(chǔ)。4.2 歷史數(shù)據(jù)清洗與批量導(dǎo)入接下來就是最棘手的歷史數(shù)據(jù)遷移。舊系統(tǒng)可能是十幾年前的FoxPro單機(jī)版也可能是某個(gè)老式B/S系統(tǒng)。數(shù)據(jù)導(dǎo)出的方式各不相同但最終要做的事是一樣的清洗、匹配、導(dǎo)入。我們的做法是把舊數(shù)據(jù)先導(dǎo)成Excel然后在Excel里做預(yù)處理人員基本信息確保姓名字段不要有空格、身份證號(hào)18位、出生日期格式統(tǒng)一為yyyy-MM-dd單位名稱使用標(biāo)準(zhǔn)全稱避免同一個(gè)單位存在區(qū)委組織部區(qū)組織部?jī)煞N寫法材料分類每條材料記錄必須標(biāo)注分類代碼否則導(dǎo)入完成后材料都跑到其他類下面導(dǎo)入方式也有講究。如果系統(tǒng)自帶導(dǎo)入功能直接在管理后臺(tái)導(dǎo)Excel就行如果沒有就得走數(shù)據(jù)庫(kù)腳本。我們用的環(huán)境既有Excel導(dǎo)入模板也能用SQL腳本批量處理。我的建議是先用小批量測(cè)試數(shù)據(jù)試一次比如導(dǎo)5個(gè)人看看效果確認(rèn)沒問題再全量執(zhí)行。批量導(dǎo)入SQL腳本的一個(gè)思路是先把Excel轉(zhuǎn)成CSV然后用達(dá)夢(mèng)的dmfldr工具快