简介:面向用友NC65实施顾问与测试人员编制的安装操作手册,适合零基础或需独立搭建测试环境的学习者,同样适用于NCC等更高版本产品。手册以Oracle数据库为例,按阶段讲解:先完成数据库安装并记录全局数据库名、管理员口令等关键信息;再通过SQL*Plus创建NNC_DATA01、NNC_INDEX01表空间,明确初始大小、自动扩展和区间管理参数,同时完成用户创建与connect、dba权限授予;随后进入NC65安装环节,覆盖setup.bat安装、sysconfig.bat数据源配置、安全日志数据源初始化、EJB部署,以及通过admin.jsp完成系统编码、数据源设置和建库向导执行,最后提示license授权激活事项。整体步骤清晰,附有常用SQL语句和安装避坑细节,可帮助读者从数据库搭建一路走到系统初始化。包体为1个doc文档,压缩包仅933KB,内容集中便于查阅。已有3426人学习下载,适合作为实施顾问搭建测试环境时的对照手册。
1. 用友NC65安装为什么总卡在“环境不对”:这份自己编制的手册想解决什么
很多实施顾问和IT运维第一次接触用友NC65时,第一反应都是去官网找官方安装包和文档,结果装到一半就卡住——数据库字符集不对、中间件数据源连不上、应用启动后登录页死活打不开。我整理这份用友NC65安装操作手册的初衷很简单:把那些官方文档没写透、论坛里翻半天才找到的坑提前排掉。这份手册面向的是要在本地或客户内网环境里真刀真枪把NC65跑起来的人,不管你是实施新人还是企业运维老手,按着章节一步步走,基本能把安装周期从两周压到三五天,并且装完之后敢拍胸脯说“这个环境我能负责”。
2. 环境准备与选型:硬件、操作系统、数据库先在图纸上定下来
安装软件之前先定环境,这步跳过去后面全是麻烦。NC65对运行环境的敏感程度远高于普通Web应用,很多部署翻车都不是产品本身的问题,而是环境选型和预期不匹配。内存给少了高并发直接卡死,JDK位数不对应用起不来,数据库字符集选错了数据导入全是乱码。先把环境这层打稳,后续安装才有意义。
2.1 硬件配置评估:内存大小决定并发上限,CPU核心数决定编译和报表速度
NC65跑起来之后,进程会占掉很大一块内存。常见做法是先按在线用户数估算:50人以内并发不太高的场景,物理机内存建议从32GB起步;100人以上建议直接上64GB。这里的逻辑是NC65的JVM堆内存、中间件本身、数据库SGA三块叠加之后,剩余内存还要留给操作系统做页缓存,一旦内存吃紧,最先出现的就是登录慢和报表超时。
磁盘方面,我一般建议系统盘、数据库数据文件盘、产品安装目录分三块独立存储。原因很务实:数据库的redo日志和数据文件对IOPS的要求和产品安装目录完全不同,混在一起之后排障时连瓶颈在哪都找不到。CPU核心数不用追求极致,8核16线程在单体部署场景下够用,但如果你计划在同一台机器上同时跑数据库和中间件,核心数再多给一倍。
配置评估完别急着下单,把结果写成一张环境规划表,写上用途、建议配置和责任人。后期安装的每一步都要和这张表对得上,因为安装过程中很多参数(JVM堆内存上限、数据库SGA大小)都取决于这份规划,参数和实际配置不匹配也是常见的安装失败原因之一。
2.2 操作系统与JDK选型:先统一为64位,再谈具体版本
NC65的服务端进程在32位JDK下存在寻址上限,堆内存调到一定值就报错,这类问题表面看是配置错误,本质上是JDK位数选错。所以选型第一条:无论Windows Server还是Linux,一律装64位JDK 8,这条路最稳。Linux发行版方面,主流企业环境用CentOS/RHEL系列较多,Ubuntu Server也能跑,但部分内核参数和防火墙规则需要额外适配,新人容易卡住。
Windows Server的安装界面友好,适合单机演示或中小规模内部使用;生产环境我倾向于Linux,原因只有一个:长时间运行的稳定性。某公司曾经用Windows Server跑了半年没出过问题,但一次系统自动更新后中间件服务起不来了,查到最后是补丁改了网络策略。Linux环境只要不随便动内核参数,基本不会出这种幺蛾子。
JDK装完之后第一件事是验证位数,命令行执行java -version,能看到64位字样才算通过。另外注意PATH里不要混入其他版本的JDK,某些系统自带的OpenJDK会干扰产品对JAVA_HOME的判断,这种问题属于典型的“黑匣子”故障——日志里看不到报错,但服务就是起不来。
2.3 数据库选型:Oracle与SQL Server的方案取舍,字符集提前锁死
NC65在数据库层面常见两种选择:Oracle或SQL Server。从实施角度看,Oracle在字符集粒度和表空间管理上更灵活,适合数据量大、后续要做分表分区的场景;SQL Server上手门槛低,中小型环境用起来省心,但字符集一旦建错后续改起来非常痛苦。选型时不要只看现场团队熟悉哪个,还要看客户未来数据量会不会涨。涨得快选Oracle,维持现状就选SQL Server。
数据库版本不建议追新,选产品兼容性验证过的主流版本即可。这里有一条血泪经验:建库之前先确认字符集,Oracle用AL32UTF8居多,SQL Server确认排序规则为Chinese_PRC_CI_AS。字符集不一致的典型后果是安装完成后中文显示乱码,而且这种乱码在数据层面已经损坏,不是改个配置文件就能恢复的。
数据库层面的网络连通性也要提前验证。用数据库客户端工具从应用服务器远程连一下数据库服务器,确认端口通、账号能登、能建表。这一步做完,后面安装过程中的数据库初始化脚本才可能顺利执行。很多安装失败都发生在应用服务器和数据库服务器之间的网络不通,而这个问题本应在选型阶段就排掉的。
3. 安装介质与环境检查:装之前必须完成的准备清单
进入了实际安装阶段,先泼一盆冷水:不要边下载边装。把安装介质、数据库连接信息、环境变量全部确认完毕后再动工。安装介质缺文件、环境变量指向错误,这两种情况在安装过程里最消耗耐心。与其装一半去补文件,不如花一小时集中检查。
3.1 安装包三件套与介质目录规范:安装程序、数据库脚本、产品补丁分开存放
NC65的安装介质通常包含三个部分:产品安装程序、数据库脚本包、补丁包。我习惯在服务器上建一个干净的介质目录,比如/u01/nc_media,下面按setup、dbscript、patch三个子目录分离存放。介质目录最忌讳中文路径和空格,部分脚本对路径的解析不够健壮,路径带空格会导致脚本执行失败,而这类问题光看日志很难定位。
介质文件的完整性和一致性检查不要省。用校验工具对安装程序和脚本包计算哈希值,然后和下载页面标注的哈希比对。这一步看着多余,但在网络传输不稳定的环境里,文件损坏导致的安装中断很常见。特别是几GB级别的安装程序,传输中断过哪怕一次,都可能带来隐性问题。
补丁包的处理有个常见误区:补丁是在基础安装完成之后才打的,不是安装前就打上去。补丁包里往往包含对配置文件的覆盖更新,提前打补丁会让安装程序在部署过程中被补丁文件干扰。先把三个目录准备好,安装时按顺序使用,顺序错了容易产生不可预期的冲突。
3.2 安装前的系统自检命令与清单:数据库连通性、磁盘空间、防火墙一次查完
环境自检建议整理成固定流程,每次部署都走一遍。下面这段命令覆盖了JDK位数、内存、磁盘、端口监听四类检查,也是我每次到客户现场必跑的前置检查:
# 检查JDK位数,必须看到64-Bit java -version 2>&1 | head -n 1 # 检查内存总量,确认不低于规划值 free -h # 检查数据盘剩余空间,建议预留安装包大小的3倍以上 df -h /u01 # 检查数据库服务器端口是否可达,IP和端口替换为实际值 telnet 192.168.1.100 1521逻辑说明:第一条命令把JDK版本信息输出并取第一行,目的是快速确认位数;free -h以人类可读方式显示内存,重点看available列;df -h检查数据盘空间,NC65安装加数据库初始化通常占用空间不小,预留3倍以上是防止脚本中途写满磁盘;telnet测试数据库端口连通性,1521是Oracle默认监听端口,用SQL Server则换成1433。
防火墙的检查容易被忽略。Linux环境执行firewall-cmd --list-all查看当前放行端口,Windows Server则检查高级安全防火墙的入站规则。后续安装要用的几个端口,建议在安装前就放行,不要等到启动报错再排查。这一步在客户环境尤其重要,因为很多客户的服务器有安全基线要求,安装过程中临时放行端口再申请变更流程,周期会拖得很长。
数据库账号的权限确认也放在这个阶段。用业务账号登录数据库执行一条建表语句,如果连建表权限都没有,后面的初始化脚本必然失败。网络、权限、空间这三件事确认完,安装工作才算真正具备启动条件。
4. 数据库初始化与中间件部署:从建库到发布应用的核心路径
这一章是整个安装过程的主干。常规安装流程中,数据库初始化和中间件配置最容易出问题,也是耗时最长的两个环节。数据库脚本执行的时间取决于服务器性能,快则几十分钟慢则数小时,中间任何一个报错都需要全局排查。中间件配置表面上看是点点鼠标,实际上数据源的每一步都决定应用能否连上数据库。理解这个环节的逻辑比记住操作步骤更重要。
4.1 Oracle建库与授权:先给数据库打好底,再跑初始化脚本
数据库初始化前需要准备好表空间和业务账号。表空间的核心原则是数据文件与索引文件分离、自动扩展打开。下面是一份常用的建库授权脚本,需要以DBA权限执行:
-- 创建业务数据表空间,指定初始大小与自动扩展策略 CREATE TABLESPACE NC_DATA DATAFILE '/u01/oradata/nc_data01.dbf' SIZE 20G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED; -- 创建索引表空间,与数据表空间物理分离 CREATE TABLESPACE NC_INDEX DATAFILE '/u01/oradata/nc_index01.dbf' SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED; -- 创建业务账号,默认表空间指向数据表空间 CREATE USER nc65user IDENTIFIED BY "此处替换为强密码" DEFAULT TABLESPACE NC_DATA TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON NC_DATA QUOTA UNLIMITED ON NC_INDEX; -- 授予连接、资源、DBA权限 GRANT CONNECT, RESOURCE, DBA TO nc65user;逻辑说明:第一个CREATE TABLESPACE在指定路径下创建数据表空间文件,初始分配20GB,空间不足时每次自动扩展1GB且不设上限;第二个创建索引表空间,将索引与数据分离存储,降低读写竞争;CREATE USER创建业务账号并指定默认表空间,强密码用双引号包裹是为了兼容特殊字符;最后的GRANT语句授予基础权限。DBA权限在生产环境偏大,但NC65安装初始化阶段通常需要较高权限,初始化完成后可收回并在应用层改用最小权限账号。
建好账号后,开始执行产品自带的数据库初始化脚本。执行顺序上先跑建表脚本,再跑基础数据脚本。导入过程要盯着日志,遇到出错不要盲目重跑,先看报错类型。常见的报错有字段长度超限和唯一约束冲突,多数情况下是因为脚本顺序出错或账号权限不足。日志中出现第一条ORA报错时,正确的做法是停下来排查,而不是继续跑完再还愿似的重来。
4.2 WebLogic中间件:域、数据源与目标服务器三者的层级关系
NC65在传统部署模式下需要先装好WebLogic作为应用服务器。安装WebLogic本身不难,真正的坑在配置环节。首先是域的概念:一个域相当于一套独立的配置体系,域下面可以有多个服务器实例。NC65的单体部署通常只需要创建一个管理服务器和一个受管服务器,受管服务器才是真正跑业务应用的地方。
数据源配置是另一个高频出错点。数据源本质上是把数据库连接信息注册到中间件里,让应用通过JNDI名字获取连接。先创建数据源,填好JDBC URL、驱动类名、数据库账号密码,然后在“目标”选项卡里勾选受管服务器。如果只勾选了管理服务器,应用启动时会报“找不到数据源”,这就是典型的JNDI定位错误。
数据源连接测试务必做。测试时会弹出通过或失败的提示,失败信息通常会包含具体原因,比如主机名解析失败、端口不通、用户名密码错误。主机名解析失败是很隐蔽的问题:某些环境里数据库服务器名无法被应用服务器解析,需要检查两端服务器的hosts配置。另外数据库服务器的监听地址如果不是本机回环地址,需要确认监听是否绑定了正确的网卡IP。
4.3 产品部署与启动参数:发布应用前的最后一公里
WebLogic配好后,把NC65的产品应用包部署到受管服务器上。部署方式有在线部署和离线部署两种,现场网络允许就用在线部署,界面操作直观且能看到部署进度;网络不稳定则用离线部署,将应用包放到指定目录后启动时自动加载。部署完成后检查应用状态,状态应为“活动”或“正常运行”,状态异常时查看受管服务器的日志文件。
启动参数是安装过程中最需要手工调整的部分。JVM堆内存不要一次性给太大,先按硬件规划的60%到70%分配,运行稳定后再逐步上调。让配置生效的关键是指定受管服务器的启动参数,常见做法是编辑启动脚本,加入内存参数并设置JAVA_HOME指向64位JDK路径:
# 设置JAVA_HOME为64位JDK安装路径 export JAVA_HOME=/usr/local/jdk8 export PATH=$JAVA_HOME/bin:$PATH # 启动受管服务器,日志写入独立文件 nohup ./startManagedWebLogic.sh 受管服务器名 http://管理服务器IP:管理端口 > /u01/nc/logs/nc_startup.log 2>&1 &逻辑说明:第一行把JAVA_HOME切换到实际安装的JDK目录,避免系统PATH中其他版本干扰;第二行将JDK的bin目录加入PATH,确保命令行工具版本一致;最后一行通过nohup在后台启动受管服务器,把标准输出和错误输出都重定向到日志文件,日志单独存放对后续排障帮助很大。如果启动脚本中还有-Xmx等堆内存参数,按规划的堆内存值填入即可。启动完成后查看日志末尾是否出现“服务器启动就绪”之类的关键信息,出现即代表中间件层已经就绪。启动过程中出现任何异常,先看日志再看端口,不要反复重启。
5. 安装避坑指南:5个高频问题的现象、原因与处理
这一章把安装过程中最常遇到的坑集中写出来,每一条都是真实部署中反复出现的典型问题。按照“现象-原因-解决”的结构来梳理,方便你在现场遇到同类问题时快速对照处理。
坑一:JVM堆内存调到4GB以上,受管服务器启动直接失败。现象:日志里出现内存分配相关的错误,服务进程起不来。原因:JDK是32位版本,进程内存寻址有上限,堆内存需求超过上限后直接拒绝启动。处理:更换为64位JDK,确认java -version输出包含“64-Bit”,并在启动脚本中显式指定JAVA_HOME指向新路径。
坑二:数据库脚本导入后,登录界面中文全部显示为问号。现象:系统能登录,但菜单和基础档案中的中文全部乱码。原因:数据库字符集与产品要求不一致。Oracle常见的问题是AL32UTF8和ZHS16GBK混用,SQL Server常见的问题是排序规则选错。处理:在建库阶段就指定正确字符集;如果数据已经导入,只能truncate相关表后重建并重新导入,数据量大的环境下代价很高,所以这个坑必须在建库前避开。
坑三:应用启动后提示找不到数据源JNDI。现象:WebLogic受管服务器启动时或访问页面时报错,明确提示某个数据源名称不存在。原因:数据源创建后没有勾选目标服务器,或者勾选到了管理服务器上,受管服务器无法解析到该JNDI名称。处理:进入数据源配置界面,确认目标选项卡中已勾选受管服务器,保存后重启受管服务器。重启后仍报错,再检查数据源名称是否与产品配置文件中引用的名称完全一致。
坑四:数据库初始化脚本执行到一半报表空间不足。现象:脚本执行过程中提示无法扩展表空间,或提示无法写入数据文件。原因:表空间数据文件初始大小过小且自动扩展未开启,或者数据文件所在磁盘已满。处理:确认数据文件开启AUTOEXTEND,并检查所在磁盘剩余空间。空间不足的根因通常是数据文件和日志文件混放在同一块小分区上,规范做法是数据盘独立分配,且容量至少按预估数据量的两倍规划。
坑五:应用服务器本机能打开登录页,客户端机器访问超时。现象:服务器本地访问一切正常,换成局域网内其他电脑就无法连接。原因:防火墙未放行应用监听端口,或者监听地址绑定在127.0.0.1导致外部请求无法进入。处理:检查应用服务器的监听配置,确认监听地址为0.0.0.0或具体网卡IP;在防火墙中放行应用端口;Linux环境还要确认SELinux没有拦截相关服务。
6. 上线前的验证方法与常用技巧
安装完成不等于可以交工。走完一套验证流程,能提前暴露大部分隐含问题。验证的思路是从外到内:先确认端口和登录页,再确认业务功能,最后确认数据落库。按这个顺序执行,哪一层出问题就能快速定位到哪一层,不至于上线后手忙脚乱。
6.1 安装成功的四个关键验证步骤
第一步验证端口监听状态。在应用服务器上执行端口查看命令,确认应用端口处于LISTEN状态。第二步验证登录页面。用浏览器访问登录地址,页面能正常打开并显示登录框,说明中间件和应用部署层基本正常。第三步验证账号登录。使用系统管理员账号登录,这一步能确认数据源是否连通,如果登录失败且提示密码错误则排查账号密码,提示连接失败则排查数据源。第四步验证基础业务。进入一个简单的基础档案页面,尝试新增一条记录并保存,再到数据库里验证这条记录真实落库。
6.2 日常巡检命令与备份习惯
上线前的最后一天,我习惯把下面这套巡检命令存成脚本,每天定时跑一次:
# 查看应用进程是否存在 ps -ef | grep ManagedServer # 查看端口监听状态 netstat -anp | grep 应用端口 # 查看数据库连接数是否接近上限 sqlplus -S ncuser/password@数据库IP:端口/服务名 <<< "select count(*) from v\$session;"这套命令覆盖了进程、端口、数据库连接数三个维度的基础巡检,任何一行输出异常都能给出重要线索。备份方面,安装完成后第一时间备份配置文件目录和数据库初始化后的完整数据。配置文件备份的价值在于,系统运行一段时间后参数会被改动,一旦需要回退或者重建环境,配置备份就是后悔药。数据库备份则至少保留一份基线版本,后续打补丁或者调整参数前先备份,出问题可以直接恢复。
整理这份手册的过程中让我最意外的一件事是,很多部署问题不是技术难度高,而是操作顺序和环境细节没有形成规范。把介质准备好、环境查一遍、顺序走对,大部分问题都能在源头避开。现在这套流程已经成为我接手所有项目的标准动作,每次安装都按同一套检查清单来,翻车概率大幅下降。希望这份自己编制的安装操作手册能帮你少走弯路,一次装通。
本文还有配套的精品资源,点击获取