The following pages document our IT infrastructure with its standards and procedures for those people interested in getting involved and contributing. We are always looking for:
Following are all the accounts and resources used by the FSP IT infrastructure. All account passwords are centrally stored at the Clipperz site, and administrators have the master password to this account to recover individual username / password pairs for other accounts.
| Provider |
Description |
Account ID / Username |
| Clipperz |
Password manager, stores all account passwords used by the FSP IT team / systems. |
fspadmin |
| Google Apps | Hosts email for freestateproject.org domain. No central account admin. | freestateproject.org |
| Google Analytics | Google Analytics account |
UA-1496848-1 |
| EasyDNS | Hosts freestateproject.org DNS service |
adamrick |
| John Companies |
Web site hosting company |
|
This page will evolve continuously. Refer also to the Create Content Procedure for step-by-step instructions for creating pages and images.
For page titles, file names, and path aliases, do not abbreviate unnecessarily. Use longer, descriptive names and complete words. These are more easily recognized by your fellow content maintainers and picked up by search engines. Especially for file names consisting of many words, start with the most significant word (the reverse of English grammar). Examples:
Every path alias should begin with the Center to which the page will be assigned. At present there are ten Centers, which generally correspond to one of the FSP's departments: org, press, news, events, merchandise, photo, nhinfo, community, volunteer, advertising, and it. Paths should be *entirely* in lower case.
Pages should be assigned a Center and, if appropriate, an Issue, Strategy, and/or State. These help to categorize pages for easier searching.
Choose a one or two-column layout depending on the nature of your content. As a general rule, one-column layouts are appropriate for "documents" (e.g. something you might bang out in MS Word), while two-column layouts are better for home pages, or other information-dense pages. But narrower columns are also easier to read, as the human eye has a hard time following long lines of text and finding the beginning of the next, so consider using two columns even for ordinary documents.
Try to include a photograph or other graphic! These catch the user's eye, and make the page more memorable. However, keep all images less than 500px in width to avoid breaking the layout at screen widths of less than 1024.
When linking to another page on the FSP site, leave off the domain name, e.g. use /org/presidentscorner instead of http://freestateproject.org/org/presidentscorner.
Avoid forcing styles--concentrate primarily on the content and not its style. Use *semantic* tags like H1, H2, p, ul, ol, strong, etc. That way the look and feel of the entire site will be consistent, even if changes are made.
There are four possible instances in the FSP development environment:
Each of these points to a folder link (note: not a folder, but a link that can point to folders) in the /home/freestat/public_html directory on the development server, and this folder link is named after the development instance (i.e. dev, dev1, ....). Each of these instances is also associated with a unique database named after the instance (freestat_dev, freestat_dev1, ...), and a unique user with the same name as the database.
An anonimized copy of the production database is copied to the development environment once a week, to /home/freestat/anondb/fsp_anon.sql.gz. This copy can also be generated at will when required. On the development server, an hourly cron batch processes any fresh copies of this file into four files ready to be loaded into any of the development databases (named dev.sql, dev1.sql, etc.).
To bring up a new instance of a development environment, follow these steps:
cat ~/anondb/dev1.sql | mysql -u freestat_dev1 freestat_dev1 -p
cd ~/public_html
svn export $FSPSVN/trunk
mv trunk dev_stuff
ls -l ~/public_html/dev1
rm ~/public_html/dev1
ln -s ~/public_html/dev_stuff ~/public_html/dev1
rm -rf ~/public_html/old_dev1
| Company: |
John Companies |
| Type: | Virtual private server |
| Resources: | Mid-level package + 5GB extra disk space |
| IP address: |
69.55.238.21 |
| DNS servers: |
ns1c.johncompanies.com 69.55.225.225 ns2c.johncompanies.com 69.55.230.3 |
| Control panel: |
https://69.55.238.21:4643 |
| Operating System: |
Debian Linux |
| Company: | Site 5 |
| IP Address: |
209.123.202.149 |
| Type: |
Shared hosting |
| Control panel: |
http://backstage.site5.com |
DNS hosted at EasyDNS.
| Description | Address |
Host |
| Organization email host: |
All email at freestateproject.org domain |
Google Apps |
| Organizers list: | organizers@freestateproject.org | http://lists.freestateproject.org |
| Doers list: |
http://groups.yahoo.com/group/fsp-doers/ |
Yahoo Groups |
| IT list: |
http://tech.groups.yahoo.com/group/fspit/ |
Yahoo Groups |
| Greeter email forwarder: |
thefreestate@gmail.com |
Gmail |
The site is being monitored for availability via a basic free monitoring account at HostTracker. It should be considered to upgrade this account to a paid account with a higher poll frequency and content check features when the service has been tested thoroughly. The details are:
| Service URL: | HostTracker |
| Account login: |
fsp |
| Alert emails: |
alert@freestateproject.org |
| Poll frequency: |
Once every 30 minutes |
This documents the current registration process, the transfer of registrations between the original system, and the history of registrations. It is a work in progress.
This count is shown below the participant count in the site header. The count should consist of the following:
The following steps must be followed when releasing a new version of the Drupal site code. If needed, the site can be made unavailable during this procedure via the admin maintenance setting in Drupal. Also, major releases may require a database backup to precede this procedure.
cd /var/www
svn export $FSVN/tags/release_3.16
mv release_3.16 www-r3.16
rm www.freestateproject.org; ln -s ./www-r3.16 ./www.freestateproject.org
rm www.freestateproject.org; ln -s ./www-r3.15 ./www.freestateproject.org
Release notes for code releases. The release numbers correspond to release_X.Y tags in the source repository.
This release adds the following functionality:
Note that several modules had to be removed, due to the fact that their functionality had been merged into the Drupal core or other modules, or that no 5.x compatible versions of the modules could be found. It is not expected that the absence of these will influence functionality.
Fixed the following:
- Missing membership kit PDF on registration page
- Incorrect references to JSPs on old site (changed to equivalent content in new site)
The stats calculations were updated:
The following changes were rolled out:
Security updates for:
(1) SA-2007-025
(2) SA-2007-024
These features were released:
These items were released:
The following items are contained in this release:
Move triggers have been added to the registration page, per the requirements approved by the board. Note the following:
The following was changed:
1) CCK module added (for "News Item" content type)
2) Panels module added (for two-column content)
3) Views module added (for blocks containing news & blog items)
4) Style changes to support news & blog views on front page
The menu styles were fixed to lay out the new sidebar menu in a sane way.
The following modules were installed, to support rich profiles:
The following changes were made:
The following were changed:
Numerous modules were released to support the Roadmap. The authenticated role was moved out to the settings file, in order that the role may be changed without changing code.
The following changes were made:
Find attached a spreadsheet showing the development roadmap and status. The IT Plan for 2006 is also attached for reference.
The FSP Information Technology Department (FSP IT) supports the FSP mission by providing IT services to all FSP stakeholders as represented by the various FSP departments. These IT services are primarily content and functionality that are found on the FSP web site. Every web site function shall have an owner among the FSP leadership, and every FSP leader should have a clearly defined area on the web site which he maintains and improves. As the FSP is an activist organization facing significant challenges and competition, FSP IT services should reflect best practices among the FSP's peers: namely, charitable, libertarian and activist organizations.
As a virtual, decentralized, web-based volunteer organization that owes its conception, existence, and success to the Web, the FSP needs to make maximum use of web technologies. Googling the buzzword "Web 2.0" will provide a wellspring of inspiration. Throughout this document, functionality and goals are divided into three categories: Content, Community, and Collaboration.
Primary goals are:
The FSP Drupal site code is under version control. All items contributing to site functionality outside of the "files" subdirectory, and outside the database are kept in the source repository. Specifically included are:
All releases of code are made from the source repository. Changes directly to the site are deprecated.
In the rare event where there was no alternative to making an emergency change directly on the site, the FSP IT group mailing list has to be notified immediately, with a description of the change and a list of files changed. The changes will then be accomodated after the change, and the emergency release tagged after the fact. Needless to say, this should be avoided, as it can lead to changes being lost with resultant time wasted.
The source code repository is maintained with subversion, and the subversion server can be accessed at http://svn2.assembla.com/svn/fsp. A local svn client (see the support section below) will be needed to access the repository, and a valid username/password combination will be needed (mail a request to the FSP IT mailing list to get one).
The structure was chosen because it lends itself to a loosely-coupled environment like the FSP IT group. The main features of the structure are:
Inside the repository, there is the high-level structure below:
| www |
Holds all Drupal-related code |
| www/trunk |
The main development trunk. The trunk is where branches are merged to and releases made from. Only relatively small fixes are made directly on the trunk. |
| www/branches |
Contains branches. A branch is created whenever the development of a new set of functionality is started, or when a defect fix is started. Unrelated changes should get branches of their own, in order not to influence other changes needlessly. |
| www/branches/fix_missing_block | A hypothetical defect fix branch to fix a very specific problem. All defect branches should follow the naming convention (fix_...). |
| www/branches/dev_organic | A hypothetical development branch. All development for this function is checked in on this branch until it is ready for release. The naming convention should be followed (dev_...). |
| www/tags | Tags of important states in the history of the source code. E.g. release tags, branch creation tags, etc. |
| www/tags/release_X.Y | Hypothetical release tag for release X.Y. |
| www/tags/dev_organic_start |
A tag indicating where the (hypothetical) branch dev_organic was started from. Tagging branch starts and ends makes things a lot easier when merging code, and all branch start points should be tagged like this, with the naming convention [branch_name}_start. |
|
www/tags/fix_missing_block_premerge |
When a branch is merged back to the trunk, pre- and post-merge tags on the trunk indicate where these changes were merged. Merge tags, like branch tags, are very useful. For reference, the merge source point on the branch is tagged too. Note the naming convention {branch_name]_premerge/postmerge/mergesrc. |
Here are a couple of examples using the command-line version of subversion. In the examples, $FSVN is used as shorthand for the repository URL given above.
First, create the starting point tag for the branch (useful to compare changes to where the branch started from):
svn cp $FSVN/www/trunk $FSVN/www/tags/dev_organic_start -m "Created dev_organic branch start tag"
Then, create the branch itself:
svn cp $FSVN/www/tags/dev_organic_start $FSVN/www/branches/dev_organic -m "Created dev_organic branch"
And finally check it out locally:
svn co $FSVN/www/branches/dev_organic
First get the current trunk, which is usually equal to what's in production:
svn co $FSVN/www/trunk
Then, merge the branch, using the branch start tag and current tip:
cd trunk
svn merge $FSVN/www/tags/dev_organic_start $FSVN/www/branches/dev_organic .
Review the merged changes, ensure there are no conflicts, and confirm that they make sense:
svn diff | less
Then tag the pre-commit point, commit the changes, and tag the post-commit point:
svn cp $FSVN/www/trunk $FSVN/www/tags/dev_organic_premerge -m "dev_organic pre-merge tag"
svn commit -m "Merged dev_organic branch"
svn cp $FSVN/www/trunk $FSVN/www/tags/dev_organic_postmerge -m "dev_organic post-merge tag"
There is a subvrsion book available at svnbook.red-bean.com. The main subversion site is at subversion.tigris.org, where a list of clients for various platforms can be obtained, including TortoiseSVN at tortoisesvn.net, which is a popular GUI client.
The hosting company backs up the following directories on a daily basis:
| /var/www |
Web server files (drupal, forum, etc.) |
| /var/log/apache |
Web server log files |
| /etc/apache | Web server configuration |
| /var/lib/mysql | Mysql database files |
| /home/webadmin |
Web admin user home folder (db dumps, etc.) |
Each database on the server is backed up via a daily webadmin cron process The backups are written to the /home/webadmin/db-backups directory. The script takes care of rotating files, and keeping weekly and monthly backups. Monthly backups need to be cleaned out from time to time.
The following backups are kept, in a separate file for each database:
Offsite backups of the database and files folders are made daily via a webadmin cron rsync: