Web Deployment Overview
There are two ways to deploy web applications created with Xojo: Standalone and CGI. You can deploy your web apps to Virtual Private Servers (VPS) with proper configuration. Shared Hosting typically does not work due to general lack of configurability. For the simplest hosting and deployment experience, you should consider using Xojo Cloud.
A Standalone web application is an application that you manually run on your server. You have to start the application (usually from the command line) and leave it running in order to people to access the web app. In addition, a Standalone web application is accessed through a port, which you specify when building the app. Essentially, a standalone web application consists of both the web server and your web application.
A deployed standalone web app would be accessed with a URL such as this:
A web application built to use CGI uses Apache as its web server. The web server then communicates to your web application using CGI. To facilitate this, a companion Perl script (supplied when you build your application) handles communication between the web server and your web application.
Some web browsers (notably Safari) may continue to display a loading indicator even after the web page has finished loading. This is a result of the method used by the web server to communicate with your web application.
Because a CGI deployment uses your existing web server software, you do not have to specify a port when accessing your web application. A typical URL looks like this:
Your web application can be compiled for any of the platforms supported by Xojo. When it comes to web servers, Linux is the most commonly used operating system, followed by Windows and then OS X.
In complete opposition of the situation on the desktop, the majority of web servers use some form of Linux. The two most common types of hosting are shared and VPS (Virtual Private Server). Shared hosting usually costs less, but is also often rather restricted. Most shared hosting providers work best with static web sites or pre-configured tools (such as WordPress) and do not allow general purpose applications to run on them. They are rarely a good choice for a Xojo web application.
Your best bet is to use a VPS (Virtual Private Server) to host your Xojo web applications. A VPS gives you your own server, usually running the Apache web server, with its own specs running inside of a Virtual Machine (VM). With a VPS you have complete control over the server and configure it to run Xojo web applications.
Windows web servers primarily use IIS, but they can also run Apache. Windows servers are far less common than Linux servers. There are also fewer hosting companies offering Windows servers and they usually cost more. It is much more difficult to configure IIS for Xojo web apps than Apache.
OS X web servers typically use Apache and setup is mostly the same as it is for Linux. There are even fewer OS X servers than Windows, but OS X servers can be simpler to configure. There are no known hosting companies that offer OS X hosting, but there are several that offer colocation services for your own Mac hardware.
Test App for Deployment
To help you test deployment of Xojo apps on your web server, here are several versions of a simple compiled app for you to try.
- Verify that you compiled your web app as Standalone or CGI depending on how you are trying to access it.
- Verify that you compiled your web app for your Server platform and not your desktop platform.
- Be sure to set your Application Identifier to a unique value.
- Check the permissions for the files and folders containing your web application.
- Ensure that the web application and the libraries in the Libs folder are all set to be executable.
- For CGI web apps, ensure that you add "AddHandler cgi-script .cgi" somewhere in your Apache configuration or .htaccess file.
- For standalone applications or CGI applications that are not set to "Choose Port Automatically", make sure that the port you are using is open and available and that the web app is actually running. Port numbers should be <= 65535. If you are not a privileged user, the port should be >=1024.
- Always check your server logs to see if they have additional information.