MEpedia:Developer guide

__NOINDEX__ A developer is someone who maintains the hardware and software underlying MEpedia.

Main duties
Developer main duties include:
 * Nightly and monthly backups of the website
 * Upgrading the MediaWiki software and extensions every 3 years:
 * How to upgrade the MediaWiki software: https://www.mediawiki.org/wiki/Manual:Upgrading
 * Any extension with a “compatibility policy” of “release branches” must be updated with any new version of MediaWiki. These include Echo, Scribunto, TemplateData, PageImages, Citoid, VisualEditor, Thanks, and StructuredDiscussions.
 * The Linux package Parsoid must also be updated every time VisualEditor is updated.
 * These updates will require a developer with specific MediaWiki expertise.
 * Every 5 years, do “performance tuning” of the MySQL(MariaDB) database and “performance tuning” of the MediaWiki software as described in https://www.mediawiki.org/wiki/Manual:Performance_tuning This will require a developer with specific MediaWiki expertise.
 * Occasional implementation of fixes or improvements

General info

 * Task list for developers: MEpedia:Suggested_tasks
 * Software version and extension info: Special:Version
 * Dreamcompute dashboard: https://panel.dreamhost.com/index.cgi?tree=cloud.compute& (is this right?)
 * Sign up to receive important email updates about MediaWiki software: https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce

Backing up MEpedia
The Fullsitebackup shell script backs up both the MediaWiki files and the database. A backup is restored with the Fullsiterestore script. We have customized these scripts for MEpedia's purposes, so they can not be replaced by newly-downloaded versions.
 * The backup script is automatically run on a nightly basis, and each backup is kept for a week.
 * There is also a monthly backup that is kept for a month.
 * If it ever becomes necessary to restore MEpedia from a backup, it is advised to shut down the Apache web server while restoring MEpedia. Make sure that the OS file permissions are correct for the restored files, especially that the "uploads" directory is writable by the web server and that the extensions directories are executable by the web server. (Perhaps this can be accomplished by setting the user "apache" as the owner of the files?)
 * Another way to backup MEpedia: https://help.dreamhost.com/hc/en-us/articles/215089918-How-do-I-backup-my-entire-account-
 * MEpedia is occasionally ‘backed up’ by wikiteam to the Internet Archive at: https://archive.org/details/wiki-me_pediaorg

Server info
There are two separate virtual servers, a production and a staging server. Production server is https://www.me-pedia.org (208.97.133.164) and the staging server is https://staging.me-pedia.org (208.97.133.62).
 * MediaWiki software is installed directly into the web root directory: /var/www/me-pedia.org (production), /var/www/staging/me-pedia.org (staging). Note that this installation location has been slightly discouraged: https://www.mediawiki.org/wiki/Manual:Wiki_in_site_root_directory
 * In addition to the Apache web server and the MariaDB database, there is a Parsoid daemon service on port 8142 and a Memcached daemon service on port 11211, on both production and staging servers.
 * The database name in MariaDB is "me_pedia_org_3" and the username and password are the same for the production and the staging servers.
 * Backup scripts are stored in the /home/cloud/backups directory. Although the scripts have the same names on the production and the staging servers, note that the scripts are not the same.
 * The staging server can be updated to reflect the current contents of the production server. This is done by using a production backup file with the staging restore script.  After restoring on the staging server, run the update.php script in the maintenance directory to update the database for the staging server.  Make sure that the OS file permissions are correct for the restored files, especially that the "uploads" directory is writable by the web server and that the extensions directories are executable by the web server.  (Perhaps this can be accomplished by setting the user "apache" as the owner of the files?)