Asp.Net项目的部署到Linux中(Linux + Jexus+Nginx )
因为老项目用的Asp.Net Web API技术开发部署到Window系统上,而新项目用的是.Net Core部署到Ubuntu系统中,所以在管理切换上有些不便。于是决定将老项目的测试服部署到Ubuntu中,试试水。
一、简述
要实现Asp.Net项目部署到Linux中,必须要通过Mono。Mono就相当于Window中的.Net Framework 是Linux中的.Net 运行时,不但可以运行在Linux中也可以运行在Window中。
jexus是一款基于.NET兼容环境,运行于Linux/unix操作系统之上,以支持ASP.NET为核心功能的高性能WEB服务器。说白了就相当于Window中的IIS。jexus有专业版和通用版两个版本。Jexus专业版中自带Mono,不需要在客户服务器安装mono就能正常运行的Jexus版本,该版本只支持 64位Linux操作系统。Jexus通用版不带Mono,因此,使用者应该首先在客户机安装mono和libgdiplus。为了避免不必要的麻烦我选择专业版进行部署。
二、安装
2.1、下载:
地址:http://www.linuxdot.net/down/jexus-5.1.tar.gz
2.2、解压:
tar -zxvf jexus-5.1.tar.gz
2.3、安装:
解压后,就直接可以使用。卸载的时候直接删除这个文件夹就行,完全绿色版。
2.4、常用命令
启动:sudo ./jws start
重启:sudo ./jws restart
停止:sudo ./jws stop
2.5、测试
首先创建/var/www/default文件夹(这个文件夹是指定的默认网站路径),在文件夹中创建一个Index.aspx,写入
<%@Page Language="C#"%>
<%=DateTime.Now.ToString()%>
切换到jexus目录,启动jexus,然后请求Index页面。因为此Linux系统中只对外开放了80端口,并且80端口已经被其他项目占用。所以需要在jexus的siteconf文件夹中配置default文件中端口为8020。如果你的机器上没有部署过其他网站,那就不需要配置端口,只需要culr localhost。如果成功打印出时间,则配置成功。

三、jexus配置
jexus的配置文件是jws.conf,文件指明了网站配置文件的存放位置、日志、证书等等。下面为详细内容
SiteLogDir=log #网站日志以及Jexus系统日志的存放位置,必填项。可以使用基于jws.exe文件的相对路径
SiteConfigDir=siteconf #网站配置文件存放的位置,是必填项。可以使用绝对路径,也可以使用基于jws.conf文件的相对路径
Runtime=v4.0.30319 #设定Jexus工作进程运行于哪个.NET版本
httpd.processes=1 #工作进程的数量,建议每6-8核CPU用一个进程,最多可设4个进程
httpd.user=www-data #工作进程以什么用户身份和对应权限工作,默认为root
php-fcgi.set=/usr/bin/php-cgi,6 #如果需要Jexus同时充当PHP FastCGI服务器,这一句就是fast-cgi设置,分两个部分,逗号前为php-cgi这个文件的路径,逗号后是php进程数
CertificateFile=/xxxx/xx.crt #SSL证书路径(如果需要使用https协议才填)
CertificateKeyFile=/xxxx/xx.key #SSL密钥文件路径(如果需要使用https协议才填)
注:jws.conf 中,SiteConfigDir 和 SiteLogDir 两项是必填项。
在网站配置文件中,此文件夹默认有一个default文件,默认端口为80,默认网站资源路径为/var/www/default,上面测试例子就是用的最简单的配置。
配置时,首先要注意如下三个规则:
1)必须把所有网站配置文件放到jws.conf指定的网站配置文件夹内,这个文件夹除了网站配置文件,不能有其它任何文件,因为jexus会认为这儿的任何一个文件都代表着一个不同的网站。
2)每个网站有且只有一个配置文件,配置文件的文件名就是这个网站的名称,比如 www.mysite.cn这个网站,配置文件名可以写成“mysite”,当然也可以写成其它文件名,以便管理员容易记忆和识别,但要特别注意:文件名不能有空格!
3)一个网站可以拥有任意多的域名,不同网站不能有相同的域名,没有域名的网站只能有一个,这个没有域名的网站叫做“默认网站”,而一台服务器最多只能有一个默认网站。
如果你的机器上端口有多余,直接上传Asp.Net项目,新建一个网站配置文件,通过外网直接就可以访问了,本来到此应该配置完了。但是我的机器对外开放了80和443端口,所有的项目都是通过Nginx分发实现,所以上面测试的例子只能本机访问。
四、配置Nginx
如果你有其他域名,直接在Nginx中设置如下配置,Nginx就会将访问此域名的请求转发到对应的项目中处理。
server {
listen ;
server_name api.abc-cn.com(你的域名);
location / {
proxy_pass http://localhost:8060/;(本地配置的jexus地址)
}
}
由于我只有一个二级域名,所以让Nginx通过请求的URL来区分请求,分别转发。

Asp.Net项目的部署到Linux中(Linux + Jexus+Nginx )的更多相关文章
- 【tomcat 无法部署】svn上下载的maven项目无法部署到tomcat中
问题: svn上下载的maven项目无法部署到tomcat中,tomcat不识别项目,但是这个项目确实是web项目 发现的过程: 然后依次产看项目的编译版本: 项目的依赖架包: 才发现: 解决方法: ...
- vue项目如何部署到Tomcat中
vue项目如何部署到Tomcat中 1,假设你要访问的项目名称为'hms' 2,在Tomcat的webapps下创建hms文件夹, 3,配置config/index.js文件,build: {} 选项 ...
- linux中keepalived实现nginx高可用配置
linux中keepalived实现nginx高可用配置 安装keepalived 运行如下命令即可 tar -zxvf keepalived-2.0.8.tar.gz -C /usr/src cd ...
- ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案
.Net Core 部署到 SUSE 16 Linux Enterprise Server 12 SP2 64 位中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk ...
- MyEclipse2014中项目名更改后如何使用新的项目名部署到Tomcat中去
在项目中调试的时候突然发现我复制的项目(项目名修改过了)部署在Tomcat中运行的时候还是显示的是原来的项目名,以至于我使用新的项目名称作为URL请求竟然是404,我去,当时感觉就不怎么好了. 当然, ...
- linux中Apache更Nginx环境配置教程
想把Apache2.2换Nginx已经有些日子,今天给动手了.找了个稳定版本:1.4.1 http://nginx.org/download/nginx-1.4.1.zip 配置很简单,就是ngin ...
- Eclipse中的普通Java项目如何部署到Tomcat中
我现在的做法: 1.在Eclipse中配置Tomcat时,选择创建Context文件,而不是server.xml,好处是文件可以随便命名,与虚拟目录一致(即xml中的属性path).Tomcat加载项 ...
- 如何在IDEA中创建web项目并且部署到Tomcat中
步骤1:File->New Project, 步骤2:选择Project SDK为1.7 -> Next -> Finish(JDK)我自己的是1.7(这里的project,跟ecl ...
- Windows下docker的安装,将ASP.NET Core程序部署在docker中
参考文章: https://www.cnblogs.com/jRoger/p/aspnet-core-deploy-to-docker.html https://www.cnblogs.com/jRo ...
随机推荐
- Windows 注册表 16进制时间转换( Convert Reg_binary Time to a Datetime )
背景: Windows注册表中,存在大量16进制的时间,以 reg_binary存储在注册表中. 例如: 0D 6C A4 4B 37 C5 CE 01 这种值日常报表中需要转换为适合人阅读的格式,实 ...
- nmap 介绍
原文地址:http://drops.wooyun.org/tips/2002 原文地址:http://infotechbits.wordpress.com/2014/05/04/introductio ...
- 关于Android 8.0java.lang.SecurityException: Permission Denial错误的解决方法
背景 当我在Android 7.0及以下手机运行启动页,进行Activity跳转的时候,完美跳转到对应的目标Activity. 但当在Android 8.0及以上手机进行Activity跳转时,会爆如 ...
- Android中监控USB的插拔
一.需求 在Android应该开发过程中,用到了USB通讯,需要应用监控USB设备的插入和拔出,从而刷新USB设备列表. 二.实现 在使用时,需要register和unregister. 通过UsbD ...
- Python学习笔记-基础2
1.列表list 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 1.定义列表 names = ["Ronaldo","Messi" ...
- 新特技软件(Analyzer)添加新用户
新特技软件添加新用户的步骤比较多,记录下来,方便以后使用 安装完软件,处理好自己的AS以后,准备添加用户 步骤一: 我们要在安装Analyzer的服务器上添加新的Windows用户 步骤二:在Anal ...
- 传统asp.net小心 async/await坑
最近在改老项目时,干了一件自以为很有成就感的事,心想 “项目都是同步方法,为啥不用异步方法呢?”,于是有了异步方法,类型下面的代码(当然是举例子说明啊) //更新某人名下公司名称 public Tas ...
- CSS常见布局问题整理
实现div的水平居中和垂直居中 多元素水平居中 实现栅格化布局 1. 实现div的水平居中和垂直居中 实现效果: 这大概是最经典的一个题目了,所以放在第一个. 方法有好多, 一一列来 主要思路其实就是 ...
- 使用通配符和泛型:完成父子类关系的List对象的类型匹配
泛型和通配符 使用泛型和通配符都可以让一个方法所表示的算法逻辑适应多种类型. Java中具备继承关系的类A.B(A extends B)它们的集合List<A>和List<B> ...
- CentOS 7 - 更新JDK,删除旧JDK,安装新JDK
一,检查是否安装JDK. yum list installed | grep java 二,删除旧JDK. yum -y remove java-1.7.0-openjdk* yum -y remov ...