What web server do you recommend? - iis

For work, I need a free web server system to host a few web apps that I will develop. The server will be installed on Windows. The apps will need to be able to access a bunch of files on the intranet, and massage them. Mostly 10 people at same time will be using the apps. I would prefer to write code in .NET as it contains many great APIs, but I am not sure if the latest IIS Express has any major restrictions (number of clients connected to web server or database, etc.).
The other web servers I looked at (which are not .NET) are:
glassfish - seems that many are switching from it since Oracle stopped supporting it
wamp servers - there are many, the other day I installed wampserver and wrote an app in PHP to see how good it is. I must say PHP was very slow accessing my intranet files and processing them.
oracle weblogic server - never used it and have no idea how good it is
tomee - seems to be new and I do not know how good it is for web application development
I am wondering what do you recommend?
Thank you

first of all I very invested in TomEE. That here here is my feedback:
weblo, TomEE and GlassFish are java servers where wamp is a php/httpd one. Depending what you target it can be enough to make a choice (investment for java is more important than php).
If you choose java then weblogic is not free AFAIK.
Then TomEE is very close to TomEE giving you just all the power you need for web development so it is a safe choice (you'll benefit from a lot of integration and tools for free).
GlassFish is not bad by itself and the best way to select one server is to test it with a small app in your environment IMO.

Related

IIS/ASP.Net vs NodeJs/ExpressJS

I'm very new to NodeJs/expressJs, i read tons of articles on internet and still don't understand it
is NodeJs a web server like IIS ? if so can i host an asp.net app in NodeJS ?
Is expressJs a framework like ASP.NET ?
I currently work on both IIS ASP.NET applications as well as NodeJS/ExpressJS systems and the below is what I have noted to be different:
IIS:
Windows server based
Can have strict setups such as MVC etc
Built in deployment that compiles the entire website
Setup can take quite some time to create all modals and get all
plugins working etc
Services can take some time setup and modal mapping can be tedious
NodeJS/ExpressJS:
Not Windows based. I run this typically on an Ubuntu server with
Nginx to push the domain to the public
Easy to setup and fast to get something basic online
Does not natively compile and runs files as they are
Uses npm package manager with easy to install packages
Does not have strict setups but you can technically create your own
MVC style system
Code can quickly become messy however with the correct approach you
can manage the amount of code easily.
NodeJS is not a web server. It is a backend server (Such as a REST API etc)
ExpressJS sits ontop of NodeJS to add functionality and is essentially a framework. Coupled with jade/pug you can write js inside the html.

websphere: requested url was not found on this server

I am developing my first web application with EJB, JSF and JPA. I use rational developer for developement and test, and our server is an iSeries with websphere 8. I do not have access to the test and production server, i can only manage the one I locally installed for developement purpose.
So now, my web application is working perfectly on my local installation, but I can't make it work on the production or test server. I produce the EAR with Rational Developer, our sysadmin publishes it on the server, the logs show no error (everything seems fine), but when I then try to reach the application via browser, i get the message
404 not found: requested url was not found on this server
In locale, i have the application installed under
http://localhost:9080/<contextroot>/pages/login.jsf
I tried several different urls but I always get that error message:
http://<production_server_url>/<contextroot>/pages/login.jsf
http://<production_server_url>:80/<contextroot>/pages/login.jsf
http://<production_server_url>:9080/<contextroot>/pages/login.jsf
http://<production_server_url>/<contextroot>/
I asked the sysadmin to send me the screenshots of the steps he goes through when installing the app on the server to see if there was some difference in the configuration, but everything is the same. The contextroot is correct.
We have other web applications that run on the servers, but those are simple .war files, this is the first EAR we try to deploy (i.e. as such, websphere incapuslates war files into ear projects in order to run them)
We have no idea what to do, can anyone help?
What bothers me the most is that the deploy itself goes well, the app is installed and running, I just cannot reach it
Thanks
Solution: The application server was running on a different, non-standard port. As suggested by #Jarid i found the correct port under
<profile_config>/cells/<cellname>/nodes/<nodename>/serverindex.xml
at endpoint WC_defaulthost. I can access the application at
http://<production_server_url>:>WC_defaulthost_port>/<contextroot>/pages/login.jsf

How to replace IIS with Node.js for simple websites

I am coming from Microsoft world so please bear with me on this. I was told I could install node.js and use that as a web server instead of IIS. This is a very small business application. In IIS I can create virtual directory and point to the location of the web page and everything works just fine. Based on very little I read, I have few questions;
Is it possible to run node js as a windows service or any other form so that it runs for ever? I did find the forever package that I think I can use.
In IIS, I can create virtual directory set the port and thats it, I have myself a website.
I do not see any examples where I can use a directory where I have a web page, written in java script and point it to run as a web site. All the examples have some thing like server.js and that runs and routes the call. what is the other way to host web sites and use node.js to simple run as a fast web server.
I was told I could install node.js and use that as a web server instead of IIS.
This is true, but as you already found out then you are in charge of providing for things that IIS was already doing for you (e.g. automatically restart on reboot, or on crashes, hosting multiple sites by creating virtual folders, et cetera.)
You can indeed get all of these things worked out in Node.js and there are several libraries that help on each of these areas. It's not too hard but you'll need to do a bit of researching.
You can also run Node.js behind IIS. Take a look at iisnode http://tomasz.janczuk.org/2011/08/hosting-nodejs-applications-in-iis-on.html
Is it possible to run node js as a windows service or any other form so
that it runs for ever?
The library Forever takes care of restarting the site when it crashes...but I don't know if you can run it as a Windows Service. I haven't tried that.
In IIS, I can create virtual directory set the port and thats it,
I have myself a website.
I assume you are talking about a site that serves static HTML files, right? If that's the case that's very easy to support in Node.js either writing your own web server or using Express.js to serve static files.
I do not see any examples where I can use a directory where I have a web page,
written in java script and point it to run as a web site. All the examples
have some thing like server.js and that runs and routes the call.
Here is an extremely simple example to serve plain HTML files in Node.js https://gist.github.com/2573391 Don't use this in production, though. It's just an example and it does not have any kind of error handling or security.
what is the other way to host web sites and use node.js to simple run
as a fast web server.
As others have said, you should look into Express.js http://expressjs.com/ It provides some of the infrastructure that you are very likely going to need when building traditional web sites.
You say you're running a "very small business application" behind IIS. Unless it's written for Node.js (in JavaScript), it won't work.
There are no examples pointing to a directory and running that as a website, because that's not how things are done in Node.js. You write a Node.js-application and pull in a webserver-library.
Put simply, In Node.js, you don't embed the appliation in the webserver; you embed the webserver in the application.
When I used node.js, I redirected HTTP requests by a proxy server, nginx. I don’t know if you can directly bind node.js as an HTTP server, but for what’s it worth, nginx is pretty nice!
First things first, allow me to share an introduction. IMHO you should take this decision ( of moving from IIS to nodeJS) by adding various parameters. I belong to the Java & PHP community yet I use NodeJS to achieve extremely specific implementation where NodeJS perform the fastest ( fast IO, AJAX-JSON responses & more ). As you are coming with a Microsoft background you should bare with less comfortable solutions.
Yes, its possible to run NodeJs as a windows service and Forever will do fine.
and yes you can create "Virtual Directories" but by creating symbolic links to each of your customer's web site.
I recommend to take a good look at bouncy & express, If you're willing to take this step then these packages is just what you need.
Cheers!

What setup are people going with for Orchard CMS and multiple sites?

I've just joined the Orchard CMS movement, but I'm having some major meltdowns about the setup. Their site has too much documentation about what I'm not looking for and it's making it tough to figure this out.
I plan to run about 15 brand new websites on one web/sql server and I have a separate development machine. I plan to make some custom themes and modules to suite each website's common and specific needs. I want to use IIS 7 and MS-SQL 2008 on the production server.
So, should I:
Just create the Orchard sites on the production server itself (With Web Platform Installer) and port in any themes and modules as necessary?
Or create the sites on the dev machine and Publish to the production environment with WebMatrix and WebDeploy?
I hate to create hello world sites on the production server and add content, themes, modules, etc as I develop them as in option 1. Or, in option 2 doing the web deploy introduces some complications such as database schema deficiencies because the site's db was created on the dev machine's SQL server and WebMatrix doesn't handle porting in the db schema during the Web Deploy (does it?). It seems option 2 makes it a lot more complicated.
What are other people doing in this situation?
Definitely the second option. WebMatrix should handle DB deployment just fine. You might want to take any problems you've faced with this to the WebMatrix support or forums.
I routinely deploy sites from my dev box to production, fwiw.

How can we protect our MVC2 code?

In a normal ASP.NET Website there is a Web Deployment Project that we can use to pre-compile our entire website and then we can safely upload this project to our production server in order to protect our code.
What can we do for ASP.NET MVC 2?
Link to it as is available today (RTM version)
Visual Studio® 2010 Web Deployment Projects - RTW
Make sure you install the latest security patches for your operating system and hire a good network administrator. No kidding. No matter what you do if a hacker gains control over the server he will get the code under one form or another even if it is precompiled. This being said it is a good idea to precompile the application and deploy only the assemblies instead of the source code. You could also consider obfuscating it also but this is something usually done for client applications which you deploy to your users computers and less frequently done in server side applications because you control the server.

Resources