Why Utilize Zend Server Community Edition
At work, we were looking to see where we were going as far as future PHP versions and maintaining our production environments it was appealing to see the Zend Server offering. After receiving the email about the public beta, I decided to give this a test spin and the results of which was taken with high regard.
The Zend Server actually hooks into your existing package management system for Linux machines. This helps to manage the dependencies that are required for PHP as well as making it easy for the system administrators to administer upgrades. While the Zend Server has not been perfected it is certainly a step in the right direction.
This allows us to easily add new servers to our production environments with little to no effort since many of the dependencies are already managed for us. This alone saves the sysadmin staff quite a bit of effort. Further upgrading to the latest version is much more simple than recompiling. Not to mention the eye-candy of the Zend Server control panel.
The advantages I’ve summed up quite a bit in the overview above, however, this did not include all of the above items.
Zend Control Panel
The Zend Control panel allows you to be able to enable and disable different server configurations easily including the management of extensions and directives. While this doesn’t seem like much at first, it really helps to be able to see what the different configurations are for each extension that is enabled or disabled between each server. Further, having all of the extensions and configuration values stored the way they were, we were able to add these to source control and have a deployment process to create our new servers at ease with a consistent configuration.
The log files that are being watched are configurable through an XML file located at gui/application/data/logfiles.xml. Here you can customize the logs that are being watched in each individual server. We added our applications files local to each machine to be able to see a quick glance if there is any problems on that particular machine.
The maintainability is in the hands of Zend to keep the system package system maintained and the sysadmin to continually update the machine. This helps seeing as many sysadmins would like to utilize the package management system and then end up utilizing versions of PHP that are no longer relevant.
Installations and upgrades are extensively easier by being able to issue your package managers install and update commands.
The Zend Extensions that come along with the Zend Server Community Edition are the Zend Data Cache, Zend Debugger, Zend Guard Loader, Zend Java Bridge and the Zend Optimizer+. The main one of these that we were very pleased with was the Zend Data Cache which has APC compatibility functions minimizing the issues that we would have faced otherwise.
On another note, pecl and pear are available out of the box and worked great.
While we certainly enjoyed getting the Zend Server installed there was still a few minor headaches along the way. While our requirements and server setups can sometimes be fairly unique it is always hard to predict everything.
Apache Configuration Files
The Zend Server control panel utilizes the apache web server through a few configuration files that get installed in the conf.d directory. I believe the hope was that we were including everything within that directory. This was the first and foremost issue since the Zend Server control panel does not really function without those configuration files loading. As well as PHP will not function from the Zend location unless added in by hand. So you will want to ensure that you are either including the contents of the apache conf.d directory or that you add the following lines into the httpd.conf of apache:
We had a few issues with getting a few extensions that we utilized installed properly. The following extensions caused us a few issues.
This extension was not the latest from the PECL package. This caused us issues specifically around the addServer commands. We needed to manually install this package over the package that was installed by default by issuing the ‘pecl install memcache’ command.
By default there is no package for Pspell in the Zend repository. In order to get Pspell support you will need to install the ‘php-source-zend-ce.noarch’ package. The following are the commands that we needed to run under YUM:
yum install php-source-zend-ce
yum install aspell aspell-devel aspell-en aspell-es
make && make install
Zend Server Control Panel
While we enjoyed the Zend Server control panel, there was many instances where there was missing features or items that we would have liked to see:
Presently the Zend Server control panel has a master password and no actual user management areas. This would have been appreciated to give developers access to certain areas such as the log files, read only access to the php information and disallowing the developer to reboot the machine while we would give the sysadmins access to all of their relevant areas.
It would have been nice to specify a server cluster and have the Zend Server control panel be able to compare the information that is in each of those control panels as well as being able to manage the configuration of each server individually as well as globally.
The Zend Server is currently a release behind the latest PHP release (5.2.8 instead of 5.2.9). Further the Zend Server includes the Zend Framework by default which is already behind as of today (1.7.4 instead of 1.7.7).
While the Zend Server has certainly made a step in the right direction, I believe that it will take a little while to mature. I am looking forward to see where this is going to end up and appreciate the effort that Zend has started to go through to ensure the success of PHP; by even this simple step, this is allowing us to help promote and evangelize PHP to sysadmins that are in love with their package manager.
I also would like to note, that I am interested in how this works with the Zend Platform or how Zend Server Professional Edition works with the Zend Platform. If someone would like to answer that it would be great!