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

【题外话】

闲的低俗竟然想尝试测试自己做的体系在分歧操作系统上的属性表现,所以决定尝试在Yutangux上布置Apache和Mono的条件。由于平素很少接触林玉堂ux,所以从网上找了几篇小说(附在相关链接中)尝试,安排的经过也决不八面玲珑,所以就依据自己在Azure上配备的状态再一次开展了整治,希望对很少接触Linux的同窗有所支持。以下有所操作均在Azure上的虚拟机里布署,假使在当地或者虚拟机里安排,可能首先还索要安插网卡设置等。

 

【文章索引】

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

 

【一、在Ubuntu下安装Apache】

Ubuntu
Server安装将来,默许没有图形界面,其实在林语堂ux不用图形界面也很简单就能够展开布置。在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里挑选相应的密钥才方可连绵不断。

C++ 1

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

C++ 2

在Ubuntu下安装软件其实越发有利,Ubuntu提供了apt-get工具,可以利用该工具直接下载安装软件。

在Yutangux里,系统最高权力账户为root账户,而默许登录的账户并非root账户,例如不负有安装程序等权力,然则同Windows一样都提供了进步权限的点子,就是sudo命令,在履行的每条命令前增加“sudo
”,即可以root账户的权限履行。在率先次使用sudo时会必要输入当前账户的密码,确认后即可在一段时间(默认5分钟)内选择sudo命令都不须要输入密码,一段时间没有选取后则须求再行输入密码。

首先大家设置Apache,输入下列命令,之后会唤起是不是安装等,输入Y继续。软件包详情:http://packages.ubuntu.com/quantal/apache2

sudo apt-get install apache2

C++ 3

伺机一段时间后,Apache就会活动安装配备好,那时候可以配备好Azure上的80端口,配置好后采用浏览器访问服务器的地址可以看看如下图的提醒,表明安装成功。

C++ 4

 

【二、在Ubuntu下安装Mono】

林和乐ux有个开源的.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文件后复制到林和乐ux上推行也是可以的。

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

不亮堂为啥,安装到最后会卡在这一个地方

C++ 5

只能够经过Ctrl+Z强制退出,然后输入“sudo
reboot”重启服务器,不过Yutangux服务器很快就能重启完

此后再设置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

C++ 6

按键盘上的i键启用vim的编辑形式,由于mono-server2-hosts.conf文件中一度对许多参数举办了安排,所以仅要求按图中的添加“MonoAutoApplication
enabled”一行即可。其余,即使您的网站中还有其余的文件格式(比如HttpHandler平常使用.axd),请添加在第一行前边,此外即使网站默许文件不是index.aspx还须要修改第二行后的文书名。注意,由于Yutangux是分别轻重缓急写的,所以切记不要把大小写搞错。

假如服务器上还设置了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协议,然后把登陆类型设置为常规,输入用户名和密码即可登录。

C++ 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/,页面打开后如下图所示:

C++ 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把众多依赖库都装上了,如若按上述命令的话唯有以下部件被设置:

C++ 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

C++ 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,所以大家现在还须求配置SEYutangux。当然,那里为了简单就只有禁用SE林和乐ux,有趣味的可以团结创办安全策略,使mod-mono-server可以生效。那里修改/etc/sysconfig/selinux文件。将“SELINUX=enforcing”修改为“SELINUX=permissive”或“SELINUX=disabled”,例如下图,保存重启系统即可。

C++ 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