在CentOS上使用Razor视图运行ServiceStack
我已经从中克隆了RazorRockstars项目,并验证它在Windows上运行。 现在我想将它部署到带有Mono 2.10.8的Linux CentOS 6.3上。我遵循了本教程: 问题是我无法获得运行Razor视图的解决方案 我的mod_mono.conf文件如下所示:在CentOS上使用Razor视图运行ServiceStack,razor,centos,
servicestack,mod-mono,Razor,Centos,
servicestack,Mod Mono,我已经从中克隆了RazorRockstars项目,并验证它在Windows上运行。 现在我想将它部署到带有Mono 2.10.8的Linux CentOS 6.3上。我遵循了本教程: 问题是我无法获得运行Razor视图的解决方案 我的mod_mono.conf文件如下所示: <IfModule !mod_mono.c> LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so </IfModule> <
<IfModule !mod_mono.c>
LoadModule mono_module /usr/lib/httpd/modules/mod_mono.so
</IfModule>
<IfModule mod_headers.c>
Header set X-Powered-By "Mono"
</IfModule>
AddType application/x-asp-net .aspx
AddType application/x-asp-net .cshtml
AddType application/x-asp-net .asmx
AddType application/x-asp-net .ashx
AddType application/x-asp-net .asax
AddType application/x-asp-net .ascx
AddType application/x-asp-net .soap
AddType application/x-asp-net .rem
AddType application/x-asp-net .axd
AddType application/x-asp-net .cs
AddType application/x-asp-net .vb
AddType application/x-asp-net .master
AddType application/x-asp-net .sitemap
AddType application/x-asp-net .resources
AddType application/x-asp-net .skin
AddType application/x-asp-net .browser
AddType application/x-asp-net .webinfo
AddType application/x-asp-net .resx
AddType application/x-asp-net .licx
AddType application/x-asp-net .csproj
AddType application/x-asp-net .vbproj
AddType application/x-asp-net .config
AddType application/x-asp-net .Config
AddType application/x-asp-net .dll
DirectoryIndex index.aspx
DirectoryIndex Default.aspx
DirectoryIndex default.cshtml
DirectoryIndex default.aspx
MonoServerPath "/opt/mono/bin/mod-mono-server4"
LoadModule mono_module/usr/lib/httpd/modules/mod_mono.so
收割台设置X-由“单声道”供电
AddType应用程序/x-asp-net.aspx
AddType应用程序/x-asp-net.cshtml
AddType应用程序/x-asp-net.asmx
AddType应用程序/x-asp-net.ashx
AddType应用程序/x-asp-net.asax
AddType应用程序/x-asp-net.ascx
AddType应用程序/x-asp-net.soap
AddType应用程序/x-asp-net.rem
AddType应用程序/x-asp-net.axd
AddType应用程序/x-asp-net.cs
AddType应用程序/x-asp-net.vb
AddType应用程序/x-asp-net.master
AddType应用程序/x-asp-net.sitemap
AddType应用程序/x-asp-net.resources
AddType应用程序/x-asp-net.skin
AddType应用程序/x-asp-net.browser
AddType应用程序/x-asp-net.webinfo
AddType应用程序/x-asp-net.resx
AddType应用程序/x-asp-net.licx
AddType应用程序/x-asp-net.csproj
AddType应用程序/x-asp-net.vbproj
AddType应用程序/x-asp-net.config
AddType应用程序/x-asp-net.Config
AddType应用程序/x-asp-net.dll
DirectoryIndex.aspx
DirectoryIndex Default.aspx
DirectoryIndex default.cshtml
DirectoryIndex default.aspx
MonoServerPath“/opt/mono/bin/mod-mono-server4”
如果我将Default.aspx文件添加到/var/www/RazorRockstars文件夹中,我可以查看屏幕上的主页,但如果我单击链接(Henrix),我最终会收到一条错误消息,告诉我“在此服务器上找不到请求的URL/stars/dead/hendrix。”
这可能是一个简单的解决方案。我已经花了几个小时在谷歌上搜索答案,但没有找到解决方案。我们使用razor文件扩展名映射来处理mod_mono配置层中的razor文件,虽然没有什么特殊的需要,但您所需要做的就是确保请求通过ServiceStack ASP.NET主机
对其进行配置,使请求通过ServiceStack
目标应该是确保请求通过ServiceStack进行处理(ServiceStack到达后将处理其余的请求),因此您应该通过指定任何可能阻止请求的中间件层配置来避免阻碍请求
ServiceStack的Nginx+FastCGI Mono配置用于razor.ServiceStack.net
这是ServiceStack的nginx conf,我们使用它来托管nginx(在Ubuntu上),它位于/etc/nginx/sites available/ServiceStack.net中的一个单独的配置文件中:
server {
listen 0.0.0.0:80;
server_name razor.servicestack.net;
access_log /var/log/nginx/servicestack.net.log;
root /home/mythz/src/RazorRockstars/src/RazorRockstars.WebHost;
#get nginx to handle static files for better performance
location /img/ {
alias /home/mythz/src/RazorRockstars/src/RazorRockstars.WebHost/img/;
}
location ~* \.(ico|pdf|flv|swf|exe|html|htm|txt|css|js) {
add_header Cache-Control public;
add_header Cache-Control must-revalidate;
expires 1d;
}
#proxy all requests to monofastcgi backend + specify supported default documents
location / {
index index.html index.htm index.aspx default.htm Default.htm default.aspx Default.aspx Default.ashx default.cshtml;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
这是Mono FastCGI配置文件,用于指定保存在/etc/init.d/Mono FastCGI/ServiceStack.webapp中的所有ASP.NET web应用程序:
<apps>
<web-application>
<name>RazorRockstars</name>
<vhost>razor.servicestack.net</vhost>
<vport>80</vport>
<vpath>/</vpath>
<path>/home/mythz/src/RazorRockstars/src/RazorRockstars.WebHost</path>
</web-application>
...
<apps>
--appconfigdir/etc/init.d/mono fastcgi
指令要求托管*.webapp
fastcgi mono-config文件中包含的所有ASP.NET web应用程序,这些文件位于/etc/init.d/mono fastcgi
目录中
引擎盖下面发生了什么
当对razor.servicestack.net
的请求通过端口80时,它将由nginx处理,nginx与server\u name razor.servicestack.net上的第一个nginx配置块匹配代码>
location/{..}
指令告诉nginx将所有回退路由转发到端口9000上备份的fastcgi,该端口由fastcgi\u pass 127.0.0.1:9000指定代码>
该请求现在由FastCGI Mono处理,它将该请求定向到用razor.servicestack.NET
标识的ASP.NET web应用程序,该应用程序与servicestack处理程序一样,servicestack最终处理该请求
/usr/bin/fastcgi-mono-server4 --appconfigdir /etc/init.d/mono-fastcgi \
/socket=tcp:127.0.0.1:9000 /logfile=/var/log/mono/fastcgi.log