With this introduction post I am starting to write a series of blog posts about how to install the full production environment of Oracle Application Express aka APEX on a CentOS Linux 7 server. Usual APEX production environment involves such components as the OS itself, Apache httpd (or another web server), Apache Tomcat (or another supported application server), ORDS (Oracle Rest Data Services), APEX engine and Oracle Database. If you need something like this for your experiments or a startup, you're at the right place.
This series of blog posts assume you're familiar with Oracle software stack (database, APEX, ORDS) at least to a certain extent, but that you're new to Linux and installing all this on this OS.
Then I can openly say that this guide was inspired by well-done made almost the same guide by Morten Braten, although it was about the previous and sometimes outdated versions of the involved software and there are some specialties which I am covering in this guide. Frankly speaking, I personally sometimes used the Morten's guide when was installing and configuring the software for the first time.
There's also a bunch of scripts developed by Martin D'Souza and company which could help you automatically install all the needed software, however this is not the topic of this guide.
The main idea of the current guide is not just to help you with how to install this or that piece of software, but also to comment on each action and to explain why we need it.
Closer look at components
On the schema above (it's clickable) I wanted to show the role of each of the components in our setup. This setup was chosen intentionally, because it consists only of free software and can be obtained by anybody. Now we are going to stop on each component in detail.
CentOS Linux 7
I think it is redundant to explain why we need an operating system. Of course we need one, because without it our server is just a pile of metal. A more interesting question is why CentOS. And I have an answer - because it is a community driven version of a very reliable RPM-based commercial linux distribution called RHEL (Red Hat Enterprise Linux). Each time a new version of RHEL comes out, they have to share their source code to public (due to license limitations), and contributors of CentOS take this new version, re-brand, compile and distribute it for free (CentOS stands for Community enterprise Operating System). There's also another option - Oracle Linux, which developers do almost the same, but the CentOS community seems to be way bigger and it's much easier to find an answer on your question when you're stuck somewhere.
An RPM-based distribution, in its place, was chosen because Oracle distributes their express edition of the RDBMS only as the RPM-package. And to minimize potential problems with the setup, I went for CentOS (though it is still possible to install it on a Debian-based system or even on FreeBSD).
Oracle Database XE
APEX engine lives inside the Oracle Database. It's available for free and can be installed into its Express Edition as well, which is a totally free option. Current version of the RDBMS is 18c, and we are going to install exactly this release. Despite the fact that this is only a limited free version of the RDBMS, it offers a lot of great features, which were usually included only with the Enterprise Edition of it, and you are welcome to use them to your benefit.
APEX or Application Express is a low-code web development platform. Quoting the official website, it enables you to design, develop and deploy beautiful, responsive, database-driven applications using only your web browser. It is a free Oracle Database feature. APEX needs a web listener to function - and there are three options available at the moment:
- Embedded PL/SQL Gateway (EPG) - it is a built-in Oracle XDB feature. It is not recommended to be used in production environments, because it's not as fast and as reliable as other options. Though it surely could be used for development and testing purposes.
- mod_plsql with Oracle HTTP Server - this is an obsolete option which is not recommended to be used anymore.
- Oracle Rest Data Services (ORDS) - the option which is officially recommended for production use by Oracle and the one we will be observing here.
ORDS is a Java EE-based web application which can run in standalone mode or could be deployed to an application server such as Oracle WebLogic, GlassFish or Apache Tomcat. When run in standalone mode, it leverages a built-in web server powered by Jetty.
Besides being a listener for APEX, ORDS could be used to implement RESTful APIs for your databases. And by saying databases I mean relational databases, document stores and even Oracle NoSQL Database.
The Apache Tomcat software is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. It is a really powerful and fast application server, which is totally free piece of software and is community driven. At the time it is the most commonly used application server for Java applications.
In our setup it is going to be used because of ability to be flexibly configured and for security reasons. It is also much more convenient to use Tomcat service instead of standalone mode of ORDS.
Apache httpd is a standard de-facto when in comes to HTTP server software. I think it is extra to tell more about it. We are going to use it because it gives us even more freedom in configuration and because Apache httpd is the fastest solution when it comes to static files such as pictures, style sheets and so on. In our setup it will serve APEX static files and will be reverse-proxying requests to ORDS deployed to Tomcat using the special AJP protocol, which eliminates HTTP-like overhead.
And this is where I wanted to stop with the introduction part. In the next chapters we're going to start with OS installation and then proceed to everything else.
Be free to leave your comments on the above and stay tuned for the next chapters!
Here are the links for your convenience: