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