====== 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.