









经过这段时间的反复安装测试,现在总结一下,也对个别地方进行了优化
1、更换yum源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.cloud.tencent.com/repo/centos7_base.repo
sudo yum clean all
sudo yum makecache
2、安装mono,用mono源码编译的时间比较长,改用epel-release 仓库进行安装
sudo yum install -y epel-release
sudo yum install -y mono-complete
安装完成看了一下,mono的版本号是6.8.0.123,或者参考——CentOS 7.2下安装Mono 5.0
__________________________________________________________________________________________________________________________________________________________________
第一阶段:
3、安装xsp-4.7.1
需要把Mono.Security.dll,Mono.Posix.dll,Mono.Data.Sqlite.dll拷贝到/usr/lib/mono/4.0-api目录下,dmcs文件拷贝到/usr/bin目录下并授权执行(mono2.11起,都是用mcs作为编译器,gmcs和dmcs只是通过不同参数调用mcs的,4.0版本起没有gmcs,压缩包的gmcs和dmcs来自mono-3.12.1版本,三个dll文件来自Ubuntu24.04下面的mono 6.12.0.200版本4.0-api目录),所需文件下载
下载并编译安装xsp4
wget https://download.mono-project.com/sources/xsp/xsp-4.7.1.tar.gz sudo tar -xzf xsp-4.7.1.tar.gz sudo ./configure --prefix=/usr sudo make ; sudo make install
这里由于是用仓库安装的mono,mono.pc文件是存放到/usr/lib64/pkgconfig目录下,就不会出现缺少mono模块的提示;如果是用源码安装,还需要拷贝/usr/lib/pkgconfig/mono.pc文件到/usr/lib64/pkgconfig目录下。
安装完成后,运行xsp已经可以访问aspx页面了,如果仅仅是开发调试aspx页面,到这里应该也够用了。
如果aspx页面要调用oracle客户端连接oracle数据库,还要进行如下的配置:
(1)运行netmgr配置监听程序和服务命名
(2)在.bash_profile文件中配置NLS_LANG,避免aspx页面读取数据库的中文字符出现乱码
如果出现system.dllnotfoundexception:libclntsh.so的错误提示,还需要配置export LD_LIBRARY_PATH,指向oracle安装目录的lib,例如:
sudo vi .bash_profile
export ORACLE_BASE=/home/wen/app/wen
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
export PATH=$PATH:$ORACLE_HOME/bin
__________________________________________________________________________________________________________________________________________________________________
第二种阶段,如果需要配置成网站应用,还是apache+mono+xsp+mod_mono比较稳定些,那就继续下面的配置(xsp里包含了mod_mono_server4和asp_state,也是要必须安装的)
4、安装apache,httpd-devel在编译mod_mono的时候要用到
sudo yum install -y httpd httpd-devel sudo chkconfig --levels 235 httpd on sudo systemctl start httpd
5、安装并配置mod_mono-3.13
wget https://download.mono-project.com/sources/mod_mono/mod_mono-3.13.tar.gz sudo tar -xzf mod_mono-3.13.tar.gz sudo ./configure --prefix=/usr sudo make ; sudo make install
修改配置文件
sudo vi /etc/httpd/conf/mod_mono.conf
在末尾加上
MonoServerPath "/usr/bin/mod-mono-server4" MonoAutoApplication enabled
然后将配置文件复制到Apache的配置文件目录中:
sudo cp /etc/httpd/conf/mod_mono.conf /etc/httpd/conf.d/
6、禁用SELinux
sudo vi /etc/sysconfig/selinux
将“SELINUX=enforcing”修改为“SELINUX=permissive”或“SELINUX=disabled”
7、如果网站程序要调用oracle客户端连接oracle数据库,还要进行如下的配置:
这里跟xsp的配置有区别,由于apache是通过systemd启动的,系统全局变量配置在这里不起作用,而是要在systemd的配置文件中加。
刚开始,是参考文章——Linux下部署ASP.NET服务连接oracle遇到的问题记录:
我尝试了一下,发现直接把oracle链接库加入ld.so.conf文件,更新缓存后确实能读取到oracle数据库,但重启系统后无法正常登录进桌面,一直在循环登录,于是变通了一下,在链接库下面再建一个文件夹libclntshso,把libclntsh.so复制进去,然后再sudo vi /etc/ld.so.conf,添加一行链接库新建文件夹所在路径如:/home/wen/app/wen/product/11.2.0/dbhome_1/lib/libclntshso,保存后退出,并执行sudo ldconfig 更新缓存文件就可以了;
另外还需要运行netmgr配置监听程序,但服务命名的连接方式不行,因为没有识别环境变量ORACLE_HOME,要用类似如下的连接字符串进行连接才行,如:
User ID=orcl;Password=123456;Data Source=(DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.68.143)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl))
而且还有一个问题,就是NLS_LANG不知道如何配置,读取中文数据还是会出现乱码。后来在网上查找了一下 systemd如何配置环境变量的,才把这个环节搞通了,配置如下:
(1)运行netmgr配置监听程序和服务命名
(2)查找httpd服务的配置文件,我这里的路径在/etc/systemd/system/multi-user.target,wants/httpd.service,打开如图:

这里是用了文件进行配置环境变量,路径在/etc/sysconfig/httpd,找到该文件,在末尾加上相关的三个环境变量定义:
ORACLE_HOME=/home/wen/app/wen/product/11.2.0/dbhome_1 NLS_LANG=AMERICAN_AMERICA.AL32UTF8 LD_LIBRARY_PATH=/home/wen/app/wen/product/11.2.0/dbhome_1/lib
如果不加上ORACLE_HOME,除了服务命名的连接方式不可用,而且还会报Error while trying to retrieve text for error ORA-12705
参考文章——Oracle 连接报错 Error while trying to retrieve text for error ORA-12705
然后更新变量和重启httpd就可以了
sudo systemctl daemon-reload sudo systemctl restart httpd
还有个注意的地方,一般oracle都是安装在用户目录下的,用户目录红框处的权限默认都是“无”,要把这两个地方改成“访问文件”,否则apache用户没办法访问到所设置的路径,还是会报system.dllnotfoundexception:libclntsh.so

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。