====== 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 ======
[[http://drupal.org | 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 © 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
=== Menus ===
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:
* [[http://www.oscom.org/matrix/xaraya.html | Xaraya]]
* XOOPS
* Bricolage
* [[http://www.nucleuscms.org/ | Nucleus]]
* [[http://www.phpwcms.de/ | phpWCMS]]
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.