User Tools

Site Tools


build:cms

Requirements

These are the must-have requirements for a CMS:

  • Must be Open Source / Free Software
    • Active community, so we know it'll be well supported into the future
  • Looks like a "normal" web site, with mostly static content
    • Packages like Plone and PHP-Nuke pretty much fail in this respect
    • Most Wikis fail in this respect
  • Editing a page is moderately easy, using WYSIWYG or wiki-like syntax
    • We don't want to have to edit raw HTML, but would like the ability to
  • Accounts/ACLs limit who can edit pages, on a per-directory basis
    • Different groups of people will have different access rights
    • Flexible authentication (LDAP, MySQL, etc.)
  • URLs look like URLs of a "normal" web site
    • Allows us to mirror the structure of our existing web site
    • Uses Apache mod_rewrite, but the CMS needs to be aware of the rewriting
  • Should use modern standards and practices, such as XHTML and CSS
    • CSS is essential to making the site work well
      • Our existing sites were a mess of FONT tags
    • XHTML isn't necessary; valid HTML 4.01 would suffice
  • Not too hard to install or customize
    • PHP preferred
    • Nothing more complex storage-wise than MySQL or PostgreSQL
    • Java-based systems are probably too hard to set up
    • Zope is difficult to get working right
    • Drupal took too much configuration
  • Expandable, so we can add non-static pages later
    • We'll probably want to add things such as a calendar of events, polls, etc.
    • Bonus points if it's easy to integrate 3rd-party packages
  • Site search
  • Templates, so all pages have the same structure

Other things that would be nice:

  • Calendar of events
  • News
  • RSS feeds
  • Per-user configuration
  • Site statistics
  • Integration with MailMan
  • Forums
    • Especially if the forums have bi-directional gateway with MailMan lists

Drupal

Drupal is a popular Content Management System (CMS). It is used to handle web sites that include various components of functionality.

We chose Drupal after considering a few other CMSes. We tried installing and using a few others, and came to the conclusion that Drupal is the most flexible, and comes closest to meeting our requirements.

We considered tried using a pre-release version of Drupal 6, but had to revert to Drupal 5. Even though Drupal 6 is in code freeze and is set to be released in a few months, very few modules and themes have support for it yet.

Pre-Requisites

Drupal requires the following:

  • Apache
  • PHP (4.3.3+ or 5.x)
  • MySQL (4.1 or higher)

Installation

Download Drupal:

cd /home/web/test.sluug.org/
wget http://drupal.org/files/projects/drupal-5.2.tar.gz

Unpack the program:

tar xfz drupal-5.2.tar.gz
rm drupal-5.2.tar.gz

Create a directory for uploaded attachments (TODO: not sure if this is still required):

mkdir drupal-5.2/files
chmod 2755 drupal-5.2/files

Change the ownership of the files:

chown -R www-data:www drupal-5.2
find ./drupal-5.2 -type d | xargs -L1 chmod g+ws
find ./drupal-5.2 -type f | xargs -L1 chmod g+w

Create MySQL database (replace $DRUPAL_MYSQL_USER with the real username, and $DRUPAL_MYSQL_PWD with the real password):

database='drupal'
user="$DRUPAL_MYSQL_USER"
password="$DRUPAL_MYSQL_PWD"
mysql <<-EOF
  CREATE DATABASE $database DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES
    ON $database.* TO '$user'@localhost IDENTIFIED BY '$password';
  FLUSH PRIVILEGES;
EOF
mysqladmin reload

Save the username and password in a [drupal] section of /root/.my.cnf for safe-keeping.

Point the "current" directory, where the Apache instance points, to the just-downloaded version:

rm current
ln -s drupal-5.2 current

Launch the site (http://test.sluug.org/). You should see the Drupal Database Configuration page. Select the mysqli database connector. Enter the name of the database, the database user, and the database user's password (from above).

Click on the Save button, and you should get a screen saying Drupal installation complete. Click on the link to visit the new site.

Click on the link to create the first account. This first account will have full admin priveleges. Call the account 'admin'. Enter an email address. For the very first account, the password will be randomly generated and printed to the screen. Record the password in /root/.my.cnf for safe-keeping. Change the user's time zone.

Set up a cron job to do some housekeeping activities once every hour, and run it once initially:

echo -e '#!/bin/bash\nwget -O - -q http://test.sluug.org/cron.php' > /etc/cron.hourly/drupal
chmod +x /etc/cron.hourly/drupal
/etc/cron.hourly/drupal

Modules

Download the add-on modules that you'd like to use.

cd current/modules
wget http://ftp.drupal.org/files/projects/gallery-5.x-1.0.tar.gz
wget http://ftp.drupal.org/files/projects/calendar-5.x-1.5.tar.gz # requires Views and Date modules
wget http://ftp.drupal.org/files/projects/cck-5.x-1.6-1.tar.gz
wget http://ftp.drupal.org/files/projects/views-5.x-1.6.tar.gz
wget http://ftp.drupal.org/files/projects/date-5.x-1.6.tar.gz
wget http://ftp.drupal.org/files/projects/jstools-5.x-0.8.tar.gz
wget http://ftp.drupal.org/files/projects/tinymce-5.x-1.9.tar.gz # have to download TinyMCE itself manually
wget http://ftp.drupal.org/files/projects/fckeditor-5.x-1.3-beta.tar.gz
wget http://ftp.drupal.org/files/projects/htmlarea-5.x-2.0.tar.gz
wget http://ftp.drupal.org/files/projects/widgeditor-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/wymeditor-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/linktocontent-5.x-1.6.tar.gz # TinyMCE extension
wget http://ftp.drupal.org/files/projects/easylink-5.x-1.x-dev.tar.gz # drop-down for TinyMCE links
wget http://ftp.drupal.org/files/projects/easylists-5.x-0.1.tar.gz
wget http://ftp.drupal.org/files/projects/footnotes-5.x-1.2.tar.gz
wget http://ftp.drupal.org/files/projects/marksmarty-5.x-1.x-dev.tar.gz # MarkDown plus SmartyPants
wget http://ftp.drupal.org/files/projects/textile-5.x-2.1.tar.gz
wget http://ftp.drupal.org/files/projects/texy-5.x-3.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/pearwiki_filter-5.x-1.1.tar.gz # requires PEAR Text_Wiki
wget http://ftp.drupal.org/files/projects/bueditor-5.x-1.0.tar.gz # customizable editor
wget http://ftp.drupal.org/files/projects/admin_message-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/decisions-5.x-1.0.tar.gz # voting for decision-making, see also http://drupal.org/project/advpoll
wget http://ftp.drupal.org/files/projects/editablefields-5.x-1.0.tar.gz
wget http://ftp.drupal.org/files/projects/default_filter-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/formdefaults-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/smartypants-5.x-1.0.tar.gz
wget http://ftp.drupal.org/files/projects/typogrify-5.x-1.x-dev.tar.gz # includes SmartyPants plus other similar goodies
wget http://ftp.drupal.org/files/projects/smileys-5.x-1.2-beta.tar.gz
wget http://ftp.drupal.org/files/projects/codefilter-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/cck_button-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/fivestar-5.x-1.7.tar.gz # requires VotingAPI

Unpack the modules, and remove the tarballs.

ls -1 *.tar.gz | xargs -L1 tar xfz
rm *.tar.gz
cd ../..

Themes

Download the add-on themes that you'd like to make available.

cd current/themes
wget http://ftp.drupal.org/files/projects/abac-5.x-1.4.tar.gz
wget http://ftp.drupal.org/files/projects/aberdeen-5.x-1.7.tar.gz
wget http://ftp.drupal.org/files/projects/activesigns-4.7.x-1.x-dev.tar.gz # based on SpreadFirefox, 4.7
wget http://ftp.drupal.org/files/projects/Aeon5-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/andreas01-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/antique_modern-5.x-1.2.tar.gz # no left sidebar
wget http://ftp.drupal.org/files/projects/base-5.x-1.x-dev.tar.gz # good base for new themes
wget http://ftp.drupal.org/files/projects/cms-theme-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/combustion-5.x-1.0.tar.gz
wget http://ftp.drupal.org/files/projects/danger4k-5.x-1.1.tar.gz
wget http://ftp.drupal.org/files/projects/deco-6.x-1.0.tar.gz # Drupal 6
wget http://ftp.drupal.org/files/projects/dreamy-5.x-1.3.tar.gz
wget http://ftp.drupal.org/files/projects/fancy-5.x-1.0.tar.gz
wget http://ftp.drupal.org/files/projects/fern-4.7.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/glossyblue-5.x-1.0.tar.gz # no left sidebar, SpreadFirefox derivative?
wget http://ftp.drupal.org/files/projects/golden_hour-5.x-2.2.tar.gz
wget http://ftp.drupal.org/files/projects/litejazz-5.x-1.1.tar.gz
wget http://ftp.drupal.org/files/projects/lumen-5.x-1.x-dev.tar.gz # good base, lots of classes, jQuery
wget http://ftp.drupal.org/files/projects/multiflex37-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/MyDrupal_Impact-5.x-1.4.tar.gz
wget http://ftp.drupal.org/files/projects/MyDrupal_Universal-5.x-1.1.tar.gz
wget http://ftp.drupal.org/files/projects/nautica09-5.x-1.2.tar.gz
wget http://ftp.drupal.org/files/projects/newsportal-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/newsportal02-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/niftyCorners-5.x-1.x-dev.tar.gz # looks like SpreadFirefox some
wget http://ftp.drupal.org/files/projects/ocadia-5.x-1.0-1.tar.gz
wget http://ftp.drupal.org/files/projects/Pleroma-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/purple_beauty-5.x-1.1.tar.gz
wget http://ftp.drupal.org/files/projects/scribbish-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/SEOposition-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/sharepoint-like-5.x-1.0.tar.gz
wget http://ftp.drupal.org/files/projects/SHINOBI-5.x-1.3.tar.gz
wget http://ftp.drupal.org/files/projects/sib-5.x-1.1.tar.gz
wget http://ftp.drupal.org/files/projects/sinatra-5.x-1.0-1.tar.gz
wget http://ftp.drupal.org/files/projects/soccer-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/spreadfirefox-5.x-0.1.tar.gz
wget http://ftp.drupal.org/files/projects/spring_bloom-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/sweethome-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/sympal_theme-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/terrafirma_theme-5.x-1.3.tar.gz
wget http://ftp.drupal.org/files/projects/greenhouse-5.x-1.1.tar.gz
wget http://ftp.drupal.org/files/projects/treedesert-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/ubiquity-5.x-0.11.tar.gz
wget http://ftp.drupal.org/files/projects/wall-5.x-1.x-dev.tar.gz
wget http://ftp.drupal.org/files/projects/webchick-5.x-1.1.tar.gz
wget http://ftp.drupal.org/files/projects/zen-5.x-0.6.tar.gz # good base
wget http://www.minimalistic-design.net/minimalistic.zip

Unpack the themes and remove the tarballs.

ls -1 *.tar.gz | xargs -L1 tar xfz
unzip *.zip
rm *.tar.gz *.zip
cd ../..

Configuration

Login to the site with the new 'admin' account and the password that was selected for you. Make sure .htaccess is set properly, before trying to get Clean URLs to work.

All configuration is done via the Administer menu on the left.

Site Configuration

Site Information

Name: Saint Louis UNIX Users Group

E-mail address: webhead@sluug.org

Slogan: Open Source, Open Standards, Open Systems

Mission: To promote Open Source, Open Standards, and Open Systems.

Footer message: Copyright &copy; 2007 by Saint Louis UNIX Users Group

Anonymous user: Guest

Default front page: home

Clean URLs

Click on the "Test Clean URLs" link.

Clean URLs: Enabled

Date and Time

Default time zone: -0500 (NOTE: For Central Daylight Time; use -0600 if not in Daylight Saving Time)

Configurable time zones: Enabled

Short date format: 2007/08/20 12:17pm

Medium date format: Mon, 2007/08/20 12:17pm

Long date format: Monday, August 20, 2007 - 12:17pm

First day of week: Sunday

Error Reporting

Error reporting: Write errors to the log

Discard log entries older than: 4 weeks

File System

File system path: files

Temporary directory: /tmp

Download method: private

Page Caching

Caching mode: normal

Minimum cache lifetime: none

Site Maintenance

Site offline message: The Saint Louis UNIX Users Group web site is currently under maintenance. We should be back shortly. Thank you for your patience.

TODO: Input Formats

NOTE: We really have to wait until we define roles for this to work right. We should also wait for installation of modules that add new input filters.

User Management

User Settings

Public registrations: Visitors can create accounts but administrator approval is required.

CHECK: Require e-mail verification when a visitor creates an account

Picture support: Enabled

Roles

Add roles:

  • web admin
  • web editor
  • board member
  • officer
  • silver member
  • gold member
  • platinum member
  • voting member

Access Control

Give web admin all rights.

Give web editor these rights:

  • administer comments
  • post comments without approval
  • administer menus
  • all items in node module
  • select different theme
  • administer taxonomy

TODO: Give other rights to other users.

Site Building

Modules

Enable the following modules:

  • Aggregator
  • Color
  • Comment
  • Contact
  • Forum
  • Help
  • Menu
  • Path
  • Ping
  • Poll
  • Profile
  • Search
  • Statistics
  • Taxonomy
  • Throttle
  • Tracker
  • Upload

Save so you can enable throttling on the same page. Enable throttling for all enabled modules, EXCEPT:

  • Menu
  • Path
  • Ping
  • Profile
  • Taxonomy
  • comment, forum, help, poll, profile, tracker, upload

Create menu items in Primary links menu to point to top-level SLUUG sites.

Blocks

Add the following blocks to the Right Sidebar:

  • Search form
  • Most recent poll
  • Syndicate

Configure Syndicate settings, to change block title to RSS Feed.

Administer/Blocks/List

	Enable everything but Recent Comments.
	TODO: Check Custom for everything but Navigation, User Login, and Throttle Status???
	Set weights:
		Navigation: -10
		User login: -9
		Most recent poll: -5
		Syndicate: 10
	Change to the right side:
		Popular content
		Most recent poll
		Who's new
		Syndicate

Administer/Settings/Profile

	Add single-line text field:
		Category: Personal Info
		Title: Real Name
		Form name: profile_realname
		Explanation: Please enter your real name.
		Weight: -5
		Visibility: Private field
		The user must enter a value.
		Visible in user registration form.
	Add single-line text field:
		Category: Personal Info
		Title: Location
		Form name: profile_location
		Explanation: Please enter the city (and state) you live in. (For consistency, please spell out the word "Saint" if applicable.)
		Weight: -3
		Visibility: Public field, content shown on profile page and on member list pages.
		Page title: City (TODO: Not sure what to put here.)
		The user must enter a value.
		Visible in user registration form.
	TODO: More user info.

Administer/Users/Configure/Access Rules

Administer/Users/Configure/Settings

Administer/Settings/Search

	Minimum word length to index: 1
	Noise words: the, and, or, not, a, to,
			he, she, it, I, me, they, them, their, my, we

Administer/Settings/Statistics

	Enable access log: Enabled
	Discard access logs older than: 4 weeks
	Count content views: Enabled
	Display counter values: Enabled
	Number of day's top views to display: 5
	Number of all time top views to display: 5

Administer/Content/Configure/Default Workflow

	Page: R/W comments, publish, promote, sticky, revision
	Story: R/W comments, publish, promote, revision

Administer/Comments/Configure/Settings

	Default comments per page: 30
	Comment controls: Display above and below the comments
	Anonymous poster settings: Anonymous posters may leave their contact information

Administer/Themes/Select

	Enable all themes.

Themes

Download and install the SpreadFirefox theme:

cd /home/web/www.sluug.org/themes/
wget http://drupal.org/files/projects/spreadfirefox-cvs.tar.gz
tar xfz spreadfirefox-cvs.tar.gz
rm spreadfirefox-cvs.tar.gz

Administer/Themes/Select

Enable all themes.
Select SpreadFirefox as the default theme.

After enabling the theme, you can go back in and configure it.

Notes

I'm not terribly confident with all the configuration choices I made. This is basically a rough first cut.

Add More Modules

  • Codefilter
  • Copyright
  • Diff
  • Event
  • EventRepeat
  • EvenyFinder
  • FCKeditor
  • Google Sitemap
  • HtmlArea
  • LiveSearch
  • Markdown
  • Nicelinks
  • SmartyPants
  • Textile
  • TinyMCE

TODO

Try some more plugins, modules, templates, etc.

Try some other CMSes. Perhaps these:

Determine more/better configuration settings.

Periodic backups of the entire content of the site.

Can we create sections of the site that are only visible to certain accounts? For example, it would be very handy (I'd go so far to say that it's a requirement for a CMS for use) to have a section that only officers can read (for things like phone numbers, etc.).

Credits

Initially installed, configured, and documented by Craig Buchek, 2005-02-23.

Installed version pre-6.0 from CVS – Craig Buchek, 2007-06-08, 2007-08-20.

build/cms.txt · Last modified: 2008/01/08 19:23 by 206.197.251.51