WordPress MU, BuddyPress, and bbPress on Local Machine

How I installed and integrated WPµ, BuddyP, and bbP on my Mac.

Was recently able to install and integrate three neat products based on Automattic code:

  1. WordPress µ 2.8.1 (a.k.a. WPµ, WordPress MU… Platform for multi-user blogs and Content Management System).
  2. BuddyPress 1.0.2 (A social network system based on WordPress µ).
  3. bbPress 1.0.1 (A forum system based on WordPress).

Did this after attending WordCamp Montreal. The fact that the large majority of WordPress and WordPress µ are merging motivated me, in part, to try it out. I currently serve as webguru for the Society for Linguistic Anthropology.

This is all on a local machine, a Mac mini running Mac OS X 10.5 Leopard.

It took me several attempts so it might not be as obvious as one would think.

I wrote as detailed a walkthrough as I could. Not exactly for the faint of heart. And, as IANAC, some things aren’t completely clear to me. I wish I could say I’m able to troubleshoot other people’s problems with these systems, but it’s really not the case. I ended up working out diverse issues, but it took me time and concentration.

A few resources I’ve used:

  1. Andy Peatling’s tutorial on BuddyPress (and WordPress µ) on a Mac.
  2. Sam Bauers’s screencast on integrating WordPress and bbPress. (Not µ or BuddyPress. Requires WordPress.org login.)
  3. Trent Adams’s tutorial on BuddyPress/bbPress integration.
  4. This file: <WPinstall>/wp-content/plugins/buddypress/bp-forums/installation-readme.txt (also available here).

I’ve used many other resources, but they turned out to be confusing, partly because of changes in versions. In fact, the last file was the most useful one. It’s a very different method from the other ones, but it worked. It’s actually much simpler than the other methods and it still gave me what I needed. I now have a working installation of a complete platform which integrates blogging, social networking, and forums. In a way, it’s like having simple versions of Drupal and Ning in the same install. Perfect for tests.

Some conventions.

<dbname> commondb
<name> common
<username> alexandre
<bbname> forums
<adminpass> (generated) 5e6aee85e6d4
<blogname> uethnographer
<blogpass> (generated) 601a6100
<confkey> (generated)
  1. [T] refers to things done in Terminal.app
  2. [B] refers to things done in the browser (Safari.app in my case)
  3. Brackets serve to refer to installation-specific items. I could have used variables.
    1. <dbname> is the database name in MySQL (can be anything)
    2. <name> is the name used for the WordPress install (domain/<name>; can be anything)
    3. <username> is the abbreviated username on the local machine. ~<username> would be the user’s home directory. Determined in Mac OS X.
    4. <bbname> is the name for the bbPress install  (domain/<name>/<bbname>; can be anything)
    5. <adminpass> is the password for the WordPress admin (generated)
    6. <blogname> is the main username for a blog administrator (can be anything)
    7. <blogpass> is the password for that blog administrator (generated)
    8. <confkey> is a confirmation key upon creating that blog administrator (generated)

So, here’s what I did.

  1. Switched to a user with administrative rights on my Mac. I usually work with a non-admin user and grant admin privileges when needed. Quite cumbersome in this case.
  2. Opened Terminal.app
  3. Installed and configured MAMP
    1. Downloaded http://downloads.sourceforge.net/mamp/MAMP_1.7.2.dmg.zip and copied the MAMP folder to /Applications
    2. Opened MAMP.app
    3. Changed MAMP preferences
      1. Preferences
      2. Ports: “Default Apache and MySQL ports”
      3. Apache: Choose: /Users/<username>/Sites
      4. Clicked Ok
  4. Clicked “Open home page” in MAMP
  5. Went to phpMyAdmin
  6. Created a database in phpMyAdmin with <dbname> as the name
  7. Edited /etc/hosts to add: 127.0.0.1 localhost.localdomain
  8. Downloaded WordPress µ through Subversion: [T] svn co http://svn.automattic.com/wordpress-mu/branches/2.8 /Users/<username>/Sites/<name>
  9. Went to my local WordPress µ home: [B] http://localhost.localdomain/<name&gt;
  10. Filled in the necessary information
    1. “Use subdirectories” (subdomains would be a huge hassle)
    2. Database name: <dbname>
    3. User Name: root
    4. Password: root (changing it is a huge hassle)
    5. Title (title for the main WPµ install, can be anything)
    6. Email (valid email for the WPµ admin)
    7. Saved changes
  11. Noted <adminpass> for later use (generated and displayed)
  12. Changed file ownership: [T] chmod 755  /Users/<username>/Sites/<name> /Users/<username>/Sites/<name>/wp-content/
  13. Logged into WPµ admin: [B] http://localhost.localdomain/<name>/wp-admin/
    1. User: admin
    2. Password: <adminpass>
  14. Changed plugin options: [B] http://localhost.localdomain/<name>/wp-admin/wpmu-options.php#menu
    1. Plugins: check
    2. “Allow new registrations”: “Enabled. Blogs and user accounts can be created.”
    3. “Add New Users”: Yes
    4. “Upload media button”: Checked Images/Videos/Music
    5. “Blog upload space”: 100MB
    6. Clicked “Update Options”
  15. Installed BuddyPress directly
    1. [B] http://localhost.localdomain/<name>/wp-admin/plugin-install.php?tab=plugin-information&plugin=buddypress&TB_iframe=true&width=640&height=542
    2. Clicked “Install”
    3. Clicked “Activate”
    4. Moved BP themes to the right location: [T] mv /Users/<username>/Sites/<name>/wp-content/plugins/buddypress/bp-themes /Users/<username>/Sites/<name>/wp-content/
    5. Moved the BP Default Home theme to the right location: [T] mv /Users/<username>/Sites/<name>/wp-content/bp-themes/bphome/ /Users/<username>/Sites/<name>/wp-content/themes/
    6. Activated the BP Default Home theme: [B] http://localhost.localdomain/<name>/wp-admin/wpmu-themes.php
      1. Clicked yes on “BuddyPress Default Home Theme”
      2. Clicked Update Themes
    7. Activated the BP theme
      1. [B] http://localhost.localdomain/<name>/wp-admin/themes.php
      2. Clicked “Activate” on “BuddyPress Default Home”
    8. Added widgets to the BP theme
      1. [B] http://localhost.localdomain/<name>/wp-admin/widgets.php
      2. Placed widgets through drag-and-drop
    9. Checked the BuddyPress install: [B] http://localhost.localdomain/<name>
  16. Installed and integrated bbPress
    1. Downloaded bbPress using Subversion: [T] svn co http://svn.automattic.com/bbpress/trunk/ /Users/<username>/Sites/<name>/<bbname>/
    2. Went through the install process: [B] http://localhost.localdomain/<name>/<bbname>/bb-admin/install.php
    3. Go to step 1
    4. Added the following details
      1. Database Name <dbname> (same as WPMU)
      2. Database user root
      3. Database password root
      4. Clicked Save database configuration file
    5. Check for configuration file
    6. Go to Step 2
    7. Added the following details
      1. Add integration settings
      2. Add user database integration settings (without the cookie integration)
      3. User database table prefix wp_
      4. WordPress MU primary blog ID 1
      5. Clicked “Save WordPress integration settings”
    8. Clicked “Go to step 3”
      1. Added the following details
        1. Site Name (Name of the bbPress site, can be anything)
        2. Key Master username admin
        3. First Forum Name (Name of the first forum, can be anything)
        4. Clicked “Save site settings”
    9. Complete the installation
    10. Ignored the warnings
    11. Went through the writing options: [B] http://localhost.localdomain/<name>/<bbname>/bb-admin/options-writing.php
      1. Username: admin
      2. Password: <adminpass>
      3. Clicked on XML-RPC Enable the bbPress XML-RPC publishing protocol.
      4. Clicked “Save changes”
    12. Went to the discussion options: [B] http://localhost.localdomain/<name>/<bbname>/bb-admin/options-discussion.php
      1. “Enable Pingbacks”: “Allow link notifications from other sites.”
      2. Clicked “Save Changes”
    13. Moved the BuddyPress/bbPress integration plugin to the right location: [T] mv /Users/<username>/Sites/<name>/wp-content/plugins/buddypress/bp-forums/bbpress-plugins/buddypress-enable.php /Users/<username>/Sites/<name>/<bbname>/my-plugins/
    14. Went to the bbPress plugin options: [B] http://localhost.localdomain/<name>/<bbname>/bb-admin/plugins.php
      1. Clicked “Activate” on “BuddyPress Support Plugin”
    15. Went to the WPµ site: [B] http://localhost.localdomain/<name>
    16. Clicked “Log Out”
    17. Registered a new user: [B] http://localhost.localdomain/<name>/register
      1. Username <blogname>
      2. Email address (blog administrator’s valid email)
      3. Name (full name of blog administrator, can be anything)
      4. Clicked “Next”
      5. “Blog Title” (name of the blog administrator’s main blog, can be anything)
      6. Clicked “Signup”
      7. Checked for email at blog administrator’s email address
      8. Clicked confirmation link: [B] http://localhost.localdomain/<name>/activate?key=<confkey>
      9. Noted <blogpass> (generated)
      10. Gave administrative rights to the newly created blog administrator: [B] http://localhost.localdomain/<name>/<bbname>/bb-admin/users.php
        1. Logged in with admin/<adminpass>
        2. Clicked on <blogname>: Edit
        3. Clicked on “User Type: Administrator”
        4. Clicked on “Update Profile”
      11. Edited the bbPress configuration file:
        1. [T] open -e /Users/<username>/Sites/<name>/<bbname>/bb-config.php
        2. Added the following:
          1. $bb->bb_xmlrpc_allow_user_switching = true;
          1. (say, after /**#@-*/)
        3. Saved
      12. Went to BuddyPress options: [B] http://localhost.localdomain/<name>/wp-admin/admin.php?page=buddypress/bp-forums/bp-forums-admin.php
        1. Logged in with admin/<adminpass>
        2. Added the following details
          1. bbPress URL: http://localhost.localdomain/<name>/<bbname>/
          1. bbPress username <blogname>
          1. bbPress password <blogpass>
        3. Clicked “Save Settings”
  17. That was it. Phew!

I ended up with a nice testing platform. All plugins I’ve tried so far work quite well, are extremely easy to install, and give me ideas about the SLA’s site.

It was an involved process and I wouldn’t recommend it to anyone who’s afraid of fiddling with a bit of code. But I did try it out and it seems fairly robust as a method. I could almost create a script for this but that’d mean I might receive support requests that I just can’t handle. I could also make a screencast but that’d require software I don’t have (like Snapz Pro). Besides, I think copy paste is easier, if you remember to change the appropriate items. Obviously, anyone who wants to use this procedure as-is should replace all the bracketed items with the appropriate ones for your install. Some are generated during the process, others you can choose (such as the name of the database).

I’m not extremely clear on how secure this install is. But I’m only running it when I need to.

You can ask me questions in the comments but I really can’t guarantee that I’ll have an answer.

Advertisement

My Blogging Life

Phew!

I just finished what might be one of my longest blogposts, ever:

PHP #1: Austin, TX (USA) « The Compulsive Pedestrian

I guess I had a lot to say… 😎

It’s on a new topical blog I created. That blog deals with what I now like to call “carfree living.” I was originally calling this “carless living” but “carfree” sounds better, for obvious reasons. 😉

I’ve been using that blog to talk about places that I know and that I perceive to be pedestrian-friendly or pedestrian-hostile. Hopefully, some people will connect to some of what I say about those places and eventually leave me comments. (Hint, hint! 😀 )

Actually, I’ve been receiving a decent number of comments through my blogs, recently. In fact, one blogpost became something of a forum thread, thanks in part to Carl Dyke who recently became a blogger. I “met” Carl on the anthro group blog Savage Minds, where Kerim Friedman and others have expressed their desire for more connections between anthro-friendly blogs.

For reasons which might not be entirely surprising, my blogpost comparing Texan and Albertan cities is getting a decent level of attention, especially from Edmontonians. In fact, it should be featured as a guest column on a community site. I even started looking at Edmonton as a place where I could live in the not-too-distant future!

Some of my other blogging activities are helping me get or keep in touch with diverse people. A coffee roaster, a former student, some local friends in both Montreal and Austin…

Though I tend not to care so much, I notice that visits to my main blog have been on the rise, in the past few months. If this tendency is maintained, I might get beyond my previous record of 5,867 visits in a month (in February, 2007). Through the rest of 2007, monthly visits to this blog ranged between 3,500 and 4,500, with a dip to 2,800 in June. (Yeah, I know. Fas-ci-na-ting.)

What’s more, I think that a larger proportion of visits to my blog are to posts I personally find interesting (as opposed to some silly posts which get lots of hits because their titles).

I’m now a bit more familiar with the new interface for WordPress.com blogs. Though the change was probably not visible to readers, the changes are rather extreme. What I find sad is that several features went away with the update: realtime wordcount, list nesting, automatic answerlinks, drag-and-drop widget management, and comma-separated categories. None of these features was really essential and the last one had good reasons to go, but it still implies a major adaptation. In fact, as much as I enjoy blogging on WordPress (and as grateful as I am to have access to a feature-full free blog host), I take issue with some of the ways Matt Mullenweg and his Automattic crew have treated WordPress.com users, on occasion. In this case, it would have been much easier if they had described the changes in advance, providing some documentation to enable a smooth transition. I know the update’s focus was on WordPress installed on people’s servers (i.e., not on blogs hosted on WordPress.com). But it does make me feel like a second-class citizen, which may not be what Automattic wants.

Thanks in part to changes in the way WordPress.com handles tags and categories, I’ve been able to clean up some of my categories for this blog. It’s still pretty much a mess, I know. But it’s much closer to being manageable than it was. And I notice the difference quite easily.

I also shuffled some widgets around my blog design, which was surprisingly difficult because of the changes in the WordPress.com interface. I think my blog is just a bit cleaner than it was.

The fact that my daily average blogpost count has increased in the past several days is partly due to a decision of mine to do more things through my blogs. I eventually realized what part blogging had to play in my life and these past several days were an occasion for me to use blogging as a kind of release. There really is something quite therapeutic about blogging.

One thing it might mean, though, is that this blogging spree will taper off relatively soon. As I’m preparing to move for the 22nd time since December, 2000, it’ll probably be best if I focus on other things besides blogging.

The cool thing is, blogging allows for this kind of behavior. The only thing a decrease in my blogging activities might mean is a drop in readership. But I care very little about hits and there are other ways for me to get in touch with people.

New/Old Media: NYT Groks It

As an obvious example of “Old Media” in the U.S., The New York Times is easy to criticize. But the paper and the media company have also been showing signs that maybe, just maybe, they are home to people who do understand what is happening online, these days.

Back in September 2007, for instance, the NYT decided to make its content freely available. While The Times wasn’t the first newspaper to free its content, the fact that the “newspaper of record” for the United States went from a closed model (TimesSelect) to an open one was quite consequential. In fact, this NYT move probably had an impact on the Wall Street Journal which might be heading in a similar direction.

The Times‘s website also seems to have progressively improved on the blogging efforts by some of its journalists, including composer and Apple-savvy columnist David Pogue.

Maybe this one is just my personal perception but I did start to read NYT bloggers on a more regular basis, recently. And this helped me notice that the Times wasn’t as “stuffy and old” as its avid readers make it to be.

Possibly the silliest detail which has been helping me change my perception of the New York Times was the fact that it added a button for a “Single Page” format for its articles. A single page format is much more manageable for both blogging and archiving purposes than the multiple page format inherited from print publications. Most online publications have a “printer-friendly” button which often achieves the same goal as the NYT’s “single page” button yet, quite frequently, the printer format makes a print dialogue appear or is missing important elements like pictures. Not only is the NYT’s “Single Page” button a technical improvement over these “printer-friendly” formats but it also seems to imply that people at the Times do understand something about their online readers.

This “Single Page” button is in a box, with other “article tools” called “Print,” “Reprints,” and “Share.” The “sharing” features are somewhat limited but well-integrated. They do make it easy for some social networkers and bloggers to link to New York Times content.

FWIW, my perception of this grande dame of print publications is greatly influenced by my perception of the newspaper’s blog-friendliness.

Speaking of blog-friendly… The major news item making the New York Times Company seem even more sympathetic to bloggers is the fact that it has contributed to a round of funding which provided WordPress.com’s parent company Automattic with 29.5 M$.

Unsurprisingly, Automattic’s founder Matt Mullenweg blogged about the funding round. Candidly recounting the history of his company, Mullenweg whets our appetites for what may be coming next in WordPress and in other Automattic projects:

Automattic is now positioned to execute on our vision of a better web not just in blogging, but expanding our investment in anti-spam, identity, wikis, forums, and more — small, open source pieces, loosely joined with the same approach and philosophy that has brought us this far.

While some of these comments sound more like a generic mission statement than like a clear plan for online development, they may give us a glimpse of what will be happening at that company in the near future.

After all, chances are that integrating technologies will be one of the Next Big Things. In fact, some other people have seen the “social networking” potential of WordPress.com, though this potential is conceived through a perspective different from my original comments about WordPress.com’s network effect. Guess I’ll have to write a wishlist for WordPress.com features (including support for ubiquitous social networking, podcasting, and learning management).Still, what the funding announcement means to me has more to do with the integration of “Old Media” (print publications like The New York Times) and “New Media” (online services like WordPress and WordPress.com). As luck would have it, I’m not the only blogger who thinks about the positive effects this Old/New Media integration may have.

As an aside, to this Austinite and long-time sax player, Matt Mullenweg’s Texas and saxophone connections are particularly endearing. Good thing I’m not an investor because I would probably follow my gut feeling and invest in Automattic for such irrational reasons.

Ah, well…