如何将VS2010开发的ASP.NET MVC3应用部署到SUSE Linux服务器?
把ASP.NET MVC 3应用部署到SUSE Linux服务器的完整指南
没问题,我帮你梳理下这套部署流程——都是实际操作过的靠谱方案,一步步来就行:
1. 在SUSE Linux上搭建Mono运行环境
ASP.NET MVC 3基于.NET Framework,Linux上得靠Mono来兼容运行(.NET Core不支持MVC3)。用SUSE的zypper包管理器直接安装稳定版:
sudo zypper addrepo https://download.mono-project.com/repo/opensuse/15.4/ mono-official sudo zypper refresh sudo zypper install mono-complete
安装完验证下版本,只要在5.0以上就对MVC3支持很稳:
mono --version
2. 处理SQL Server 2008数据库的兼容性
因为SQL Server 2008没有官方Linux版,给你两个实用方案:
方案一:保留原Windows上的SQL Server 2008
不用迁移数据库,只要让SUSE服务器能远程访问它:- 在Windows的SQL Server 2008上开启TCP/IP远程连接,开放1433端口,关闭防火墙限制
- 修改应用
web.config里的连接字符串,把服务器地址换成SQL Server的IP:<connectionStrings> <add name="YourDBContext" connectionString="Server=192.168.x.x;Database=YourDB;User ID=sa;Password=yourpassword;Trusted_Connection=False;" providerName="System.Data.SqlClient" /> </connectionStrings>
Mono的SqlClient对旧版SQL Server兼容性很好,不用额外折腾驱动。
方案二:把数据库迁移到Linux兼容的服务
如果想把数据库也放SUSE上,可以迁移到PostgreSQL/MySQL,或者升级到SQL Server 2017+(有官方Linux版)。用SQL Server导出工具把数据导出来,再导入目标数据库,最后修改web.config的连接字符串和对应驱动即可。
3. 准备并上传你的MVC3应用
先在VS2010里做好发布:
- 右键项目选择发布,选文件系统作为目标,把应用文件导出到本地文件夹
- 用SCP或者FTP工具把整个发布文件夹上传到SUSE服务器的目录,比如
/var/www/your-mvc-app
4. 配置Web服务器运行应用
两种常用方式,按需选:
方式一:用XSP快速测试(适合验证功能)
XSP是Mono自带的轻量Web服务器,用来快速验证应用能不能跑:
cd /var/www/your-mvc-app xsp4 --port 8080
然后浏览器访问http://你的SUSE服务器IP:8080,能正常显示页面就说明基础没问题。但XSP不适合生产环境,建议用下面的方案。
方式二:Apache + mod_mono(生产环境推荐)
- 安装Apache和mod_mono:
sudo zypper install apache2 mod_mono - 创建虚拟主机配置文件
/etc/apache2/vhosts.d/your-mvc-app.conf,内容如下:<VirtualHost *:80> ServerName your-domain.com DocumentRoot /var/www/your-mvc-app MonoServerPath your-mvc-app "/usr/bin/mod-mono-server4" MonoDebug your-mvc-app true MonoSetEnv your-mvc-app MONO_IOMAP=all MonoApplications your-mvc-app "/:/var/www/your-mvc-app" <Directory /var/www/your-mvc-app> AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> - 重启Apache服务生效:
现在访问你的域名或者服务器IP就能看到应用了。sudo systemctl restart apache2
5. 常见问题排查
- 遇到500错误?去看Mono日志
/var/log/apache2/mod_mono.log,里面有详细报错信息 - 确保应用的依赖dll(比如Entity Framework、第三方组件)都包含在发布文件夹里,Mono会自动加载
- 权限问题就给应用文件夹设置正确权限:
sudo chown -R wwwrun:www /var/www/your-mvc-app
内容的提问来源于stack exchange,提问作者Nikhil Phuge
相关产品推荐
相关产品推荐

