Share my experience in building a website

Submitted by YAN Chao-Gan on

Dear all,

I would like to share some experiences in building a website – it might be helpful for someone who wants to build their own websites.

1.     Decide what kind of website you want to build. E.g., I would like to build rfmri.org to be a supporting network for R-fMRI studies. In this website, I would like to reform the centralized discussion to distributed discussion -- R-fMRI researchers can communicate with each other directly. Through the network, we can share our ideas, comments, resources, tools, experiences, data. Also, the current peer-reviewed system is kind of slow, I would like push some changes to peer-viewed system, thus we can exchange our opinions more directly, conveniently and efficiently.

2.     Buy web space and domain name(s). I bought the ipage essential plan: $1/month, unlimited Disk space, bandwidth and email addresses, free domain registration. Their price may go a little higher now: $1.89/month. (Interested in? Please do not forget to click this link before registering ipage’s service; you can help me to reduce my cost. orz, :) )

Note: I decided I will not have only one server, but have development, staging, live servers to ensure the stability. Thus I used the essential plan for development and staging servers, and will push the living server to their vps plan to facilitate the possibly high load and traffic in the future.

3.     Build Development site

3.1.   Install Content management system (CMS). Drupal (drupal.org) is installed according to instructions from https://drupal.org/documentation/install.

All runs smoothly for me but one problem: register_globals is 1. Lots of suggestions come from google. I think this one is the best: edit modules/system/system.install $requirements['php_register_globals']['severity'] = REQUIREMENT_WARNING; (from ERROR to WARNING).

3.2.   Install modules. Here is a list of modules I installed:

entity                                                        seo_checklist

WYSIWYG-CKFinder                      ga_tokenizer                                           site_verify

admin_menu                                         google_analytics                                  smtp

adsense                                                                      htmlmail                                                   token

backup_migrate                                                   libraries                                                    views

checklistapi                                          mailsystem                                             views_bulk_operations

contact_google_analytics             metatag                                                                        wysiwyg

context                                                                       notify                                                          xmlsitemap

context_keywords                           pathauto

ctools                                                        search404

3.3.   Configure the theme. The Bartik theme looks pretty beautiful, but can not display dropdown menu. I tried a lot of solutions, some solutions even crashed the website. Finally, I figured out this solution is the best: Bartik plus: https://drupal.org/sandbox/jjw/1281040.

3.4.   Configure forums and menus.

Beyond the main menu, I created a login/log out/register menu. Since this menu has items of login/logout, drupal will automatically to display which one based on the login status of the user.

3.5.   Make the webpage looks beautiful by re-ordering the blocks. E.g., the “search” and “login/logout menu” are put in “header” section.

3.6.   E-mail list. I did construct a mailman list server, but considering the burden of a list server, I decide to use google email list at the first stage. Use the admin email (rfmriorg#gmail.com) to create a google group and then setup a user account with the group email, -- this is the only user who subscribes notifications. As the website will send updating email to the group in the name of rfmriorg#gmail.com, the google group will accept this email and forward to all the group members. This strategy is used to reduce the server burden.

3.7.   Write a sample post for each forum.

3.8.   Email R-fMRI software developers if they would like their tools to be listed, and if they are interested in building a subforum to support their tools (in stepwise).

3.9.   Email R-fMRI researchers if they would like to contribute as consulting nodes (in stepwise).

4.     Maintain the website with live, staging and development servers.

4.1.   Push the website from development server to staging and live server.

This procedure is similar to backup the live server to staging server, I will give the details in the next section.

4.2.   Backup the website from live server to staging server.

4.2.1. Regular backup (with small changes): use Backup and Migrate module, but need to manually backup sites/default/files/images.

4.2.2. Structure-level backup (with big changes):

4.2.2.1. Delete the database (db) and files on the staging server.

4.2.2.2. Copy the db and files from live server to staging server.

4.2.2.3. Modify setting.php to link to the db at staging server.

4.2.3. Turn on maintenance mode.

4.2.4. Change Google email list address, to prevent send out emails out while developing.

4.2.5. The content of the live server will be backed up to the staging server weekly.

4.3.   Develop the website at development server.

4.3.1. Using structure-level backup (4.2) to copy the live website to development server.

4.3.2. Develop anything you want.

4.3.3. Once satisfied the development, first apply to the staging server.

4.3.4. If everything is fine, then turn the live website down to maintenance mode, and apply the changes.

4.4.   Live, staging, development websites: staging website always has the same structure as the live website, and synchronize the content weekly. As the staging website is on an independent server, once severe problems happened to the live server, the domain rfmri.org will be redirected to this staging server (hope this will never happen). All new things should be tried on the development website, on which doesn’t matter if it crashed or not.

5.     Google AdSense was added to reduce the cost. The small ad is just put on the bottom of the page. Of note: Google AdSense is sometimes smart, you can scroll down and see if there is anything interested you. If there is anything you are interested in, you may reduce our cost. orz, :)

Many thanks to Mr. Xiaowei Song, the website administrator of restfmri.net, from whom I learned a lot of website skills.

Finally, I would like to thank my wife (Kate) and my son (Justin) for their support! Without their support, nothing can happen!

P.S., once again, if you are interested in ipage web hosting service (essential plan: $1.89/month), please do not forget to click this link before registering ipage’s service; you can help us to reduce our cost. orz, :)

Best,

Chao-Gan

-- 

Chao-Gan YAN, Ph.D.
Research Scientist
The Nathan Kline Institute for Psychiatric Research, 140 Old Orangeburg Road, Orangeburg, NY 10962
Center for the Developing Brain, Child Mind Institute, 445 Park Avenue, New York, NY 10022
The Phyllis Green and Randolph Cowen Institute for Pediatric Neuroscience, New York University Child Study Center, New York, NY 10016
-
Initiating + Service Node
The R-fMRI Network (RFMRI.ORG)