Tuesday, April 11, 2017

The AMP stack (later)


So it's been verified that for the latests components on an AMP stack, one would have to build the AMP stack by hand. Instead of getting external packages or source code for the very latests versions let's try first to get the best from what's already available in the standard Solaris 11.3 release repository.

The "outdated" meta/group package for the AMP stack is as follows:

# pkg contents -r -o fmri -t depend 'group/feature/amp' 
FMRI
database/mysql-55
web/php-53
web/php-53/extension/php-apc
web/php-53/extension/php-mysql
web/server/apache-22
web/server/apache-22/module/apache-dtrace
web/server/apache-22/module/apache-fcgid
web/server/apache-22/module/apache-php53

 
It's known that the best (latest) main AMP stack components (IPS packages) already/publicly available (on the Solaris 11.3 release repository) are:
 
  • apache-24
  • mysql-56
  • php-56

Hence I'll start by inspecting if among all the dependent packages of each of these 3 "more updated" main packages one can find the corresponding ones required by the original ("outdated") meta/group package, that is, I'll look for:
 
  • apache-24/module/apache-dtrace
  • apache-24/module/apache-fcgid
  • apache-24/module/apache-php56
  • php-56/extension/php-apc
  • php-56/extension/php-mysql

But as you can see below it seems things can be a bit different with respect to PHP (php-56). I do not yet know if there are any substitutes for the missing packages' functionalities:

$ pkg search -o pkg.name '*:set:pkg.fmri:apache-24/module/*'
PKG.NAME
web/server/apache-24/module/apache-dbd
web/server/apache-24/module/apache-dtrace
web/server/apache-24/module/apache-fcgid

web/server/apache-24/module/apache-gss
web/server/apache-24/module/apache-jk
web/server/apache-24/module/apache-ldap
web/server/apache-24/module/apache-lua
web/server/apache-24/module/apache-security
web/server/apache-24/module/apache-ssl
web/server/apache-24/module/apache-ssl-fips-140
web/server/apache-24/module/apache-wsgi-26
web/server/apache-24/module/apache-wsgi-27
web/server/apache-24/module/apache-wsgi-34


$ pkg search -o pkg.name '*:set:pkg.fmri:php-56/extension/*'
PKG.NAME
web/php-56/extension/php-suhosin-extension
web/php-56/extension/php-xdebug


Fortunately, for PHP (php-56) it seems there's a nice solution right out-of-the-box. I've got to know about it when browsing the php-53 php(1) man page which says:
The PHP packages included in Solaris contain many PHP extensions. In order to use these extensions, you must enable them in a PHP configuration file.

Starting with PHP 5.6, Solaris provides a file "conf.d/extensions.ini" under the appropriate /etc/php subdirectory. You may uncomment lines in this file to enable the desired extensions.

To use PHP as an Apache web server module, you must configure Apache appropriately. Starting with PHP 5.6, Solaris provides a sample supplemental configuration file at /etc/apache2/2.4/samples-conf.d/php5.6.conf. To use it without modification, copy it into /etc/apache2/2.4/conf.d/.

The web/server/apache-22/module/apache-php53 package provides PHP 5.3 as a server module for Apache 2.2.

For PHP 5.6, an additional package is not required; an Apache 2.4 server module is included in the web/php-56 package.

Apache 2.2 support is not provided with PHP 5.6 in Solaris.

Now addressing the issue of setting up the communication between PHP 5.6 and MySQL 5.6, by browsing the man page of mysql-55 which is installed at /usr/mysql/5.5/man (although not automatically integrated into the man system), man -M /usr/mysql/5.5/man -s 1 mysqlman, I've go to know about where to find more information about MySQL: http://dev.mysql.com/doc/mysql/en, in fact, https://dev.mysql.com/doc/refman/5.6/en/ (for MySQL in general) and https://dev.mysql.com/doc/apis-php/en/ (for MySQL x PHP specifics). And from all this documentation, the good news seems to be that no additional setup is required to have them communicating nice and smoothly (but I intend to verify that later, of course).

Fortunately, it seems I'm pretty done with all preliminary checking for building my custom AMP stack from the best (latest) main components (IPS packages) already/publicly available (on the Solaris 11.3 release repository).

The next steps (on subsequent posts) are the actual setup of:
 
  • Apache 2.4
  • MySQL 5.6
  • PHP 5.6

PS:
Be happy because I've just got to know that it's possible to download the latest version of MySQL (5.7.18) from https://dev.mysql.com/downloads as long as you have an Oracle account (a matter of just registering). And even better is the fact that there's an option for downloading it as an IPS package (mysql-5.7.18-solaris11-x86_64.pkg.gz).

And chances seems to be that even if Oracle do not update its repository the other components can (with additional efforts) be independently updated/upgraded from the web as well.