惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
T
Tailwind CSS Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
M
MIT News - Artificial intelligence
L
LangChain Blog
aimingoo的专栏
aimingoo的专栏
Engineering at Meta
Engineering at Meta
Martin Fowler
Martin Fowler
H
Help Net Security
B
Blog
Y
Y Combinator Blog
小众软件
小众软件
S
SegmentFault 最新的问题
I
InfoQ
爱范儿
爱范儿
Hugging Face - Blog
Hugging Face - Blog
D
Docker
博客园 - 【当耐特】
J
Java Code Geeks
阮一峰的网络日志
阮一峰的网络日志

博客园 - goding

银河麒麟服务器版用docker部署某系统 centos7.9配置oracle 11.2.0.4开机自启动 虚拟机centos7.9配置apache+mono运行asp.net网站程序极速版 虚拟机centos7.9配置apache+mono运行asp.net网站程序 CS1012: 字符文本中的字符太多 故障处理 虚拟机centos7.9 安装oracle 11.2.0.4 windows版的squid代理服务器 解决黑苹果关机变重启的问题 batocera系统闪退故障处理 tplink-WR2041N V2路由器刷openwrt 记录第一次折腾黑苹果的体会 给MacMini-A1347重装windows系统 断开所有共享文件夹连接 海康威视安防平台下发数据到门禁失败,错误码0x15400001的故障处理 使用mssql内置的方法实现Md5加密注意的问题 批量结束数据库进程 解决sql语句中文乱码导致的问题 电脑版微信小程序路径 飞牛关闭屏幕 飞牛os打开本机usb摄像头 win10安装广东省正版化检查工具 asp.net网站编译后出现“发现不明确的匹配”的错误 联想瑞天500无法禁用安全启动的解决办法 win2012服务器设置远程端口 解决一台hp probook 430G3笔记本无法实现win10关机网络唤醒 麒麟和win10双系统出现时间差异的问题 用Vmware ESXI6.7离线包封装网卡驱动 vmware部署win7,win2008,win2012等系统如何手动安装vmware tools 重装系统后实况足球pes2021需要安装的文件 安装飞牛os出现452错误的解决方法
虚拟机centos7.9配置apache+mono运行asp.net网站程序总结
goding · 2026-08-25 · via 博客园 - goding

经过这段时间的反复安装测试,现在总结一下,也对个别地方进行了优化

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,打开如图:

1787533999848

这里是用了文件进行配置环境变量,路径在/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

image