Drupal rescue project checklist

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
You are viewing a wiki page. You are welcome to join the group and then edit it. Be bold!

This wiki page is intended to be a list of best practices for recovering a project that is unknown (asin a new developer to a project) or has been built ignoring Drupal best practices.

  • Figure out how the site works - Do a screen share with the client to learn what they do on a regular basis. Find their pain points
  • Module inventory what modules are installed and why?
  • Review any custom module code, run coder module
  • Set up admin menu and, with client approval, an admin theme (if not done already)
  • Review content on the site and note irregularities
  • Check content types and see the fields used
  • Review log files for potential issues
  • Install hacked module and run drush hacked-details drupal and drush hacked-diff drupal and record result for analysis or use the GUI and review the reports if you don't have Drush
  • Install security review module and run tests
  • Record Bugs & Feature requests as user stories in ticketing system
  • When you push a fix you need to test EVERYTHING (ie top level pages, editing and adding nodes) to make sure nothing else is busted. Better still, create automated tests (Selenium, simpletest)
  • Take a look at the theme, template files, info file and template.php for funkiness (ie hard coded paths, no t function, unnecessary markup)

Rescue projects are fragile!

For any given goal in Drupal, there are 10 ways to do it, and 5 of them are correct, and 7 of them are OK and 9 of them are tolerable.

What is not tolerable?:

  • Hacking Core
  • Security Holes
  • Severely Broken Functionality

Comments

my 2 cents

fndtn357's picture

I have used an Acquia checklist in my assessment of an inherited Drupal site that needs rescue. I look forward to new/old ideas and tools that others use when diagnosing and preparing to rescue/repair/upgrade Drupal web sites.

Drupal Information

  • Base Drupal version
  • Installed modules (number of)
  • Node count
  • User count
  • Number of watchdog entries (since xx/xx/xxxx)
  • Last cron run (date/time)
  • Node access modules enabled? Which?
  • Drupal able to access outside URLs
  • Site status report
  • Database updates pending
  • Update notifications



My SQL

  • Number of full table scans
  • Times handler read next occurred
  • Number of joins with table scans
  • Number of MySQL table locks
  • Query hit cache ration
  • Number of queries pruned from cache
  • Number of select range checks
  • Number of sort merge passes
  • Number of times temp tables were created on disk



Security

  • Overall site security
  • Recent failed logins
  • Recent 404s
  • Recent errors (criticals, alerts and emergencies)
  • Access all views permission grants
  • Admin name too simple
  • Altered core distribution
  • Anonymous users with admin privileges
  • All authorized users with admin privileges
  • Display PHP errors set
  • Displaying errors on page
  • Is administrators profile viewable
  • Missing UID 0 from users table
  • Syslog module not enabled
  • PHP filter enabled at all
  • PHP filter enabled for input types anonymous
  • PHP filter enabled for input types
  • Settings file insecure
  • SSL not required for login
  • Too many administrators (10+)
  • Update free access is allowed
  • Register globals is enabled
  • Missing robots.txt
  • Missing site.xml



Modules

  • What modules are installed and enabled?
  • What modules are installed and disabled?
  • Module versions (enabled)
  • Module versions (disabled)
  • Is the module core?
  • Is it on Drupal.org?
  • Has it been modified?
  • If so, whats the diff?



PHP info

  • Maximum PHP memory size
  • Maximum POST size
  • Maximum file upload size
  • Maximum script execution time



Performance

  • Total requests
  • Uncached requests
  • Drupal requests
  • Performance alerts
  • APC enabled and working?
  • Block cache enabled?
  • Cache under 5 minutes (consistently)
  • Coder module enabled (production only)
  • Custom inbound/outbound URL rewrite in settings.php
  • Database logging enabled
  • Devel module enabled (production only)
  • Enabled module count too big
  • Migrate module enabled (production only)
  • Page cache max age too low
  • Page cache not enabled
  • Page compression not enabled
  • Preprocess CSS not enabled
  • Preprocess JS not enabled
  • Simpletest enabled (production only)
  • Theme registry rebuild on every page load
  • Views UI enabled (production only)
  • PHP memory too high
  • PHP Max script execution time too high



System information

  • Operating system
  • PHP version
  • MySQL version
  • Web Server and version
  • Curl
  • Drush installed
  • Source control

LA Drupal [Los Angeles Drupal]

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds:

Hot content this week