设为首页 收藏本站
查看: 913|回复: 0

[经验分享] 烂泥:nginx同时支持asp.net与php

[复制链接]

尚未签到

发表于 2018-11-8 09:57:29 | 显示全部楼层 |阅读模式
  本文首发于烂泥行天下。
  经过两天的实验,终于让nginx同时支持asp.net与php了。下面就把具体的配置过程记录如下。
  注意:本次实验OS:centos6 64bit。
  尽管网络上有很多windows下nginx与asp.net集成的资料,但是windows环境下一直未测试成功。以下的实验全部是在linux环境下进行的。nginx已经安装成功,并运行如下:
DSC0000.png

  在此我们讲解的nginx与asp.net集成不是通过nginx的反向代理功能,也不是使用windows提供的IIS,而是通过fastcgi_pass来处理asp.net的,然后把处理后的结果交给nginx。说白了就是把nginx作为web服务器。
  Nginx与asp.net集成需要分以下几个步骤:
  1、mono安装
  2、xsp安装
  3、nginx与asp.net集成
  4、测试集成效果
  一、mono安装
  要想使linux支持asp.net,我们必须要安装mono和xsp这两个软件包。
  mono软件包是Novell公司开发的跨平台.NET运行环境。
  目前mono最新版本的软件包为mono-3.10.0.tar.bz2,我们可以通过这个网址http://download.mono-project.com/sources/mono/。下载并上传到centos服务器上。如下:
  scp mono-3.10.0.tar.bz2 root@192.168.1.213:/root
DSC0001.png

  除了mono-3.10.0.tar.bz2这个软件包外,我们还需要安装xsp这个软件。
  xsp是小型的.Net Web服务器,可以单独作为Web服务器,其中的fastcgi-mono-server2/4也可作为nginx的fastcgi方式运行。
  目前xsp软件包最新版本为xsp-2.10.2.tar.bz2,我们可以通过这个网址http://download.mono-project.com/sources/xsp/。下载并上传到centos服务器上。如下:
  scp xsp-2.10.2.tar.bz2 root@192.168.1.213:/root
DSC0002.png

  我们先来解压并安装mono,mono软件包比较大,有70M左右解压速度比较慢。如下:
  tar -xvf mono-3.10.0.tar.bz2
DSC0003.png

DSC0004.png

  解压完毕后,进入mono软件包的解压目录,如下:
DSC0005.png

DSC0006.png

  在安装mono之前我们需要安装相关的软件包,如下:
  yum install gcc gcc-c++ glibc glibc-devel glib
DSC0007.png

DSC0008.png

  现在开始配置mono,如下:
  ./configure
DSC0009.png

DSC00010.png

  通过上图,我们也可以看到目前mono已经可以支持.net2.0到.net4.5。
  配置完毕后,现在开始make编译mono,如下:
DSC00011.png

  mono的make编译过程很慢,需要耐心等待。在此过程中,我们可以看到有很多的已lo结尾的文件。这些文件就是使用libtool编译出的目标文件。
DSC00012.png

DSC00013.png

  Make编译完毕后,我们就开始正式安装mono,如下:
  make install
DSC00014.png

  在安装过程中,如果你仔细观察的话,会看到mono默认安装到/usr/local/lib/mono目录下。而且根据Linux习惯默认的./configure的软件一般是在/user/local下。因为是库,所以文件是在/user/local/lib下。
  当然我们也可在编译时,通过./configure –help命令查看。如下:
DSC00015.png

DSC00016.png

  通过上图我们可以看出Linux的默认安装位置,确实和我们上边提到的是一样的。
  以下这张图是mono安装完毕的截图:
DSC00017.png

  安装完毕后,我们根据安装时提供的信息,来查看下mono的安装位置。如下:
DSC00018.png

DSC00019.png

  通过上图可以看到,mono确实安装到了/usr/local/lib目录下。
  现在我们来通过mono –V命令查看mono是否安装成功。如下:
  mono –V
DSC00020.png

  显示上图的信息,说明mono已经安装成功。
  注意:mono命令位于/usr/local/bin/mono路径下,如下:
DSC00021.png

  同时现在系统的环境变量中,已经存在/usr/local/bin,这个路径。如下:
  echo $PATH
DSC00022.png

  二、xsp安装
  mono安装完毕后,我们还需要安装XSP这个小型的.NET web服务器。解压并安装xsp,如下:
  tar -xvf xsp-2.10.2.tar.bz2
DSC00023.png

  配置xsp,如下:
  ./configure
DSC00024.png

  但是你会发现系统提示错误如下:
DSC00025.png

  为什么会提示出错呢?
  因为C#程序执行时必须需要动态链接库,故要添加在环境变量。而且有的链接库mono的编译器需要用,其内部使用的是pkgconfig工具,故要配置PKG_CONFIG_PATH环境变量。pkgconfig工具位于/usr/local/lib/pkgconfig这个路径下。如下:
DSC00026.png

  我们现在需要做的就是配置pkgconfig工具的路径使用export命令,如下:
  export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
DSC00027.png

  Pkgconfig工具的路径设置完毕后,我们再次配置xsp,如下:
DSC00028.png

  通过上图可以看到,现在xsp就没有报错了。
  xsp配置完毕后,我们现在来通过make编译该软件,如下:
  make
DSC00029.png

  xsp编译完毕后,我们现在来正式安装xsp,如下:
  make install
DSC00030.png

  xsp安装完毕后,我们就可以查看fastcgi-mono-server2/4这个程序。如下:
DSC00031.png

  通过上图,我们可以看到fastcgi-mono-server2/4这个命令就位于/usr/local/bin下。
  注意这个命令非常重要,我们在启动xsp这个.Net web服务器时,就是通过该命令完成的。
  三、nginx与asp.net集成
  以上就是mono与xsp的安装,下面开始与nginx进行集成。asp.net与nginx集成,我们是通过nginx的虚拟主机来实现的。
  修改nginx的配置文件nginx.conf,在http标签中添加如下命令:
  server {
  listen 80;
  server_name b.ilanni.com;
  charset utf-8;
  location / {
  root /ilanni/b.ilanni.com;
  index index.aspx index.html index.htm;
  fastcgi_pass 127.0.0.1:9001;
  include fastcgi_params;
  }
  }
  注意我们在前文中已经介绍过nginx与asp.net集成原理。Nginx通过fastcgi_pass来处理asp.net的请求,然后把处理后的结果交给nginx。而fastcgi_pass是代理xsp web服务器的。
  同时我们还要注意此时fastcgi_pass代理的xsp端口是9001,该端口可以任意定义,只要不要和系统中正在使用的端口冲突即可。
DSC00032.png

  这个文件修改完毕后,我们还需要修改fastcgi_params这个文件。
  我们只需要在该文件的最后边,添加一下两行代码即可。如下:
  fastcgi_param PATH_INFO "";
  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
DSC00033.png

  以上两个文件修改文件后,我们现在来启动xsp web服务器。使用入选命令:
  fastcgi-mono-server2 /applications=/:/ilanni/b.ilanni.com /socket=tcp:127.0.0.1:9001 &
  注意该命令中的/ilanni/b.ilanni.com是Nginx虚拟主机的根目录,127.0.0.1:9001为xsp使用127.0.0.1:9001这个地址。&表示该命令在后台运行。
DSC00034.png

  通过上图我们可以看到xsp服务器已经正常启动了,现在我们弄一个asp.net的探针来测试下。
DSC00035.png

  现在我们来访问Nginx的虚拟主机b.ilanni.com,如下:
DSC00036.png

  通过上图,我们可以很容易的看到。目前asp.net的程序已经可以访问了。
  四、测试集成效果
  通过以上的截图,我们很容易的看到。现在Nginx与asp.net已经完全集成。下面我们来看看php的集成。
  其实现在不应该说是Nginx与php集成,因为Nginx支持php也是通过fastcgi_pass来代理php-fpm,然后把请求的结果发给Nginx。
  现在我们再来新建一个Nginx虚拟主机,如下:
DSC00037.png

  访问虚拟主机a.ilanni.com。如下:
DSC00038.png

  到此为止,我们可以看到现在Nginx已经完全支持asp.net与php。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-632265-1-1.html 上篇帖子: Nginx日志分析和参数详解 下篇帖子: nginx的安装与配置小结
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表