Tuesday Feb 19, 2008

Couple of days back, Open Solaris Developer Preview 2, was released to the general public. I am told that this preview (aka beta) release is based on the same milestone build (Nevada build 79b) that Open Solaris Developer Express 01/08 was released with. So, naturally I got curious and tried it out on my laptop and here is my feedback

  • On the positive side - Installation experience is very smooth. Also, fonts look sharp and even wireless on my laptop works out of the box as well.
  • On the not so positive side -  Web Stack components like Apache, PHP and MySQL are not installed as part of default install.  So, one will need to manually download and install / configure these components.  Now, the tricky part is knowing the exact name of these packages to download as the current Indiana 'pkg' command is unable to search  by common names like 'apache' or 'php' etc.

After some poking around, I found the list of additional packages available at Indiana repository and from then, it was a breeze to find the right instructions to download and configure these components.  Thought, I would share my experience here.  So, here in this blog, I will go through the list of steps needed to configure a Web Stack (Apache , PHP and MySQL) stack on my Solaris Developer Preview (aka Indiana).

- Using a 'terminal' window, download and install Web Stack components like Apache , PHP and MySQL as shown below.  Note, You will need to have a  high speed internet connection to download and install these packages.

If you are curious as to what we what are we doing here - here is a brief explanation

sriramn@sriram-laptop2:~$  pfexec pkg  install SUNWapch22 SUNWphp524core SUNWphp524usr SUNWmysql5 SUNWapch22m-php5 SUNWphp524-mysql

pfexec - a command that integrates with Solaris RBAC and allows us to run a privileged command provided we have the authorization to do so.  For example, installing a software is a privileged operation and a default user in Open Solaris Developer Preview is provided with this authorization.

pkg - new package command that can download and install specified packages from Indiana package repository.

SUNWapch22 - Apache 2.2

SUNWphp524core SUNWphp524usr -> PHP 5.2.4 core runtime and its dependent header files.

SUNWmysql5  - MySQL 5.0 database core runtime files.

SUNWapch22m-php5 - Glue to bond PHP 5.2.4 runtime within Apache

SUNWphp524-mysql  - Glue to bond PHP 5.2.4 runtime with MySQL database.

For Developer Preview 2 (aka beta) release,  I guess, we need to provide these correct package names to the 'pkg' command. Hopefully, going forward , with subsequent releases, we should be able to get the following command working

pfexec pkg install apache php mysql

Configuring MySQL for Indiana

Though, the above command successfully installed the MySQL database, there are still some some post installation steps necessary. Unlike Solaris Developer Express, where these below steps are automatically done for us, within Solaris Developer Preview 2, we will need to perform the following manual configuration to successfully configure MySQL database within Indiana.  Again, I am hoping that with Developer Preview 3, these steps should no longer be needed.

  • Create MySQL user and group and allocate MySQL data directory '/var/mysql' to this user for security purposes

 

sriramn@sriram-laptop2:~$  pfexec groupadd -g mysql

sriramn@sriram-laptop2:~$  pfexec useradd -d /var/mysql -m -g mysql mysql

sriramn@sriram-laptop2:~$  pfexec chown mysql:mysql /var/mysql

sriramn@sriram-laptop2:~$  pfexec chmod 750 /var/mysql /var/mysql/data

  • Now, let us initialize MySQL database and try to start the server. 

 

sriramn@sriram-laptop2:~$  pfexec su - mysql

sriramn@sriram-laptop2:~$  pfexec /usr/mysql/5.0/bin/mysql_install_db --user=mysql

sriramn@sriram-laptop2:~$  pfexec /usr/mysql/5.0/bin/mysqld_safe &

sriramn@sriram-laptop2:~$  pfexec /usr/mysql/5.0/bin/mysqladmin -u root  password '<provide a password to protect the MySQL database for the 'administrator account'>

 

Yup - this is all should be required to run Apache , MySQL and PHP within Indiana. With this pre configuration, you should be now ready to deploy either a wiki site like Media Wiki  on Indiana or a content management site like Drupal on Indiana  just as you would with SXDE 01/08.

Technorati Tags: ,,

In my previous blog, I mentioned the availability of components like Apache, PHP and MySQL/PostgreSQL within Open Solaris and also how to setup a wiki site like Media Wiki on Open Solaris . So, here is a very much related one - setting up a content management site like Drupal on Open Solaris.

Installing / Configuring Web Stack within Open Solaris

If you haven't already, you might want to download and install Open Solaris Developer Express 01/08

To simplify the initialization and configuration steps required for Apache and MySQL within Open Solaris, engineers within Web Stack project like Ludovic Champenois have done an amazing job of creating a a 'initialize' script so as to successfully setup the Web Stack Environment within couple of minutes. Here is a screen snap shot of the Web Stack Initialize 'script' posted in Ludovic Champenois's Blog

Once the Web Stack 'initialize' script completes successfully, you are now ready to start Web Stack Apache 2 and MySQL service as shown here . This is pretty much all is needed to host your web site and start developing and deploying PHP scripts.

However, to use PHP 5.2.4 database shipped within Open Solaris, we will need this below temporary work around to force PHP runtime to use MySQL 5.0 based client library.

        Open a terminal and become root from your Open Solaris box and run the following command (as a temporary work around)

 

root> ln -sf /usr/mysql/5.0/lib/mysql/libmysqlclient.so.15.0.0  /usr/mysql/5.0/lib/mysql/libmysqlclient.so.12


Note: The above mentioned work around is needed only for Open Solaris Developer Express and Open Solaris Developer Preview 2. This issue has been resolved in recent builds of Open Solaris and this temporary work around is not needed if you are using Nevada build 83 or above.

Installing Drupal

Now, you might want to download the latest version of Drupal from their web site and unpack the downloaded tar ball to Apache 2.2 document root location.

These below commands show how to unpack and set up under Apache 2.2's document root.

root> cd /var/apache2/2.2/htdocs

root> /usr/sfw/bin/gtar zxvf  <location of the downloaded tar ball>

Let us go ahead and create a symbolic link of the unzipped drupal tar ball to a valid name

root> ln -sf drupal-6.0 drupal


Configuring Apache for Drupal

Drupal actively uses '.htaccess' file within its installation. However, default apache configuration file, as part of security measure, has disabled the '.htaccess' file support. So, let us go ahead and create a drupal specific configuration.
   
    Note: We will need to create a drupal specific apache configuration file at '/etc/apache2/2.2/conf.d/drupal.conf' so that Apache can load Drupal specific configuration after system restart as well. So, using a command line terminal window become root so as to save the below contents into /etc/apache2/2.2/conf.d/drupal.conf' as shown here.



root> cat > /etc/apache2/2.2/conf.d/drupal.conf

<Directory /var/apache2/2.2/htdocs/drupal>
   AllowOverride All
   RewriteEngine on
   RewriteBase /drupal
</Directory>

<After pasting the above lines into your terminal window, press CTRL-D to save the above contents into drupal.conf>


Configuring PHP for Drupal

Drupal requires PHP configuration to have support to include the current directory in the include path. So, let us edit the default /etc/php5/5.2.4/php.ini and make the following change

    Open a command line terminal window and edit /etc/php5/5.2.4/php.ini file. Note: You will need to either edit this file as 'root' or use 'pfexec' command to ensure that you have the privilege to edit this file

     Now search for 'include_path = ' in this file and edit this line to reflect like below.  Note: This should be the line that doesn't have ';' in the front.

                include_path = "./:/usr/php5/5.2.4/include/php" 

Finally, restart Apache Service from the command line. This ensures that PHP runtime, loaded within Apache, is now aware of the changes that we just did within the 'php.ini' and 'drupal.conf' file.

 

root> /usr/apache2/2.2/bin/apachectl restart

Configuring MySQL for Drupal

Drupal requires a separate database to be created and available for its use. For more information on how to configure this database, please check out the INSTALL.mysql.txt file found under <drupal installation location> (For example, in our case, the file is under /var/apache2/2.2/htdocs/drupal-6.0/INSTALL.mysql.txt). 

Please note that within Open Solaris, MySQL 5 is located under /usr/mysql/5.0/bin/ directory. You will need to be either as root as login as 'mysql' user to successfully create this database.

Configuring Drupal 

Finally, proceed to configuring Drupal and complete the rest of the Drupal configuration by visiting http://localhost/drupal . For more information on this configuration, also refer to 'INSTALL.txt' file found under /var/apache2/2.2/htdocs/drupal directory. 



Technorati Tags: , , ,

Friday Feb 15, 2008

  I thought, you might be interested in knowing that PHP binaries included within Open Solaris, also includes Suhosin , a useful php extension. Hmm... So, if you wonder as to what is Suhosin - please check out from their web site on Why Suhosin and its features.  Note: Currently, PHP runtime / core integrated within Open Solaris is not patched with any patch like Hardening-PHP patch . We are still investigating on the various aspects of this patch. So, if you have any thoughts on the pros and cons of this patch, please write to us.

 

How to enable Suhosin extension within Open Solaris - 

Un-comment the following line within /etc/php5/5.2.4/conf.d/suhosin.ini

;extension=suhosin.so

 

Please note that default configuration should be good enough for most of the customers. If in case, you would like to fine tune or customize your security settings, please visit Suhosin configuration page for more configuration options. You can edit '/var/php5/5.2.4/conf.d/suhosin.ini'  to customize your suhosin setup.

 

Finally, you will need to restart Apache Web Server for this change to take into effect by doing some thing like

svcadm restart network/http:apache22

 

Technorati Tags: ,,,

Sunday Feb 10, 2008

If you are new to Open Solaris and trying to deploy webtier technologies like Apache2, PHP/Ruby with PostgreSQL/MySQL then you might find the file layout of these components to be very different from what you would find on Linux or Windows. So, do check out File Layout section within 'Getting Started Guide' to get a quick walk through of the current file layout of these components.

Now, if you wonder as to why we included the version number of these components and not simply bundle these binaries under /usr/bin as is the case on Linux then here is the motivation - Most of the open source web tier technologies are in active development and these components provide no guaranteed compatibility from one release over the other. Hence, you will notice that the file layout include the version number of these components so as to allow co-existence of multiple versions, if deemed necessary.

Technorati Tags: opensolaris webstack

Thursday Feb 07, 2008

If you are new to Open Solaris community, you might want to check out the different distributions available here.  Out of these different distributions, Open Solaris Community Express, Open Solaris Developer Express and Open Solaris Developer Preview  is released from Open Solaris community while the rest of the distributions seems to be developed by third party or volunteers. Here is quick 2 minute run down on these different distributions as I understand it -

 

Open Solaris Developer Preview  - Internal code name for this project is 'Indiana' .  It is still in 'beta'  and its goal seems to be to simplify the Open Solaris installation experience and provide a LiveCD of the OS as well.  The promising feature in this distribution is that it touts a new 'packaging' system known as 'Image Packaging System' that allows users like us to get updates and new packages on regular basis. Af course, in Linux world, folks has been using 'Yum' or 'apt-get' for quite some time now. However, for Open Solaris community , this is probably one of the most wanted features for quite some time now.

 

Open Solaris Community Express -  Unsupported binary release of Open Solaris source code. This release happens almost biweekly.  With every release, the milestone's build number is increased. If you would like to get the latest and greatest Open Solaris snapshot, then this is the way to go. Here is a quick link of the different features that have been integrated with every milestone build. Typically, if I like to try out a feature then I download the appropriate milestone build.

 

Open Solaris Developer Express - Well tested and stable snap shot of the Open Solaris Community Express translates into a Open Solaris Developer Express release. This release happens once in every 3-4 months. You can download and use it for free. Also, if you would like to run it on your production system, you can buy support for this release from Sun 

 

Unless you are seasoned veteran within Open Solaris world, Open Solaris Developer Express  is the best way to get your hands on it.

 

 

 

 

Technorati Tags:

 

Tuesday Feb 05, 2008

As I mentioned earlier, Apache 2.2, MySQL and PHP has now been integrated within Open Solaris. If you haven't already, check out Solaris Developer Express 01/08 and let us know with your comments.

Here is a step by step instruction on how to deploy a Web 2.0 site like MediaWiki on Open Solaris using Apache 2.2, MySQL 5.0 and PHP 5.2.4 . Probably, for the first time in Solaris history, we can now deploy a Web 2.0 site in such a short time. 

Download and Install Open Solaris Developer Express 01/08

To simplify the initialization and configuration steps required for Apache and MySQL within Open Solaris, engineers within Web Stack project like Ludovic Champenois has done an amazing job of creating a a 'initialize' script so as to successfully setup the Web Stack Environment within couple of minutes. Here is a screen snap shot of the Web Stack Initialize 'script' posted in Ludovic Champenois's Blog

Once the Web Stack 'initialize' script completes successfully, you are now ready to start Web Stack Apache 2 and MySQL service as shown here . This is pretty much all is needed to host your web site and start developing and deploying PHP scripts.

However, to use PHP 5.2.4 database shipped within Open Solaris, we will need this below temporary work around to force PHP to use MySQL 5.0 based client library. Note: Going forward, PHP build process has been modified to look for MySQL 5.0 based client libraries as well.

  • Open a terminal and become root from your Open Solaris box
  • Run the following command (as a temporary work around)
    • root> ln -sf /usr/mysql/5.0/lib/mysql/libmysqlclient.so.15.0.0 /usr/mysql/5.0/lib/mysql/libmysqlclient.so.12

Now, you will need to download MediaWiki tar ball from here and unpack the downloaded tar ball to Apache 2.2 document root location. Now, let us follow the instructions on how to configure MediaWiki as mentioned under 'Installation Instructions' within MediaWiki web site.

  • These below commands show how to unpack and set up under Apache 2.2's document root.

    root> cd /var/apache2/2.2/htdocs

    root> /usr/sfw/bin/gtar zxvf  <location of the downloaded tar ball>

    Let us go ahead and create a symbolic link of the unzipped media wiki tar ball to a valid name

    root> ln -sf mediawiki-1.11.1 mediawiki

     

    Finally, proceed to configuring MediaWiki and complete the rest of the MediaWiki configuration by visiting http://localhost/medawiki as mentioned under 'Further Configuration' section within MediaWiki web site. 

    Technorati Tags: webstack,opensolaris,mysql,php,mediawiki

    In addition to my day time job with  Sun Web Server 7 development,  I have recently got myself involved with Web Stack project that is responsible for integrating / improving the open source web tier technologies like PHP for Open Solaris.  As part of this project, we have now successfully integrated  PHP(version 5.2.4) with Open Solaris (Nevada) build 79b - aka known as Solaris Developer Express 01/08.  Finally, with SXDE 01/08, I believe that we are now one step closer to facilitate our customers choose SAMP stack for their development and production requirements.

    So, what is cool with this integration ? -

    • Includes tighter and built-in support for Apache 2 pre-fork MPM
      • Simply enabling Apache 2 SMF service is all is now required for developing PHP applications with your Web Server
      • For example
        • svcadm enable network/http:apache22
    • tighter integration with PHP NetBeans IDE and also includes popular 3rd party PHP extensions like APC, XDebug and DTrace
    • Includes out of the box support for commonly used PHP extensions like LDAP, SSL, SOAP, JSON, MySQL, PostgreSQL, PDO, XML, Zlib
    • PHP is compiled with Sun Studio compiler and includes necessary compiler optimizations to derive the best performance on Solaris.

     

    And what is not so cool ...

    • With the current integration, popular PHP extensions like IMAP, MCrypt are still missing. We are very hopeful of  integrating the currently missing PHP extensions integrations , in the order of user popularity, in the next coming months.
    • We all know that Open Solaris Developer Express 01/08 includes MySQL 5.0 database as well. However, due to a build issue, PHP is still looking for MySQL 4.0 client libraries instead of the default MySQL 5.0 client libraries. This issue is now resolved with Nevada build 83.  So, for now, here is a temporary work around to work around this issue
      • Open a terminal and become root from your Open Solaris box
      • Run the following command
      • ln -sf  /usr/mysql/5.0/lib/mysql/libmysqlclient.so.15.0.0 /usr/mysql/5.0/lib/mysql/libmysqlclient.so.12

     

    We very much want to hear your thoughts on what we did right and how we can improve. So, please consider joining Web Stack discussion forum.

    If this interests you, do give Solaris Developer Express 01/08 a spin and let us know. Instead of a stable build, if you would prefer to try out the latest and greatest, you can also check out - Open Solaris Community Express - (recent milestone build) . 

    Technorati Tags: ,,

    This blog copyright 2008 by natarajan