很早之前就开始关注.net跨平台,最近正好测试了下用EF6连接mysql,于是就想直接把网站扔进Linux。查了很多资料,鼓捣了两个晚上,终于成功。
这里我使用的是budgetvm的1G openvz vps,centos7 64位。原本按照普遍的做法编译mono,各种失败,之后在官网上看到了官方推荐的安装方法,简单有效。
1.在root权限下执行
rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
yum-config-manager --add-repo http://download.mono-project.com/repo/centos/
(若上面第二行执行失败,先执行下面一行,再重新执行上面第二行)
yum -y install yum-utils
前两行执行成功后,执行安装mono所有软件包
yum –y install mono-complete
安装完后,执行
mono –V
会显示mono版本信息,这里会安装最新的稳定版。2016年3月20日最新稳定版mono-4.2.3.4
2.安装jexus5.8.1
cd /tmp wget linuxdot.net/down/jexus-5.8.1.tar.gz tar -zxvf jexus-5.8.1.tar.gz cd jexus-5.8.1 sudo ./install
此时启动jexus会启动失败,查看日志发现80端口被占用,查看80端口占用情况,发现是centos自带的apache占用了80端口
3.卸载占用80端口的apache
rpm -qa|grep httpd rpm -e httpd
4.启动jexus
启动:sudo /usr/jexus/jws start 停止:sudo /usr/jexus/jws stop 重启:sudo /usr/jexus/jws restart 重启指定网站:sudo /usr/jexus/jws restart siteName 停止指定网站:sudo /usr/jexus/jws stop siteName
由于centos防火墙设置问题,需要开放80端口:
vi /etc/sysconfig/iptables 在其中增加一行 -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 保存后。重启防火墙 service iptables restart
此时,我们可以打开http://your ip/info 来查看你的jexus是否已成功启动,如http://www.jenyunet.com/info
5.配置网站
进入目录/usr/jexus/siteconf修改网站配置,具体见jexus官网。
6.支持的.net版本和mvc问题
有人说mono自4.2.1开始就已经支持mvc5了,但我把mvc5的网站放上去就报错,无法解决。
后来查看了下报错信息,发现mono-4.2.3.4支持的.net 对应版本是4.0.30319.17020 而.net4.5版本为4.0.30319.17929 .net4.5.1版本为4.0.30319.34003,
所以mono-4.2.3.4是不支持.net4.5及以后的版本的,所以mvc5也应该是不支持的
把网站从mvc5.2修改到mvc4,其中还报废了httpclint这个新玩意,传上去运行正常。我的项目