Bu son derece basit bir sorgu olabilir, ancak node.js'yi Windows Server 2008 ortamında IIS ile kullanabilir miyim? Daha iyi çalışan bir "Microsoft" kütüphanesi veya başka bir çözüm var mı?node.js'yi IIS ile kullanabilir misiniz?
cevap
İzlenecek hızlı todo uygulamayı oluşturmak için Windows + IIS + node.js + mongodb kurmak için
http://www.amazedsaint.com/2011/09/creating-10-minute-todo-listing-app-on.html
Windows üzerinde node.js yükleyebilirsiniz, ancak bunun bir vekil olarak IIS kullanarak sürece bu yüzden, kendi sunucusudur, hiç IIS için gerek yoktur. Node.js's installation instructions alıntı Aşağıdaki olsa da, Not:
Ne [Windows] oluşturur tatminkar kararlı ama bir şey yayınlanmasını sağlamak mümkündür.
Windows'ta Node'yi Cygwin ile kullanıyorum ve birkaç sorun yaşadım. Varsayılan bağlantı noktası 80'de hizmet vermek için IIS'yi kullanabilir ve Düğüm uygulamalarınızı farklı bağlantı noktalarında çalıştırabilirsiniz.
sonra en vekil istiyoruz Nginx kullanıyorsanız.
Windows üzerinde build node.js ama nedeniyle olası kararlılık sorunları için kullanmak tavsiye edilmez olabilir. IIS, iş parçacığı tabanlı havuzlar kullanıyorsa,(linux tabanlı sistemlerde genellikle nginx genellikle bunu yapmak için kullanılır) node.js için kullanmamalısınız, çünkü havuz hızlı bir şekilde tam olarak yüklenebilir. Windows'ta node.js'ye benzer bir şey istiyorsanız, manos'a bakmaya çalışmalısınız. Eğer IISNode Project kontrol edebilirsiniz Emin
.
bu konuda bazı iyi haberler şimdi vardır:
Installing and Running node.js applications within IIS on Windows - Are you mad?
Hosting node.js applications in IIS on Windows
... hatta bir github projesi:
https://github.com/tjanczuk/iisnode/tree/master/src/samples
https://github.com/tjanczuk/iisnode
İlk bağlantı bozuk –
Sen aslında IIS üzerinden node.js uygulamasını çalıştırmak için iki güzergah var. sadece node.js bütün bir uygulamayı ithaf ve varsa Application Request Routing
kullanılarak
- IISNode
- Reverse Proxy varolan IIS Uygulaması üzerinden çalışmak için ortak karşılıklı bitiş noktası lazım, ARR kullanarak öneririm tüm siteyi yönlendirmek için. Bunu birkaç proje için yapıyorum ve gayet iyi çalışıyor. IIS vs senin düğüm kodunda yabancı uç noktaları yapıyoruz gibi görünüyor olarak
dürüst olmak gerekirse, ben, IISNode makbul değil. Çalışır ve Azure'u özellikle hedefliyorsanız, en iyi seçeneğiniz olabilir. Eğer mevcut bir .NET uygulamasında boynuzlamak zorundaysanız, en iyi seçenek de olabilir.
Mümkün olduğu kadar kolaylaştırmak istedim.iisnode ile
Sorunlar
Ben iisnode yüklü ve ben iisnode ile IIS üzerinde dağıtmak çalıştı hiçbir sorunla örnekleri ancak ...
koştu, ama benim meteor paketlemek zorunda uygulamasını ve ardından bir düğüm uygulaması olarak dağıtın. Kaçtığım problem beni kırdı. Hiç yüklemek için
fibers
alamadım. derleme süreci, trowing hatalarını tuttu, ben de vazgeçtim. Benim için bu çözmek için ne yaptık Ters Vekil IIS
IIS üzerinde bir ters proxy kullanmaktır.
see my post on meteor forum Benim son web.config girişi oldu
:
ben kullanmak IIS üzerinde ters vekil vardı aynı, ancak, yolu etki alanında bir alt klasör beni attı vermedi arasında.ROOT_URL kullanarak bir alt yolunu belirleyebileceğinin farkında değildim. benim meteor app klasörünün içindeki aşağıdaki komutu çalıştırırsanız
örnek: Ben
http://localhost:3100/n/todos
benim uygulamaya erişmek mümkün olacak
set ROOT_URL=http://localhost:3100/n/todos && meteor
, ihbar ben sondaki
/
atlanmış. numaralı adresehttp://localhost:3100/n
numaralı adrese veyahttp://localhost:3100/
no'lu adrese sörf yapmaya çalışırsak bizeUnknown path
numaralı bir hatayı verir.Bu nedenle, ilk önce ters proxy'yi kurduğumda, her seferinde
Unknown Path
hatasını alıyordum.benim IIS yapılandırmasına, ben eylemi url değeri olarak
http://localhost:3100/n/todos
belirtmek olduğu kapatır, lütfen ihbar sonunda "n/todos".Yani benim yeniden yazma kuralı böyle sona erdi: [dosyayı c @: /inetpub/wwroot/web.config]
``` <configuration> <system.webServer> <rewrite> <rules> <rule name="TODOs meteor app. Route the requests" stopProcessing="true" enabled="true"> <match url="^n/todos/(.*)" /> <conditions> <add input="{CACHE_URL}" pattern="^(https?)://" /> </conditions> <action type="Rewrite" url="{C:1}://localhost:3100/n/todos/{R:1}" /> <!-- I was missing the /n/todos here --> <serverVariables> <set name="HTTP_ACCEPT_ENCODING" value="" /> </serverVariables> </rule> </rules> <outboundRules> <rule name="TODOs ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="false"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^http(s)?://localhost:3100/(.*)" /> <action type="Rewrite" value="/n/todos/{R:2}" /> </rule> <rule name="TODOs RewriteRelativePaths" preCondition="ResponseIsHtml1" enabled="false"> <match filterByTags="A, Area, Base, Form, Frame, Head, IFrame, Img, Input, Link, Script" pattern="^/(.*)" negate="false" /> <action type="Rewrite" value="/n/todos/{R:1}" /> </rule> <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1"> <match filterByTags="A, Form, Img" pattern="^http(s)?://localhost:3100/(.*)" /> <action type="Rewrite" value="http{R:1}://localhost/{R:2}" /> </rule> <preConditions> <preCondition name="ResponseIsHtml1"> <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" /> </preCondition> </preConditions> </outboundRules> </rewrite> </system.webServer> </configuration> ```
Teşekkür
serin. Iis için yerleşik benzer bir şey var mı? –
Hiçbir fikrim yok, ama bundan şüphe duyuyorum. –