Tuesday, April 11, 2017

The AMP stack

I woke up one of these days wondering how good it could be the current status of the well-known AMP (Apache + MySQL + PHP) stack in Solaris 11.3 public (general availability) release repo(sitory). I wished it could shine but I soon realized I shouldn't expect something fascinating because this software bundle isn't mainstream in the Solaris platform and isn't coming from a support repository which is subject to more frequent updates or upgrades.

Anyway someone had to do the dirty work ;-) of checking the current status as frankly it's not so easy to find it out there on the Internet by simply querying Google or YouTube and so on...

So I started on a fresh Solaris 11.3 (release) text-install, at the time of this writing, running on the latest (5.1.18r114002) VirtualBox hosted at another Solaris 11.3 on x86-64, of course :-D

I started by searching the available packages on my release repo(sitory). But the "perfect" search was hard to construct as the man pages pkg(1) and pkg(5), although very descriptive, are rather verbose and difficult to understand in terms of a more practical day by day usage. Nevertheless, after a more thorough and time consuming reading I've managed to digest it and narrow it down to the following:

$ pkg search -o pkg.shortfmri '*:set:pkg.fmri:amp*'
PKG.SHORTFMRI
pkg:/amp@0.5.11-0.133
pkg:/group/feature/amp@0.5.11-0.175.3.0.0.30.0
pkg:/web/amp@0.5.11-0.174.0.0.0.0.0


Then I focused on the highest version available to me:

$ pkg list -a group/feature/amp
NAME (PUBLISHER)   VERSION                    IFO
group/feature/amp  0.5.11-0.175.3.0.0.30.0    ---

 
$ pkg info -r group/feature/amp
          Name: group/feature/amp
       Summary: AMP (Apache, MySQL, PHP) Deployment Kit ...
   Description: ... deployment of an AMP (...) stack ...
      Category: Meta Packages/Group Packages ...
                Web Services/Application and Web Servers (...)
         State: Not installed
     Publisher: solaris
       Version: 0.5.11
 Build Release: 5.11
        Branch: 0.175.3.0.0.30.0
Packaging Date: August 21, 2015 04:52:02 PM
          Size: 5.46 kB
          FMRI: ..:20150821T165202Z


By the way, although the very first command above is much more powerful (and flexible) for searches, in this particular case, the results of the two commands right above seems to be combined into a somewhat equivalent result from the simpler command:

$ pkg list -af amp
NAME (PUBLISHER)   VERSION                    IFO
amp                0.5.11-0.133               --r
group/feature/amp  0.5.11-0.175.3.0.0.30.0    ---
web/amp            0.5.11-0.174.0.0.0.0.0     --r


NOTE
If you were looking for some other "unknown" package, for instance, individually searching for apache, mysql or php packages, I believe you would appreciate the very first form of the package search command I've managed to construct.
Finally, let's proceed to the installation of the bundle (meta/group package) into a new boot environment (good practice) and inspect some of the results:

# beadm list
BE           Flags Mountpoint Space Policy Created

--           ----- ---------- ----- ------ -------
Solaris-11.3 NR    /          3.59G static 2017-04-09 01:59

solaris      -     -          3.87M static 2017-04-08 07:15 
  
# pkg install --be-name Solaris-11.3-AMP group/feature/amp
           Packages to install:  18
           Mediators to change:   1
       Create boot environment: Yes
Create backup boot environment:  No

DOWNLOAD           PKGS         FILES    XFER (MB)   SPEED
Completed         18/18     1091/1091  102.9/102.9  4.1M/s

PHASE                                          ITEMS
Installing new actions                     1446/1446
Updating package state database                 Done
Updating package cache                           0/0
Updating image state                            Done
Creating fast lookup database                   Done
Updating package cache                           1/1

A clone of Solaris-11.3 exists and has been updated and activated.
 

On the next boot the Boot Environment Solaris-11.3-AMP will be
mounted on '/'.  Reboot when ready to switch to this updated BE.

Updating package cache                           1/1


# beadm list
BE               Flags Mountpoint Space Policy Created

--               ----- ---------- ----- ------ -------
Solaris-11.3     N     /          3.20M static 2017-04-09 01:59

Solaris-11.3-AMP R     -          4.32G static 2017-04-11 11:09
solaris          -     -          3.87M static 2017-04-08 07:15

Watching the installation it seems that the meta/group package didn't pull-in the latest versions of Apache, MySQL and PHP available in the repository after all, but I'll have to confirm that in the sequence (yes, perhaps I should have inspected the meta/group package itself before taking any other action, but I'm going slow on the learning curve and having fun).

# init 6
...

# beadm list
BE               Flags Mountpoint Space Policy Created

--               ----- ---------- ----- ------ -------
Solaris-11.3     -     -          6.79M static 2017-04-09 01:59

Solaris-11.3-AMP NR    /          4.42G static 2017-04-11 11:09
solaris          -     -          3.87M static 2017-04-08 07:15

Now let's check what was actually installed on the system:

$ pkg list -a 
  `pkg search -H -o pkg.shortfmri '*:set:pkg.fmri:apache-2?'`
NAME (PUBLISHER)       VERSION                    IFO

web/server/apache-22   2.2.31-0.175.3.1.0.3.0     i--
web/server/apache-24   2.4.12-0.175.3.0.0.30.0    ---


$ pkg list -a 
  `pkg search -H -o pkg.shortfmri '*:set:pkg.fmri:mysql-5?'`
NAME (PUBLISHER)       VERSION                    IFO
database/mysql-50      5.0.91-0.171               --o
database/mysql-51      5.1.37-0.175.3.0.0.30.0    ---
database/mysql-55      5.5.43-0.175.3.0.0.30.0    i--
database/mysql-56      5.6.21-0.175.3.0.0.30.0    ---


$ pkg list -a 
  `pkg search -H -o pkg.shortfmri '*:set:pkg.fmri:php-5?'`
NAME (PUBLISHER)       VERSION                    IFO
web/php-52             5.2.17-0.175.3.0.0.25.0    --o
web/php-53             5.3.29-0.175.3.1.0.2.0     i--
web/php-56             5.6.8-0.175.3.0.0.30.0     ---


Et voilĂ ! That's Solaris! Almost always conservative :-D
Not the oldest, not the latest... Perhaps, just one before the latest...

All right, all right, :-D here's (at least I think so for the moment) the shortest, easiest, fastest, cleanest, finest, more clever way in finding out the actual packages that are pulled-in by the meta/group package:

# 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

 
The next steps (on subsequent posts) are the actual setup of:
 

Bottom line, for the latests, I'll have to build the AMP stack on my own, but in spite of that, Solaris 11.3 also individually offers newer versions of each of these packages so that I can have an overall later version of this stack.