CentOS下搭建.Net MVC4环境实践

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS下搭建.Net MVC4环境实践相关的知识,希望对你有一定的参考价值。

今年.Net开源和跨平台一直炒得很火热,可是作为开发人员一直没能实际看到实际能用到的东西。终于在博客园看到了那篇《ASP.NET跨平台最佳实践》(后来才知道jexus+mono的asp.net环境已经有好多年了),忍不住做了这个博客,在此记录一下环境搭建过程。

一、说明

程序环境:Asp.net MVC4 + EF6

运行环境:CentOS 6.5 + Jexus5.8 mono4.2 + postgresql9.4


遇到的问题还是先提一下:

1. 刚开始用MVC5一直报错找不到视图,不过可能是当时比较混乱,回来再测试一下,换到MVC4就没问题了(不过要注意dll的版本号要是4.0.0,从nuget里添加的默认4.0.0.1也会报错)。

2. vs2015发布的站点似乎用了新的roslyn作为动态编译器,这个在mono下还不能运行,暂时还是用2013吧。

3. EF6在mono环境下操作sqlserver的datetime类型字段会出错,大致是因为datetime的长短类型的问题,生成的sql在日期之前会加一个"T",造成时间格式不正确,可以考虑改为长整形存储时间戳来解决(然而最终没有用sqlserver),在此感谢群里的宇内大神,大半夜的帮我解决问题(似乎就是Jexus的作者),大家有问题可以加Jexus官方的群,群主非常热心。


二、过程:

1.  安装mono


yum安装

最简单还是用yum来装,方法来自mono官网:

http://www.mono-project.com/docs/getting-started/install/linux/

 

先为yum添加源

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 mono-devel


以上方法在本地虚拟机上是可行的,然而,今天部署到服务器时,服务器总是连不上download.mono-project.com这个源。没办法只好从源码安装。

 

用源码安装

1)首先更新系统

yum –y update

PS:这里如果像我一样之前在yum添加了不可用的源,需要先到/etc/yum.repos.d目录下,把添加的那个源删掉,否则总是卡在那个源上

 

2)安装Mono相关的库


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

 

3)安装libgdiplus


就是这里,旧的2.10版本我这编译不过去,可以到这里选择一个版本下载(这里用的4.2):

http://download.mono-project.com/sources/libgdiplus/

 

下载解压后,从源码安装:

./configure --prefix=/usr
make
make install

 

4)安装mono


这里用的是4.2.2.10,各版本下载在这里:

http://download.mono-project.com/sources/mono/

 

同样,下载、解压、安装:

./configure --prefix=/usr
make
make install

 

这里的编译安装需要很长一段时间 

 

至此,不论用哪种方法,mono安装好的话可以通过mono -V查看到版本信息

并可以用csharp命令进到Mono C# Shell,可以即时执行C#代码

吐槽:这个输出命令好长。。。

 

2. 安装Jexus


Jexus就很好装了,并且安装好就可以使用mono环境来解析.net站点,不需要配置(然而肯定是哪里默认配置好了,以后再研究)

 

官方首页就有下载:http://www.jexus.org/

这里使用5.8.0版本:http://www.linuxdot.net/down/jexus-5.8.0.tar.gz

解压后执行install进行安装

./install

启动jexus,默认使用80端口,启动之前确认下有没有被占用

/usr/jexus/jws start


启动成功后可以通过http://localhost/info看到欢迎页面

CentOS下搭建.Net MVC4环境实践

 

站点配置文件放在/usr/jexus/siteconf/目录中,具体配置方法可以看安装包里的readme文档 

 

3. 安装postgresql数据库

原本开发时搭配的熟悉的sqlserver,这时部署就需要一个linux环境下的数据库了,群里的大神们都推荐postgresql,这里就来试试。不过实际上代码数据层使用的EF,不需要修改任何代码就迁移过去了,和postgresql也没有什么亲密接触,后面再慢慢熟悉吧。


安装

这里用yum安装的,喜欢源码安装的也可以去官方的ftp下载源码 http://ftp.postgresql.org/pub/source/

 

首先去官方找到对应的yum源,更新到yum的库中

http://yum.postgresql.org/repopackages.php

这里选择一个和服务器对应的版本,我这里就是centos6 x86 64了,选的9.4版本(9.5似乎是测试版)

rpm -i http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-2.noarch.rpm

导入后就可以用yum安装对应的版本了

yum install postgresql94-server postgresql94-contrib

安装好后首先需要初始化

service postgresql-9.4 initdb

然后启动:

service postgresql-9.4 start

加到启动列表:

chkconfig postgresql-9.4 on


修改账户密码

postgresql默认的数据库用户postgres,密码为空,这里来修改密码

注:postgresql还会在Linux系统建立一个账户,也为postgresql,并且默认情况下需要切换到这个账号下才可以管理数据库(类似sqlserverwindows身份验证),所以这里先切换到postgres

su - postgres
psql

然后进到psqlshell

ALTER USER postgres WITH PASSWORD 'postgres';
select * from pg_shadow ;


配置访问规则

安全性配置,需要将允许访问的网段加到配置中

vim /var/lib/pgsql/9.4/data/pg_hba.conf


红框中,第一行设置允许本地访问,需要通过密码验证

第二行允许任意ip访问,不推荐这样设置

管理工具

管理客户端官方有提供一个pgadmin3

http://ftp.postgresql.org/pub/pgadmin3/release/


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

以上是关于CentOS下搭建.Net MVC4环境实践的主要内容,如果未能解决你的问题,请参考以下文章

CentOs7下搭建LAMP环境

基于centOs7下appium环境搭建

VMWare环境下centos7上的DHCP服务实践

怎样搭建web项目测试环境?

Linux下Jenkins服务器搭建

CentOS下安装TestLink