公司的一个.NET项目要迁移到Linux生产环境中,于是开始折腾Mono。
简单介绍一下Mono,Mono是Novell主持的一个开源项目,它可以运行在Windows/Linux/FreeBSD/Unix/Mac OS和Solaris中。Mono包括C#编译器和CLR。
由于生产环境是openSUSE,所以开发机也部署相同的操作系统。我现在用的是openSUSE 11.3。可以从openSUSE的官网下载11.3的DVD安装包。
前提工作:
1.安装openSUSE是不用说的了。
2.进入openSUSE,通过”Install/Remove Software”从DVD中安装apache2/mysql/mono。可以把mono的开发环境也一并装上,方便调试开发。
各个基础软件装好后,现在开始整合。
1.默认安装的apache2是不会自动启动的,因此我们需要手工开启apache2的服务。打开终端,输入:
linux-9w69:/ # service apache2 status Checking for httpd2: unused
我们可以看到apache2的状态是未开启的。现开启apache2。
linux-9w69:/ # service apache2 start Starting httpd2 (prefork) done
如果每次都要手工开启apache2的服务,显然太麻烦了,我们把apache2设置为服务自动开启。
linux-9w69:/ # chkconfig --list apache2 apache2 0:off 1:off 2:off 3:off 4:off 5:off 6:off linux-9w69:/ # chkconfig --level 2345 apache2 on
这样就把服务打开了。
2.mysql的配置也是一样的。我们也把mysql设置为自动启动。
linux-9w69:/ # chkconfig --list mysql mysql 0:off 1:off 2:off 3:off 4:off 5:off 6:off linux-9w69:/ # chkconfig --level 2345 mysql on
MySQL因为是默认安装的,root帐号的默认密码是空的,我们需要给mysql的root帐号设置一个密码。
linux-9w69:/ # service mysql start Starting service MySQL done linux-9w69:/ # mysqladmin -u root -p password '你的密码'
OK,到这一步我们把mysql也配置好了。
3.现开始修改apache2的配置让它支持mono。
linux-9w69:/ # whereis apache2 apache2: /etc/apache2 /usr/lib/apache2 /usr/include/apache2 /usr/share/apache2 linux-9w69:/ # cd /etc/apache2 linux-9w69:/etc/apache2 #
找到apache2的配置文件目录,这里是“/etc/apache2/”,编译“httpd.conf”,在它的
Include /etc/apache2/vhosts.d/*.conf
这一行下面添加:
Include /etc/apache2/conf.d/mod_mono.conf
让apache2支持Mono。
默认安装的apache2网站根目录是“/srv/www/htdocs”,进入这个文件夹,我们创建一个”firstpage.aspx”的页面。内容如下:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head runat="server">
<title>default</title>
<script runat="server">
</script>
</head>
<body>
<form id="form1" runat="server">
<%=DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")%>
</form>
</body>
</html>
我们之前有修改apache2的配置,所以需要先重启apache2。
linux-9w69:/etc/apache2 # service apache2 restart Syntax OK Shutting down httpd2 (waiting for all children to terminate) done Starting httpd2 (prefork) done
好了,现所有的工作都完成了。
打开浏览器访问http://localhost/firstpage.aspx,我们会看到当前页面显示了系统时间 。
import *;
String int=char;