Web App Deployment Overview
From Xojo Documentation
There are three ways to deploy web apps created with Xojo: Standalone, CGI and Xojo Cloud. 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 with built-in SSL, one-click deployment and database support, you should consider using Xojo Cloud.
Xojo does not provide support for configuring your own web server to run Standalone or CGI Xojo web applications. If you require easy, one-click deployment of your Xojo web apps consider using Xojo Cloud. These topics give an overview of what is required, but many things can vary between web servers.
A Standalone web app is an app that you manually run on your server. Once you transfer the app to the server, you have to start the app (usually from the command line) and leave it running in order to people to access the web app. In addition, a Standalone web app is accessed through a port, which you specify when building the app. Essentially, a standalone web app consists of both the web server and your web app.
To start a standalone web app, use the command line. In its simplest form, you can just type the name of the web app:
You can also change many setting using command-line options. This command starts the web app on a specific port:
For more information about command-line options, refer to the Deployment Details page.
A deployed standalone web app would be accessed with a URL such as this that includes the port:
A web app built to use CGI uses Apache as its web server. The web server then communicates to your web app using CGI. To facilitate this, a companion Perl script (supplied when you build your app) handles communication between the web server and your web app. For most CGI deployment you can copy the entire build folder to the location on the server where you have configured CGI apps to reside (cgi-bin is common).
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 app.
Because a CGI deployment uses your existing web server software, you do not have to specify a port when accessing your web app. A typical URL looks like this:
Xojo Cloud is for those that want the fastest and easiest way to deploy web applications. Xojo Cloud is a fully managed, highly secure hosting environment for your Xojo web apps and has these features:
- Excellent security with free SSL support
- One-click deployment directly from Xojo
- Support for SFTP
- Unlimited app deployments (memory permitting)
Refer to the Xojo Cloud topic for more information.
If you decide not to use Xojo Cloud, your web app can be compiled for any of the OS platforms supported by Xojo. When it comes to web servers, Linux is the most commonly used operating system, followed by Windows and then macOS.
To build your web app, click the Build button in the toolbar. If it is not enabled, make sure you have also selected one of the platforms listed below. Build is disabled if only Xojo Cloud is selected.
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 apps to run on them. They are rarely a good choice for a Xojo web app.
Your best choice is to use a VPS (Virtual Private Server) to host your Xojo web apps. 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 can configure it to run Xojo web apps.
Windows web servers primarily use IIS (Internet Information Server), 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. If you are using a Windows server, it is recommended that you run a standalone Xojo web app configured to start as a service. If you wish to use IIS, it is recommended you use IIS as a reverse proxy to a Xojo standalone web app.
Mac web servers typically use Apache and setup is mostly the same as it is for Linux. There are even fewer Mac servers in use than Windows, but Mac servers can be simpler to configure. There are no known hosting companies that offer Mac web server hosting, but there are several that offer colocation services for your own Mac hardware.
Test Apps 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. Use them to verify that your web server provider will be capable of running Xojo web apps.
|OS Type||Deployment Type||Operating Systems||Download||Notes|
|32-bit||Standalone||Linux, Windows, Mac, Raspberry Pi||Download||Connect using port 8080.|
|32-bit||CGI||Linux, Windows, Mac||Download|
|64-bit||Standalone||Linux, Windows, Mac||Download||Connect using port 8080.|
|64-bit||CGI||Linux, Windows, Mac||Download|
If you are having difficulty getting a web app running on your server, perhaps these tips will help:
- 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 OS and not your desktop OS.
- Be sure to set your Application Identifier to a unique value.
- Check the permissions for the files and folders containing your web app.
- Ensure that the web app 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 apps or CGI apps 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.
Xojo does not provide support for configuring your web server for use with Xojo web apps. If you require easy, one-click deployment of your Xojo web apps consider using Xojo Cloud.
For more information about web app deployment: