在Linux(Ubuntu/openSUSE/CentOS)下安排ASP.NET(Apache + Mono)

【题外话】

闲的猥琐竟然想尝尝测试自己做的品种在不同操作系统上的特性表现,所以决定尝试在Linux上配备Apache和Mono的条件。由于平时很少接触Linux,所以从网上找了几篇著作(附在相关链接中)尝试,部署的过程也无须一帆风顺,所以就依照自己在Azure上布置的情事再一次举行了整治,希望对很少接触Linux的同桌有所襄助。以下有所操作均在Azure上的虚拟机里安排,倘诺在地面或者虚拟机里部署,可能首先还需要配备网卡设置等。

 

【作品索引】

  1. 在Ubuntu下安装Apache
  2. 在Ubuntu下安装Mono
  3. 在Ubuntu下部署ASP.NET网站
  4. 在openSUSE下的操作
  5. 在CentOS下的操作
  6. 相关链接

 

【一、在Ubuntu下安装Apache】

Ubuntu
Server安装将来,默认没有图形界面,其实在Linux不用图形界面也很容易就足以开展安排。在Azure上布置好Ubuntu
Server(这里运用Azure上提供的Ubuntu Server 12.04
LTS,2013/6/24)将来,会活动配置好SSH的22端口,我们能够直接拔取SSH工具连接服务器,这里运用免费开源的PuTTY(http://www.putty.org/)。假使在Azure上安排的应用密码连接主机则这里直接输入地方点击“Open”即可,假使还上传了SSH密钥,则还应在Connection/SSH/Auth里挑选相应的密钥才方可接连。

图片 1

连天后输入设置的用户名和密码即可登录Ubuntu系统,会产出如下图的命令行,我们所做的几乎拥有工作都是经过命令行操作的。

图片 2

在Ubuntu下安装软件其实非凡有益,Ubuntu提供了apt-get工具,可以行使该工具直接下载安装软件。

在Linux里,系统最高权力账户为root账户,而默认登录的账户并非root账户,例如不持有安装程序等权限,然而同Windows一样都提供了升级权限的艺术,就是sudo命令,在实施的每条命令前增长“sudo
”,即能够root账户的权力履行。在首先次使用sudo时会要求输入当前账户的密码,确认后即可在一段时间(默认5分钟)内采取sudo命令都不需要输入密码,一段时间没有选用后则需要再度输入密码。

第一大家设置Apache,输入下列命令,之后会提醒是否安装等,输入Y继续。软件包详情:http://packages.ubuntu.com/quantal/apache2

sudo apt-get install apache2

图片 3

等待一段时间后,Apache就会自动安装配置好,这时候可以配备好Azure上的80端口,配置好后接纳浏览器访问服务器的地点可以见见如下图的唤起,表达安装成功。

图片 4

 

【二、在Ubuntu下安装Mono】

Linux有个开源的.NET运行时,叫做Mono(http://www.mono-project.com/),可以帮助在Linux上运行.NET应用程序。

一如既往按上述方法输入下列命令安装Mono及C#编译器,软件包详情:http://packages.ubuntu.com/quantal/mono-gmcs

sudo apt-get install mono-gmcs

安装完后可以输入“mono
-V”查看安装的mono的本子(注意V是大写的),当然也足以写个C#的ConsoleApp看看,可以用下列命令编译C#代码。

gmcs test.cs

假设程序尚未问题的话则会生成test.exe,能够因此如下命令执行。当然也足以在Windows上编译好exe文件后复制到Linux上推行也是足以的。

mono test.exe

接下去遵照自己索要的本子选用安装Apache对ASP.NET 2.0要么ASP.NET
4.0的支撑,mono-apache-server2为ASP.NET
2.0的支撑,mono-apache-server4是ASP.NET
4.0,两者可以而且存在,切换需要在Apache的安排文件中切换。软件包详情:http://packages.ubuntu.com/quantal/mono-apache-server2

sudo apt-get install mono-apache-server2

不了然为何,安装到结尾会卡在那一个地点

图片 5

只好因而Ctrl+Z强制退出,然后输入“sudo
reboot”重启服务器,可是Linux服务器很快就能重启完

此后再安装Apache的模块libapache2-mod-mono即可。当然,mono-gmcs、mono-apache-server2、libapache-mod-mono都是足以协同安装的,可是要留心mono-apache-server2和libapache-mod-mono的依次,假如mono-apache-server2在libapache-mod-mono之后的话,由于依赖项的缘故,libapache-mod-mono会现在自动采纳安装mono-apache-server4。而且,如若一起装的话,在上述卡住的职务Ctrl+Z重启后,libapache-mod-mono并没有布置完成导致众多操作无法履行,还索要实施“sudo
dpkg –configure
-a”那句发号施令才行。软件包详情:http://packages.ubuntu.com/quantal/libapache2-mod-mono

sudo apt-get install libapache2-mod-mono

不过安装完要是打开网站发现依旧无力回天实施,其实是从未安排ASP.NET应用程序。即便现在补助活动配置应用程序,不过还是需要修改/etc/apache2/mods-available/mod_mono.conf文件。(原文见:http://www.mono-project.com/AutoConfiguration)当然即使你会手动配置应用程序的话也得以在该公文中手动配置应用程序(下同)。

sudo vim /etc/apache2/mods-available/mod_mono.conf

图片 6

按键盘上的i键启用vim的编纂情势,由于mono-server2-hosts.conf文件中早已对众多参数举行了配备,所以仅需要按图中的添加“MonoAutoApplication
enabled”一行即可。另外,倘使你的网站中还有任何的文件格式(比如HttpHandler日常使用.axd),请添加在第一行后边,此外假若网站默认文件不是index.aspx还索要修改第二行后的文本名。注意,由于Linux是分别轻重缓急写的,所以切记不要把大小写搞错。

即使服务器上还设置了ASP.NET
4.0的援助(mono-apache-server4),并且需要切换来ASP.NET
4.0,那么仅需要修改最终一行,将2改为4即可。

修改完后按Ctrl+C截至编辑情势,然后按冒号键(:)进入命令格局,输入w保存文件,然后再一次按冒号键,再按q键退出vim。

最终执行下述命令重启Apache服务器即可。

sudo /etc/init.d/apache2 restart 

 

【三、在Ubuntu下部署ASP.NET网站】

在Windows上布置网站可以经过远程桌面直接把网站或打包好的网站复制过去,在Linux下实际SSH不光可以辅助命令行,还足以支撑文件传输,我这边运用免费开源的Filezilla(https://filezilla-project.org/),Filezilla辅助FTP和SSH二种协议,在站点管理器中采取SFTP协议,然后把登陆类型设置为正常,输入用户名和密码即可登录。

图片 7

登录后默认的路径为/home/用户名/,就跟命令行下默认的目录一致。Apache的默认路径在/var/www/,可以在这之下找到index.html,也就是相当“It
works”的网页。不过这么些目录一般用户的权位为不可以写入,所以不可以将网站直接配置到这些目录下。当然你可以在PuTTY下将这多少个目录的权力修改后再上传,不过实在还足以有更简约的法门,就是将打包文件上传到用户目录下然后再解压缩到那么些目录下。

先是安装zip解压缩程序,软件包详情:http://packages.ubuntu.com/quantal/zip

sudo apt-get install zip

然后将急需上传的网站打包为zip文件,然后上传到用户目录下(/home/用户名/),然后在命令行中输入就可以了。

sudo unzip 压缩文件名.zip -d /var/www

理所当然,现在用你的浏览器访问你的服务器地址如故是“It
works”,我们还要删除index.html就足以了。

sudo rm /var/www/index.html

 

【四、在openSUSE下的操作】

今非昔比的系统利用不同的软件包管理程序,SUSE则提供了一个叫zypper的软件包管理程序,使用也非常有利(这里运用的openSUSE是Azure上提供的openSUSE
12.3)。

先是是设置Apache。

sudo zypper install apache2

与Ubuntu安装过程不同的是,在装置完成后并不曾启动Apache的唤起。所以还亟需手动配置服务自启动。

sudo systemctl enable apache2.service

下一场即刻启动Apache。

sudo systemctl start apache2.service 

今昔用浏览器就足以访问服务器了。

然后采纳zypper安装Mono了(其中System.Drawing会用到libgdiplus,多语言扶助会用到mono-locale-extras,然则固然如此还有部分组件没有安装,前边会表达):

sudo zypper install mod_mono libgdiplus mono-locale-extras

接下去需要配备mod_mono,这里推荐应用官方提供的http://go-mono.com/config-mod-mono/,页面打开后如下图所示:

图片 8

可以接纳Virtual
Host或者Application二种格局,第一种可以按照请求的服务器地址设置ASP.NET网站的根路径,第二种可以按照请求的虚拟目录设置ASP.NET网站的根路径。除此之外页面下方还有多少个设置可以自定义,设置完后挑选页面下方的Download下载.conf文件,将文件上传到openSUSE服务器后拔取如下命令复制到Apache配置文件夹下:

sudo cp 配置文件名.conf /etc/apache2/conf.d/

将来可以像Ubuntu一样给openSUSE安装上zip解压缩工具(sudo zypper install
zip),将压缩文件解压缩到安装的网站根目录后即可。之后只需要重启Apache服务器后就可以及时访问ASP.NET网站了:

sudo systemctl restart apache2.service

急需小心的是,这样成功后不像Ubuntu把过多凭借库都装上了,假若按上述命令的话只有以下部件被安装:

图片 9

之所以可能还有不少亟待的机件没有设置,比如需要连接Oracle数据库时,可能提醒找不到System.Data.OracleClient程序集,需要安装“mono-data-oracle”,到时候可以按照出现的不当再设置。其实也得以依照通配符安装“mono*”,把跟mono有关的都设置上,可是这样也会装很多不需要的机件。

 

【五、在CentOS下的操作】

CentOS的软件管理程序是yum(这里运用的CentOS是Azure上提供的CentOS 6.3)。

第一仍旧安装Apache。

sudo yum install httpd

与openSUSE类似,安装完需要自己手动配置服务自启动。

sudo chkconfig --levels 235 httpd on

接下来即刻启动Apache服务。

sudo /etc/init.d/httpd start

现今再用浏览器访问服务器地址就足以健康访问Http服务器了。

只是CentOS官方没有打包好的mono的rpm包,所以相比好的模式是友善编译。

第一配置好编译的环境。

sudo yum install gcc gcc-c++ bison pkgconfig glib2-devel gettext make freetype-devel fontconfig-devel libX11-devel libpng-devel libjpeg-devel libtiff-devel giflib-devel libexif-devel cairo-devel httpd-devel

或是会唤起需要提高kernel-headers,可是系统或者默认禁止了着力的包,所以只要出现上述命令无法推行安装的话,还需要在上一条命令之后附加“ –disableexcludes=main”,即如下的花样。

sudo yum install gcc gcc-c++ bison pkgconfig glib2-devel gettext make freetype-devel fontconfig-devel libX11-devel libpng-devel libjpeg-devel libtiff-devel giflib-devel libexif-devel cairo-devel httpd-devel --disableexcludes=main

假如一切安装成功,可以推行下列语句下载需要设置组件的源码包并解压缩。

cd /usr/src/
sudo wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-2.10.tar.bz2
sudo wget http://download.mono-project.com/sources/mono/mono-2.10.8.tar.bz2
sudo wget http://download.mono-project.com/sources/xsp/xsp-2.10.tar.bz2
sudo wget http://download.mono-project.com/sources/mod_mono/mod_mono-2.10.tar.bz2

sudo tar jxf libgdiplus-2.10.tar.bz2
sudo tar jxf mono-2.10.8.tar.bz2
sudo tar jxf xsp-2.10.tar.bz2
sudo tar jxf mod_mono-2.10.tar.bz2

编译并安装libgdiplus。

cd /usr/src/libgdiplus-2.10
sudo ./configure --prefix=/usr
sudo make ; sudo make install

接下来编辑/etc/ld.so.conf文件,添加一行“/usr/lib/”,如下图所示,保存之后再实践如下命令,从而使系统可以将libgdiplus.dll自动映射到对应的so文件中。(原文见:http://www.mono-project.com/DllNotFoundException

图片 10

sudo ldconfig

然后是Mono。

cd /usr/src/mono-2.10.8
sudo ./configure --prefix=/usr
sudo make ; sudo make install

接下去安装xsp。

export PKG_CONFIG_PATH=/usr/lib/pkgconfig
cd /usr/src/xsp-2.10
sudo ./configure --prefix=/usr
sudo make ; sudo make install

接下来安装mod_mono。

cd /usr/src/mod_mono-2.10
sudo ./configure --prefix=/usr
sudo make ; sudo make install

然后再修改“/etc/httpd/conf/mod_mono.conf”那些文件,与Ubuntu上同名的配置文件配置相同。不过出于不像Ubuntu下有现成的配备文件,所以需要在文书中添加如下两行,由于设置的时候自动安装了2.0和4.0的支撑,所以可以将如下的2换为4即可启用ASP.NET
4.0:

MonoServerPath "/usr/bin/mod-mono-server2"
MonoAutoApplication enabled

接下来将部署文件复制到Apache的配备文件目录中: 

sudo cp /etc/httpd/conf/mod_mono.conf /etc/httpd/conf.d/

由于CentOS自带的SELinux的来由,使得Apache无法连接到mod-mono-server,所以大家现在还索要配备SELinux。当然,这里为了简单就只是禁用SELinux,有趣味的可以协调成立安全策略,使mod-mono-server可以生效。这里修改/etc/sysconfig/selinux文件。将“SELINUX=enforcing”修改为“SELINUX=permissive”或“SELINUX=disabled”,例如下图,保存重启系统即可。

图片 11

从此就足以由此SSH将网站打包上传上去就足以直接访问了。可是需要注意的是,CentOS上的Apache默认的根路径在“/var/www/html”下,当然也得以在“/etc/httpd/conf/httpd.conf”文件中修改存放网站根目录的门路。

 

【六、相关链接】

1、配置linux(apache) + mono 下运行
asp.net:http://www.cnblogs.com/hcl0208/archive/2010/10/25/1860173.html 2、openSUSE上安装Mono并发布ASP.Net程序:http://www.linuxidc.com/Linux/2011-04/34872.htm 3、CentOS 6.0 安装
MONO
2.10.8:http://www.cnblogs.com/aquilahkj/archive/2011/11/03/2234380.html 4、Mono环境下不援助中文的解决模式:http://www.cnblogs.com/shanyou/archive/2010/10/08/1846198.html

相关文章