Sun Web Stack 1.4 November 13, 2008 Jeff Trawick 1. Summary and motivation 1.1. Introduction Sun Web Stack provides a collection of the technologies commonly known as LAMP (Linux, Apache, MySQL, PHP) as well as several additional commonly used Web Tier technologies. This collection exists today in OpenSolaris, and is commonly referred to as the OpenSolaris Web Stack (http://opensolaris.org/os/project/webstack/). While Sun Web Stack is a new product, architecturally it is a porting effort of the existing OpenSolaris Web Stack onto the following platforms: - Solaris 10 (SPARC and x86) - Red Hat Enterprise Linux (RHEL) 5 (x86) Feature parity across all three platforms is a primary requirement, thus it is a goal of the Sun Web Stack product to be strictly a port of the OpenSolaris Web Stack onto these platforms. This means the product will contain precisely the same version of each component and each component will be configured to support the same options and features as in OpenSolaris. Sun Web Stack is a subset of the components available under the umbrella of the OpenSolaris Web Stack project. The chosen subset may be expanded in future releases depending on customer interest. The software will be available without charge, but without product support, on Solaris 10 and RHEL 5 as it is for OpenSolaris. Support contracts will be available for purchase by customers. (Note: The direction for future releases of Sun Web Stack is to provide additional enterprise features which are not freely available. No such value adds are provided in this initial release.) This is the initial release of the Sun Web Stack product therefore it can be considered a baseline Major release, despite the 1.4 marketing release number. 2. Technical description 2.1. API and ABI compatibility There is no previous Sun Web Stack release, so the discussion here primarily covers future Sun Web Stack major and minor updates and how they relate to the compatibility characteristics of the various open source features. Each open source feature included within Sun Web Stack has its own notion of compatibility. For example, new Apache HTTP Server micro revisions, such as 2.2.1, 2.2.2, etc., are binary compatible with previous Apache HTTP Server 2.2.x micro revisions, whereas new Apache HTTP Server minor revisions, such as 2.0.x, 2.2.x, are not binary compatible with previous ones. With Apache Portable Runtime, on the other hand, only major revisions are not backwards compatible, and micro revisions are forwards and backwards compatible. Upgrades of the open source packages from one Sun Web Stack release to the next will be managed such that no incompatible changes are introduced within a minor Sun Web Stack release (1.4, 1.5, etc.), but instead will be postponed to the next major Sun Web Stack release (2.0, 3.0, etc.). These major Sun Web Stack releases will inevitably break API and ABI compatibility becasue of the need to maintain currency with the current stable versions of the various open source projects, which themselves only support a particular stable branch for a limited period of time. 2.1.1. Compatibility with other builds of the same open source software Some enterprise customers may be using commercial products which provide plug-ins or extensions for some of the open source features, notably Apache. It is a goal to maintain compatibility with the ABIs of the open source projects so that binary-only plug-ins or extensions can be used with the Sun Web Stack offering of that open source feature. For example, the Apache HTTP Server 2.2.9 included within Sun Web Stack should be compatible with binary modules for Apache 2.2.x (x<=9) provided that the same word size and a compatible compiler were used. In the event that market demands require that we ship a new incompatible version of a component before it is time for the next Major release of Sun Web Stack, the versioned directory structure permits shipping multiple versions of the same component. As with other aspects of Sun Web Stack, this is the same approach taken in OpenSolaris. 2.2. Configuration Settings Sample configuration files will be provided for each, as on OpenSolaris. 2.3. Services (daemon) Support Many of the features of Sun Web Stack are network services, which should be controllable by the standard platform interfaces, whether manually or with system startup and shutdown. 2.3.1. Solaris 10 SMF definitions will be provided for each service (Apache, lighttpd, MySQL, etc.) so that they can be controlled using the SMF interfaces. 2.3.2. RHEL 5 SysV Init scripts will be provided for each service. 2.4. Platform-specific features 2.4.1. Dtrace It is a long term goal of Sun Web Stack to provide Solaris-specific enhancements based on Dtrace for all key features. Several of the web stack features in OpenSolaris, including Apache and PHP, include such enhancements. Those will be retained on Solaris 10, but will not be available on RHEL 5. 2.4.2. 64-bit exploitation In OpenSolaris, 32-bit versions are provided for all binaries and 64-bit support is provided for selected features, including Apache and MySQL. 2.4.2.1. Solaris 10 64-bit support will match that in OpenSolaris. 2.4.2.2. RHEL 5 No 64-bit support will be provided. The 32-bit binaries will however be supported on both the 32-bit and 64-bit variations of RHEL 5. 2.5. Packaging and delivery This case delivers Sun Web Stack 1.4 as native packages for Solaris 10 (SVR4) and RHEL 5 (rpms). (Note: Sun Web Stack 1.4 will also support Update Center 2. A separate case will follow to cover that delivery; it is not part of this case.) 6. Interfaces 6.1 Imported Interfaces 6.1.1 OpenSolaris Web Stack component As documented in section 1, Sun Web Stack is a port of a subset of OpenSolaris Web Stack components. This case imports the definition of all these components from the following cases: Primary features: LSARC/2008/541 Apache and APR Updates LSARC/2008/191 Deliver Lighttpd 1.4.x into OpenSolaris LSARC/2008/126 memcached 1.2.5 to be included in OpenSolaris LSARC/2008/599 Update MySQL to 5.0.67 LSARC/2008/538 Including PHP 5.2.6 within OpenSolaris PSARC/2008/543 Python 2.5 for Solaris PSARC/2007/600 Including Ruby 1.8 with Solaris WSARC/2007/554 Deliver Squid into OpenSolaris PSARC/2008/065 Tomcat 5.5 Additional Apache modules: mod_dtrace, mod_fcgid, mod_jk: PSARC/2008/090 Additional Apache2 Modules mod_perl: PSARC/2007/586 Including Apache 2.2.6 with Solaris PHP extensions: APC, dtrace, idn, memcache, suhosin, tcpwrap, xdebug: PSARC/2007/656 PHP5 Feature Enhancements 6.1.2 New imported interfaces for Solaris 10 and Linux Interface: ST CLI (stclient) Stability: Stable Exporting Project: Sun Service Tag ARC V1.1 Case PSARC/2007/473 Used by: Sun Web Stack registration command (Appendix 2) 6.2 Exported Interfaces The following additional and/or modified interfaces are exported by this case: 6.2.1 Filesystem paths The web stack components are bundled in OpenSolaris, and their filesystem paths reflect that bundling in their use of system directories (e.g., /usr/apache2, /usr/mysql, etc.). SWS on Solaris 10 and RedHat is an add-on product and its files are not installed in system directories, other than SMF manifests (Solaris 10) and init scripts (RedHat). When porting to Solaris 10 and RedHat, filesystem paths were modified as follows from the existing OpenSolaris (bundled) locations: Configuration files OpenSolaris (existing) /etc/$component/* Solaris 10 /etc/opt/webstack/$component/* RedHat /etc/opt/sun/webstack/$component/* Run-time variable files OpenSolaris (existing) /var/$component/* Solaris 10 /var/opt/webstack/$component/* RedHat /var/opt/sun/webstack/$component/* All static files (binaries, libraries, docs, etc.) OpenSolaris (existing) /usr/* and elsewhere Solaris 10 /opt/webstack/$component/* RedHat /opt/sun/webstack/$component/* 6.2.2 Support Libraries (Project Private) In order to maintain feature parity with the OpenSolaris version of Web Stack components, the Sun Web Stack porting effort may include several private support libraries when the corresponding library in Solaris 10 or RedHat Linux is either missing or too far out of date to be useful. All the support libraries are Project Private and not documented for direct customer use. 6.2.3 New Command-line interfaces Sun Web Stack 1.4 has a simple command line installer. Future major releases of the product may (or may not) alter the installation procedure, so the current simple installer is Uncommitted. Installer CLI name Uncommitted Defined in Appendix 1 Installer CLI options Uncommitted Defined in Appendix 1 Installer meta package names Uncommitted Defined in Appendix 1 Installer meta package mappings Uncommitted Defined in Appendix 1 Registration CLI name Uncommitted Defined in Appendix 2 6.2.4 Solaris 10-specific items 6.2.4.1 SVR4 package names Feature Package name Stability ---------------------------- ------------ --------- Apache HTTP Server sun-apache22 Uncommitted Apache module mod_dtrace sun-apache22-dtrace Uncommitted Apache module mod_fcgid sun-apache22-fcgid Uncommitted Apache module mod_jk sun-apache22-jk Uncommitted Apache module mod_perl sun-apache22-perl Uncommitted lighttpd HTTP server sun-lighttpd14 Uncommitted memcached sun-memcached Uncommitted MySQL sun-mysql50 Uncommitted PHP sun-php52 Uncommitted PHP extension APC sun-php52 Uncommitted PHP extension dtrace sun-php52 Uncommitted PHP extension idn sun-php52 Uncommitted PHP extension memcache sun-php52 Uncommitted PHP extension suhosin sun-php52 Uncommitted PHP extension tcpwrap sun-php52 Uncommitted PHP extension xdebug sun-php52 Uncommitted Python sun-python25 Uncommitted Ruby sun-ruby18 Uncommitted squid sun-squid Uncommitted Tomcat sun-tomcat5 Uncommitted 6.2.4.2 SMF FMRIs for services These are modelled on the OpenSolaris SMF FMRIs, but use the package names to avoid any potential conflicts. Apache HTTP Server /network/http:sun-apache22 Uncommitted lighttpd /network/http:sun-lighttpd14 Uncommitted memcached /application/database/sun-memcached:default Uncommitted MySQL /application/database/sun-mysql50 Uncommitted Squid /network/http:sun-squid Uncommitted Tomcat /network/http:sun-tomcat5 Uncommitted 6.2.5 RHEL 5-specific items 6.2.5.1 RPM package names These are the same as in 6.2.1.1, SVR4 package names, except that the following packages aren't provided: Package Reason --------------------- ------------------------------------ sun-apache22-dtrace DTrace doesn't exist on RedHat sun-apache22-python25 RedHat-provided Python is sufficient sun-apache22-ruby18 RedHat-provided Ruby is sufficient 6.2.5.2 /etc/init.d scripts The native package names were used for the names of the init scripts. Apache HTTP Server sun-apache22 Uncommitted lighttpd sun-lighttpd14 Uncommitted memcached sun-memcached Uncommitted MySQL sun-mysql50 Uncommitted Squid sun-squid Uncommitted Tomcat sun-tomcat5 Uncommitted 7. References http://sac.sfbay/LSARC/2008/541 Apache and APR Updates http://sac.sfbay/LSARC/2008/191 Deliver Lighttpd 1.4.x into OpenSolaris http://sac.sfbay/LSARC/2008/126 memcached 1.2.5 to be included in OpenSolaris http://sac.sfbay/LSARC/2008/599 Update MySQL to 5.0.67 http://sac.sfbay/LSARC/2008/538 Including PHP 5.2.6 within OpenSolaris http://sac.sfbay/PSARC/2008/543 Python 2.5 for Solaris http://sac.sfbay/PSARC/2007/600 Including Ruby 1.8 with Solaris http://sac.sfbay/WSARC/2007/554 Deliver Squid into OpenSolaris http://sac.sfbay/PSARC/2008/065 Tomcat 5.5 http://sac.sfbay/PSARC/2008/090 Additional Apache2 Modules http://sac.sfbay/PSARC/2007/586 Including Apache 2.2.6 with Solaris http://sac.sfbay/PSARC/2007/656 PHP5 Feature Enhancements http://sac.sfbay/PSARC/2007/473 Sun Service Tags Version 1.1 ------------------------------------------------------------------------------- Appendix 1 Installer command user interface The install command resides in the user's download area and will install the native packages required to implement the desired feature, then call the registration script. Syntax: ./install [-h|-?|--help] [list-of-features] -h issue help messages -? and --help are synonyms list-of-features = one or more of the following feature keywords: keyword packages to be installed ------------------ -------------------------------------- amp sun-wsbase, amp-apache+, sun-mysql50, php52+ apache sun-wsbase, apache+, sun-mysql50 (dependency) mysql sun-wsbase, sun-mysql50 php sun-wsbase, php52+, sun-mysql50 (dependency) squid sun-wsbase, sun-squid lighttpd sun-wsbase, sun-lighttpd14 memcached sun-wsbase, sun-memcached python* sun-wsbase, sun-python25 ruby* sun-wsbase, sun-ruby18 tomcat sun-wsbase, sun-tomcat5 *sun-python25 and sun-ruby18 are only provided on Solaris 10; RedHat users must use the version provided with the OS apache+ includes sun-apache22 and all apache modules included in the platform. (mod_dtrace is only included in Solaris) php52+ includes sun-php52 and all php extensions included in the platform. (dtrace is only included in Solaris) amp-apache+ includes sun-apache22 and all apache modules included in the platform except mod_jk ------------------------------------------------------------------------------- Appendix 2 Registration command user interface The registration command normally is called automatically from the install script. It is included in the sun-wsbase package (always installed) and documented so that users can reinitiate registration later, or initiate registration after installing the native packages manually. The regtool will create a service tag and attempt to open the registration page in a browser window. If that does not succeed, regtool will report the file system location of the registration page and the user will need to open it within a browser in order to complete the registration process. The user will then be taken to a webapp hosted by the sysnet team on inventory.sun.com and the registration process is complete only after the user creates a Sun Online Account or logs in with an existing account. Syntax: /opt/webstack/bin/regtool [-h|-?|--help] -h issue help messages -? and --help are synonyms The tool has no additional command-line arguments in this release.