2011/06/01
1 Jun, 2011

Build a RPM Package of the WSO2 WSF/PHP 2.1 for Zend Server 5

  • Antonio Musarra
  • IT Senior Consultant - WSO2

Content

  • Introduction
  • Creating the RPM package WSO2 WSF/PHP
  • Installing the package WSO2 WSF/PHP
  • Resouces
  • Conclusions

Introduction

In this tutorial we will see how to build the RPM package of WSO2 WSF / PHP 2.1 or later to be installed Zend application server. Following are the main requirements to build the RPM package for WSO2 WSF/PHP.

  • A development machine with the installation of Linux development tools
  • Zend Server 5.x (Community Edition or Enterprise Edition)
  • RPM Spec file for WSO2 WSF/PHP 2.1

To build this package, it's a good idea to use one of the distributions suggested by Zend, which supports the RPM format. Refer to the document Choosing Which Distribution to Install which gives a complete table of the Linux distributions that supports the installation of RPM packages. I recommend you to use the same Linux distribution (suggested by Zend) for both test and production environments.

Creating the RPM package WSO2 WSF/PHP

My setup for this tutorial is as below:

  • Linux Distribution CentOS 5.6 x86_64 on VirtualBox 4.0.6
  • Zend Server 5.1 Community or Enterprise Edition (PHP 5.2)

Build the RPM package with the follwing steps:

1. Download the source WSO2 WSF/PHP 2.1

# cd /usr/src/redhat/SOURCES
# wget https://dist.wso2.org/products/wsf/php/2.1.0/wso2-wsf-php-src-2.1.0.tar.gz

2. Checkout RPM spec file wsf-zend-server.spec

# cd /usr/src/redhat/SPECS
# svn export https://svn.wso2.org/repos/contrib/wsf/php/trunk/build/packaging/rpm/wsf-zend-server.spec

3.Build the RPM package

# cd /usr/src/redhat
# rpmbuild -bb SPECS/wsf-zend-server.spec

The last command, rpmbuild, performs all actions shown on the spec file, generating the end of the RPM package by placing it in the build /usr/src/redhat/RPMS/x86_64/. The generated package is called WSO2-wsf-php-2.1.0-1.x86_64.rpm, you can test a range of information on the package you just created using the command:

# cd /usr/src/redhat
# rpm -qp RPMS/x86_64/wso2-wsf-php-2.1.0-1.x86_64.rpm

The command output should be similar to this:

Name       : wso2-wsf-php       Relocations: (not relocatable)
Version    : 2.1.0              Vendor: WSO2 Inc. https://wso2.org
Release    : 1                  Build Date: Tue 03 May 2011 06:55:34 PM CEST
Install Date: (not installed)   Build Host: shirus-fe-testlab.localdomain
Group      : Development/Tools  Source RPM: wso2-wsf-php-2.1.0-1.src.rpm
Size       : 24598922           License: Apache License V2.0
Signature  : (none)
Packager   : Antonio Musarra <[email protected]>
URL        : https://wso2.com/products/web-services-framework/php/
Summary    : WSO2 WSF/PHP 2.1 Web Services Framework for PHP (Build for Zend Server 5.1)
Description : WSO2 Web Services Framework for PHP (WSO2 WSF/PHP), a
              binding of WSO2 WSF/C into PHP is a PHP extension for
              providing and consuming Web Services in PHP. WSO2 WSF/PHP
              supports SOAP 1.1, SOAP 1.2, WSDL 1.1, WSDL 2.0, REST style
              invocation as well as some of the key WS-* stack specifications
              such as: SOAP MTOM, WS-Addressing, WS-Security,WS-SecurityPolicy
              and WS-ReliableMessaging.

Installing the package WSO2 WSF / PHP

The package you created earlier is now ready to be installed on the target machine, in our case the target machine is the same one used to build the package. Follow the steps below to install the package:

  • Install the software in to the directory /opt/wso2
  • Install the code samples and documentation in the document root of the web server
  • Install the module in wsf /usr/local/zend/lib/php_extensions/
  • Create and install in /etc/profile.d/ the file that sets the necessary environment variables
  • Create and install in /usr/local/zend/etc/conf.d/wsf.ini the file that contains the module configuration wsf/php
  • Runs through the configuration of the Dynamic Linker ldconfig
  • Runs the restart Zend Server to load the module wsf.so

To install the package simply run the command shown below, you can still perform an audit installation using the command rpm with --test option.

# cd /usr/src/redhat
# rpm -ihv RPMS/x86_64/wso2-wsf-php-2.1.0-1.x86_64.rpm

The installation performs all the steps listed above, the output from the installation phase should be similar to the following:

Preparing...             ############################# [100%]
 1:wso2-wsf-php          ############################# [100%]
Running ldconfig... 
Restart Zend Server...
Restarting Zend Server 5.1.0 ..

Stopping Zend Server Monitor node [OK]
Stopping httpd: [ OK ]
Stopping Session Clustering daemon [OK]
Stopping JobQueue [OK]
Stopping Zend Server GUI [Lighttpd] [OK]
Starting Zend Server Monitor node [OK]
[ 06.05.2011 14:12:54 SYSTEM] watchdog for monitor is running.
[ 06.05.2011 14:12:54 SYSTEM] monitor is running.
Starting httpd: [ OK ]
Starting Session Clustering daemon [OK]
[ 06.05.2011 14:12:56 SYSTEM] watchdog for scd is running.
[ 06.05.2011 14:12:56 SYSTEM] scd is running.
Starting JobQueue [OK]
[ 06.05.2011 14:12:57 SYSTEM] watchdog for jqd is running.
[ 06.05.2011 14:12:57 SYSTEM] jqd is running.
spawn-fcgi: child spawned successfully: PID: 29907
Starting Zend Server GUI [Lighttpd] [OK]
[ 06.05.2011 14:12:59 SYSTEM] watchdog for lighttpd is running.
[ 06.05.2011 14:12:59 SYSTEM] lighttpd is running.

Zend Server started...

Copied samples folders in /opt/wso2/wsf_php to your Web Root /var/www/html
Added directory /opt/wso2/wsf_php/scripts/ to include_path directory
eg. include_path = ".:/opt/wso2/wsf_php/scripts/" 

A quick verification of proper installation can be done by running the command php, for sure that the WSF/PHP module is loaded correctly (see the full command below).

 # /usr/local/zend/bin/php -i|grep wsf

/usr/local/zend/etc/conf.d/wsf.ini,
wsf
wsf support => enabled
wsf version => 2.1.0
wsf.attachment_cache_dir => /tmp => /tmp
wsf.enable_attachment_caching => 0 => 0
wsf.home => /opt/wso2/wsf_c => /opt/wso2/wsf_c
wsf.log_level => 4 => 4
wsf.log_path => /tmp => /tmp
wsf.rm_db_dir => /tmp => /tmp 

The command output shows the version of the form (in this case 2.1) and configuration, the latter defined within file /usr/local/zend/etc/conf.d/wsf.ini. Is possible to run the same test using the console offered by Zend Server, the console can be reached at https://localhost:10081/ (see Figure 1)

Figura 1 - Estensioni PHP caricate in Zend Server

Figure 1 - loaded Zend PHP Server Extensions

The contents of the file /usr/local/zend/etc/conf.d/wsf.ini (shown below) sets the configuration of the module wsf, as well as overwrite the current parameter setting include_path adding the directory /opt/wso2/wsf_php/scripts/. Advisable to check the parameter in order to avoid any malfunctions on your current configuration.

 include_path = ".:/usr/local/zend/share/ZendFramework/library:/usr/local/zend/share/pear:/opt/wso2/wsf_php/scripts/"

[wsf]
extension=wsf.so
wsf.home="/opt/wso2/wsf_c"
wsf.log_path="/tmp"
wsf.rm_db_dir="/tmp" 

The manual of the framework and the code samples were installed in the document root of the web server, both within their respective addresses, and https://localhost/docs https://localhost/samples. In Figure 2 shows the examples page installed, while in Figure 3 shows an example of a calculator that uses the web services created with WSF/PHP to do the arithmetic operations.

Figura 2 - Pagina degli esempi installati con il framework

Figure 2 - Home of the samples installed with the framework

Figura 3 - Esempio di una calcolatrice via Web Services

Figure 3 - Example of a computer via Web Services

Resources

I think it will be useful for all of you to have the Virtual Appliance I used for the preparation of this tutorial. I exported the Virtual Appliance formats OVF and published at the following address:

The community edition of Zend Server is installed into the Virtual Appliance.

Here are some necessary info for using the Virtual Appliance (in Figure 4 it shows the desktop icons including the Virtual Appliance Zend and WSO2 Server):

  • Username / Password: wso2/linuxwso2
  • Password root user: linuxwso2
  • Zend Server 5.1
    • Installed in /usr/local/zend
    • Web Console: https://localhost:10081
    • Web Console Password: zend
    • Init scripts in /etc/init.d/zend-server
  • WSO2 WSF/PHP
    • Installed in /opt/wso2
    • Sample in /var/www/samples
    • Docs in /var/www/docs
    • Configuration /usr/local/zend/etc/conf.d/wsf.ini
    • Module in /usr/local/zend/lib/php_extensions/
Figura 4 - GNome Desktop della Virtual Appliance

Figure 4 - Gnome Desktop Virtual Appliance

Using the Virtual Appliance with virtualization software like VirtualBox is fast and easy. To understand the necessary steps to import/export and also for more information, please read the Importing and exporting virtual machines guide. If you need to import the Virtual Appliance to VMWare, you can use the VMware OVF Tool.

Conclusion

In this tutorial we have seen all the steps necessary to implement the RPM package containing the binary framework of the WSO2 WSF/PHP. The procedure is simple and straightforward, the RPM package is ready to be installed on your Zend Server 5.x.

Author: 

Antonio Musarra,
Senior Consultant in Altran Italia S.p.A,.
Antonio is doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB and PHP.

 

 

 

 

About Author

  • Antonio Musarra
  • IT Senior Consultant
  • Key-Biz S.r.l.