When we embarked on our website project, we were acutely aware that our budget would not accommodate the high costs of proprietary software. Our only feasible solution was to leverage Open Source Code software.
The Open Source Code universe is vast, brimming with diverse software options. The responsibility falls on the system analyst/programmer to select the software that aligns best with the project’s objectives.
For our project, we settled on Linux as our operating system. But this decision led us to another challenging question: Which Linux distribution should we choose? With countless Linux distributions, each boasting unique advantages and sometimes accompanied by paid services, the selection was not straightforward.
Our choice was Slackware Linux, as we believed it would best meet our requirements for stability and dependability. Slackware is known for its conservative approach, offering kernel versions and third-party libraries in its distribution package only after their stability and reliability are proven. This makes Slackware one of the most stable Linux operating systems available. For those seeking the latest Linux kernel and libraries, we would recommend exploring other distributions.
Another factor that influenced our selection of Slackware was its text interface. Although it may seem daunting initially, it ultimately leads to a deeper understanding of the Linux environment. Most of Slackware’s configurations are executed using text scripts.
With the operating system in place, we opted for Apache as our web server. Apache is a highly popular web server on the internet. For the server programming language, we selected PHP, another widely used programming language. Our experience with the Apache/PHP setup has confirmed its reliability, and it has performed exceptionally well in our production environment. For the workstation programming language, we chose JavaScript for its simple syntax and rich set of resources.
Apache web server is indeed a comprehensive solution, though it can become quite complex due to its numerous configuration options.
Our database of choice was Postgresql. With over 15 years of public availability, Postgresql is well debugged and offers a wealth of resources, making it one of the best Open Source Code database options. Despite its reliability, with cases reported of databases in production exceeding 4 terabytes, Postgresql is not the most popular Open Source Code database. This could be a matter of marketing.
Regarding PHP, we adopted an object-oriented application structure. Despite numerous PHP application structures available under Open Source Code license, object-oriented application is crucial as it simplifies programming and enhances scalability. It also helps separate PHP code from HTML, facilitated by specific libraries like Smarty. We utilized the Smarty library and found its cache functions particularly helpful in accelerating web page loading times.
An invaluable set of libraries for PHP systems is the PEAR libraries. Among the many libraries offered on the PEAR website, the database interface DB and the MAIL_QUEUE, which dispatches emails via the database, are noteworthy.
As we neared the project’s completion, we realized the necessity of real-time database replication. For this, we chose the DRBD and Heartbeat libraries. Our system went into production, and within three months, our server hard disk failed. Thanks to DRBD/Heartbeat, we could restore the system to production within seconds without any data loss. DRBD/Heartbeat replication operates through a LAN network between the server and slave nodes.
Our project also employed ImageMagick (for enlarging and reducing images), Iptables (firewall), Tsearch2 (text search in Postgresql) and Mon (Linux monitoring tasks).
The pseudo APC compiler for PHP is another vital library to mention, as speed is always a critical factor for internet sites.
Having launched our website, we can confidently say that the Open Source Code software we chose has proven to be highly reliable and stable. Open Source Code software certainly presents an excellent option for web development.