Tuesday Oct 27, 2009

Installing and running Silverstripe on OpenSolaris

SilverStripe is an open source content management system (CMS); we in Sun's ISV Engineering department have been working on getting this and other important open source applications into the OpenSolaris "contrib" repository, a place meant for third party applications that anybody can contribute.  I've been testing the SilverStripe package that Jenny Chen contributed; here are my notes.

Mostly, SilverStripe installs just fine; however, it has the same little hiccup as Joomla! did when I tested its installer.  (I documented that problem and workaround here)  No big deal, though: it's easy to apply the same quick workaround for MySQL before you get on your way.

Once done, I launched my web browser on my OpenSolaris box and went here: "http://localhost/silverstripe".  That brings me to the web-based SilverStripe installer.  It all looks good, but one thing to note at the bottom of the page (in the "Webserver Configuration" section) is that SilverStripe can't tell what web server OpenSolaris is running.  With the Web Stack, we're running the Apache web server.

One other note from the SilverStripe installer: it advises me to set the "allow_call_time_pass_reference" parameter in /etc/php/5.2/php.ini to "On", which I did just to avoid getting warnings shown to me during the installation process.

Anyway, did that, then pressed the "Install SilverStripe" button to get the installation on its way.  The installation took two minutes fifteen seconds (really; I timed it) under a fairly heavily-loaded computer.

It worked fine; I was able to add a couple of pages to my site, add a user and give that user privileges, and see it in action.

So now, if you use SilverStripe you can get to it in OpenSolaris via the Package Manager.  If you don't know how to install packages from the OpenSolaris "pending" repository (a staging area we use to test packages before they're promoted to the "contrib" repo I mentioned above)., then the main thing you need to learn is how to add repositories to your Package Manager application.  Do these two steps from a shell on your OpenSolaris installation:
  1. type "pfexec pkg set-publisher -O http://jucr.opensolaris.org/pending jucr-pending"
  2. type "pfexec pkg refresh"
After that, the next time you launch the Package Manager application, look on the right side of the application and you can choose "jucr-pending" from the pop-up menu.  Do that, and after a moment you'll see a list of all the packages in the "pending" repository.  You will find the package "silverstripe" there.  Note that case matters; the package name is all lowercase.

Check it out and let us know what you think.  Did SilverStripe install and work fine for you in OpenSolaris?  Give us some feedback.


Powered by ScribeFire.

Friday Sep 11, 2009

Installing and running Joomla! in OpenSolaris

The OpenSolaris "/contrib" repository is a place where anybody can contribute open source software packages, which are then available for you to install on OpenSolaris.  Before a packages gets promoted to the contrib repo, you submit your package / application to a repository called "pending".  The idea is that people can test packages and get others to try them out before they get promoted so that the packages in "contrib" have been at least smoke-tested.

Recently I've noticed the number of packages and apps available growing pretty nicely, and I've been testing some of the apps that our own group (Sun's ISV Engineering organization) has been contributing.  Most of the packages I've tested have gone smoothly.  One gave me a little hiccup so I thought I'd describe what I did to get it working.

That package is the Joomla! content management system.

Installation was actually a snap; once you install the package with the OpenSolaris Package Manager, just fire up the web browser and go to http://localhost/joomla and you get the Joomla! installer.

Well, it's a little more complicated than that; you need to make sure you create a database for Joomla! to use, like this:

mysqladmin -u joomla -p create joomla

mysql -u joomla -p
mysql> grant all privileges on joomla.\* to 'joomla'@'localhost' identified by [password in single quotes here];

(assuming I created a MySQL database user called "joomla", I'm also creating a database called "joomla")

After a few web screens, I can login as the Joomla! admin just fine, but trying to go to the Joomla! front page as a regular non-admin person causes a long series of errors to spit out at me (and rather rudely, I might add); see the end of this post for the details.

Turns out it's a MySQL problem; you can see the discussion here.  The current workaround is to run MySQL in 64-bit mode, but in order to do that, you need to make sure you're running OpenSolaris in 64-bit mode.  If you type "isainfo -k" and it returns "x86", that's not good enough.

I am doing my testing in VirtualBox; to make sure I'm running OpenSolaris in 64-bit mode, I go to the VirtualBox main application panel where I can see the settings for my virtual machine.  Near the top, the section called "General", The "OS Type" field sais "OpenSolaris".  I change that to "OpenSolaris (64-bit)" and the next time I boot OpenSolaris, it's in 64-bit mode.

One more step; making sure to launch the 64-bit version of the MySQL service.  Do this:

svccfg -s mysql:version_51 setprop mysql/enable_64bit=true
svcadm refresh mysql:version_51
svcadm restart mysql:version_51

I did just this, and went back to http://localhost/joomla and everything worked perfectly well.  Joomla! works just fine in OpenSolaris, as you would expect.  Nice looking app, too.

P.S.:  (Joomla / MySQL error message below)



\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
\* Error loading Modules:MySQL server has gone away SQL=SELECT
id, title, module, position, content, showtitle, control, params FROM
jos_modules AS m LEFT JOIN jos_modules_menu AS mm ON mm.moduleid =
m.id WHERE m.published = 1 AND m.access <= 0 AND m.client_id = 0 AND (
mm.menuid = 1 OR mm.menuid = 0 ) ORDER BY position, ordering
Technorati Tags: , , , , , , , ,

Powered by ScribeFire.

Thursday Mar 05, 2009

Notes from DrupalCon 2009, Day One

I'm in Washington DC for the DrupalCon 2009 conference.  Drupal, for those not familiar with the technology, is an open source content management system (CMS) built using the PHP programming language.  If that explanation doesn't help, think of it this way: lots of people use Drupal to build web sites.  I mean, lots of people.  For example, the Obama administration's recovery.gov web site is using Drupal.  And during the conference, I've talked to online newspaper sites and people who built web sites for the major music labels (e.g., Warner Music, Sony, others) and they use Drupal to build their web sites.  The popularity and growth of Drupal is astounding.  You can feel it at the convention center here.

I'm here to learn more about the Drupal community: I intend to learn more about the big problems the community wants to address, their main customer pain points, the technical and non-technical problems they face, how the community works...and ultimately, how Sun can play an important role in the Drupal community.

Sun has a table at DrupalCon, and we're getting a lot more people stopping by the table to talk to us than in previous conferences I've been at.  It's a great opportunity for us to learn what people want, and how (or whether) we can help.  Lots of people use MySQL, and they pretty much all seem to be aware that Sun purchased MySQL.  I was a bit surprised at how many people use VirtualBox, but not everybody knew that It's a Sun product.  (so we're telling them, and hearing how they use VBox).  General feedback I hear from visitors is that they are glad to see Sun showing support for the Drupal community and for open source in general.  I wouldn't say people are rushing to our table, but generally when we ask them questions, they happily stay and talk with us about what they're doing.

Here is what I'm learning so far about why Drupal is so successful: it is simple to extend, by design.  (built in PHP, you can get up-to-speed on how Drupal is built pretty quickly and the barriers to you contributing something new are reasonably low)  You don't have to contribute code to the core part of Drupal; you can create your own "module" to add new features, or you can contribute themes to help others' web sites look cool.  These are lower-risk ways of including the maximum number of people to add to Drupal, and they do.  Drupal really wants a lot of people to contribute, and they make it pretty easy to do it.

Also, Drupal is simple to get running; you can have a simple web site running in less than an hour, and you don't have to be a database administrator or a developer to do it.

There is a commercial entity formed by Drupal's founder, Dries Buytaert.  That commercial entity, called Acquia, contributes a lot to Drupal but they take steps not to try to assert too much control over Drupal.  In fact, of all the committers to the Drupal core, only one works at Acquia (Dries).

Time and time again I have heard from Drupal fans that they see Dries spending a lot of time and energy to make the community open and welcoming; getting people to contribute appears to be a cornerstone of Drupal's direction.  I've talked to a lot of people building web sites and asked them why they're at DrupalCon; many of them say they're looking for people to hire, and they use Drupal because it's easy to find developers who already know Drupal.  It's your classic developer play: Drupal succeeds in part because they have a larger developer base than competing open source CMSs like Joomla! or Wordpress.  I like this aspect because it shows the payoff of spending enormous energy in opening your community; the payoff is a huge ecosystem of features and add-ons, and an army of Drupal-trained workforce that makes it easy for customers to get somebody to build their websites in Drupal for a good price.

I installed Drupal on my OpenSolaris distro, running inside VBox on my MacBook Pro.  It took about 20 minutes from start to finish, including the time to download the software, unpack it, read the instructions, activate the WebStack components (MySQL, Apache), and configure the database for Drupal to get going.  If I were to do it again, it would take me about 10 minutes to get Drupal going, maybe 5.

Two main themes I'm hearing about what's important to work on for Drupal: simplicity, and performance.  Simplicity seems to be the much bigger issue, because Drupal is trying to expand its community by an order of magnitude.  They made it easy for PHP developers to contribute and build web sites, but they want to attract people who don't want to learn PHP.  Maybe these people know a little HTML, maybe a little CSS, but not PHP.  Drupal has to make things even simpler to create web sites with interesting content.  Anything to make it easier to install, configure, and run Drupal with a usable set of modules is a huge benefit to the Drupal community.

Performance seems to be not quiet as important, but still plenty worth talking about.  For smaller sites that don't get a lot of concurrent users hitting their web sites, performance of Drupal and the underlying software stack on a single server is plenty fine.  But when the web site starts to grow its audience, performance issues start to come into play, and I think there's a lot that Sun can do if we can show that we understand how to optimize performance on the whole software and hardware stack, from Drupal on down to the server.  I believe we can do that, and more: Sun has some interesting technology to make snapshots and test environments quick, easy, and reliable to do (ZFS comes into play here).  And we have a great tool for observing performance of Drupal sites live, in deployment (DTrace).  These are not for everybody -- I hear a lot of people saying they don't want to spend their time learning how to do detailed performance tuning, they'd rather spend their time getting web sites live -- but I think that people who see these tools at our BOF on Friday will see how these tools can be a real help.

One nice thing they're doing at the conference is the use of Twitter as a public address system: follow the twitter user "drupalcon" and you get updates about where lunch is being served, parties happening after hours, reporting on status of wi-fi downtime (mostly wireless access has been great, but when it goes down, the DrupalCon people tweet about it right away and ask people to tweet back saying where they find dead spots).  When slides get posted to web sites, it's announced on twitter.  Same with videos of the talks.  Somebody lost a phone; drupalcon tweeted a lost-and-found message.  It's a great use of Twitter.

I'll leave this entry with a quote from the opening keynote.  It was attributed to Clay Shirky, to represent the approach of the Drupal community: "Replace planning with coordination".  Simple example: going to lunch as a group.  Before cell phones, if you want to go to lunch as a group you have to talk about it before-hand and plan where you're going to go, because communication is complicated in a group.  With web-enabled cell phones, you can call, text, or tweet your mates in real time, coordinating what you're doing right then.  Interesting approach; I'd say it's a good summary of the open source way of doing things that I've seen in my own career working with open source.

More soon; the conference is a firehose, and I'm having a blast drinking from it.


Powered by ScribeFire.



About

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle. What more do you need to know, really?

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today