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看到欢迎页面
站点配置文件放在/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,并且默认情况下需要切换到这个账号下才可以管理数据库(类似sqlserver的windows身份验证),所以这里先切换到postgres
su - postgres psql
然后进到psql的shell
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环境实践的主要内容,如果未能解决你的问题,请参考以下文章