- Set up a New Website
- Create DNS records
- Cloning an Existing Site
- Create a New Site from Scratch
- All Sites
- Special cases
Set up a New Website¶
- TODO: Let's Encrypt
Use this document when a) creating a new Drupal/WordPress site, or b) when you need to clone an existing site (create a live or test site from a local dev or existing live site).
If you don't have a git repo to store the site, you must first Create a Git Repo.
Create DNS records¶
If this is a live site, obtain the namehost credentials from the client. If this is a test site, use the DNS Management documentation. Test sites
have a domain name of "example.megaphonetech.com", where "example" is replaced by the shortname of the client (e.g. "nwu.megaphonetech.com").
Cloning an Existing Site¶
Use these instructions if the site already has a git repo.
- Clone the existing git repo.
- Move to the newly created directory and initialize git.
- Add origin as a remote (substitute the correct repo name below).
# Could be /home, could be /var/www, check where other sites on the server are (if any). cd /home mkdir -p clone.example.org/htdocs cd clone.example.org/htdocs git init # substitute your own repo name for "example" git remote add origin ssh://firstname.lastname@example.org:10022/megaphone/example.git # Next line is optional, and shouldn't happen on local dev machines. It allows pushing when your git remote is read-only. git config remote.origin.pushurl https://git.megaphonetech.com/megaphone/example.git git pull origin master git submodule update --init --recursive git branch --set-upstream master origin/master
*Skip this step if this is a new site from scratch (i.e. not a clone ofan existing site).
The git repo does NOT include settings.php or civicrm.settings.php. These files contain the server-specific settings - so we don't want to accidentally overwrite them with settings from another server. Instead, copy the settings from the server you just cloned.
Copy settings from an existing server:
# Copy settings.php (Drupal) file from the old server scp curds:/var/www/staging/cpehn/sites/default/settings.php . # For CiviCRM on Drupal: scp curds:/var/www/staging/cpehn/sites/default/civicrm.settings.php . # If WordPress: scp curds:/var/www/staging/aclu/wp-config.php . # For CiviCRM on WordPress: scp curds:/var/www/staging/aclu/wp-content/plugins/civicrm/civicrm.settings.php . # Copy those files to your local install: # For example: cp ./settings.php /home/jon/local/cpehn/sites/default
For Drupal, you must edit the file and change the database name, MySQL username, and MySQL password to match the new server's settings.
For Wordpress, you must change the database name, MySQL username, MySQL password, and WP_HOME and WP_SITEURL if defined. You must also run
wp search-replace www.oldsitename.org www.newsitename.org after the database is loaded.
For CiviCRM, you must do edit the same settings twice (once for the CMS, once for CiviCRM), plus change the \$BASE_URL and all file paths for cache files, overrides, etc. For non-live states, you should also uncomment the
Disable forced SSL if applicable¶
TODO: Write this section. Or not, if we move to SSL everywhere using
Let's Encrypt. In that case, write a Let's Encrypt section.
Create a New Site from Scratch¶
drush instructions (Drupal only)¶
Skip drush instructions if a) you're cloning an existing site (e.g. creating a test server from an existing dev/live server) AND b) the site isn't hosted on a server with a shared Drupal install (i.e. on May First).
- While in either
/var/www/staging, run the following command to download the latest version of Drupal 7 or 8:
drush dl drupal-7 drush dl drupal-8
- Rename the Drupal directory to something that makes sense for the new site
mv drupal-7.34/ healtorture/
wp instructions (WordPress only)¶
Skip wp instructions if you're cloning an existing site (e.g. creating a test server from an existing dev/live server).
- While in
/var/www), run the following command to download the latest version of WordPress:
wp core download
MySQL instructions - all sites¶
- Create the MySQL database and associated user as listed in settings.php/wp-config.php/civicrm.settings.php:
#Drupal example CREATE DATABASE nwu_drupal; #WordPress example CREATE DATABASE nwu_wp; #CiviCRM example CREATE DATABASE nwu_civi; CREATE USER 'nwu'@localhost IDENTIFIED BY 'blahblahblahsomepassword'; #Drupal/Wordpress GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES, CREATE VIEW ON nwu_wp.* TO 'nwu'@localhost; #CiviCRM GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES, TRIGGER, CREATE ROUTINE, ALTER ROUTINE, CREATE VIEW, REFERENCES ON nwu_civi.* TO 'nwu'@localhost;
MySQL instructions - cloned sites¶
These instructions only apply to git cloned sites. Drupal/Civi/WordPress create a blank database on install for brand new sites.
TODO: Document use of "drush pipe" and similar commands
- On the OLD server, dump a copy of the database(s) you need:
#Drupal drush sql-dump > ~/cpehn_drupal.sql #CiviCRM with Drupal drush civicrm-sql-dump > ~/cpehn_civi.sql #WordPress (note - no ">" redirection) wp db export ~/aclu_wp.sql #CiviCRM with WordPress wp cv sql-dump > ~/aclu_civi.sql #Remove trigger definers from Civi dumps perl -pi -e 's#\/\*\!5001. DEFINER=`.*`@`.*?\*\/##g' aclu_civi.sql
- Copy the database(s) to your local machine (and then to another machine, if need be:
scp aclu:~/*sql .
- Import your database(s):
#Drupal drush sql-cli < ~/cpehn_drupal.sql #CiviCRM with Drupal drush civicrm-sql-cli < ~/cpehn_civi.sql #WordPress (note - no "<" redirection) wp db import ~/aclu_wp.sql #CiviCRM with WordPress wp cv sql-cli < ~/aclu_civi.sql
- [WordPress Only] Run
wp search-replaceto change all instances of the old URL in the database to the new URL. E.g.
wp search-replace nwu.org nwu.jmaconsulting.biz.
- Create an entry in /etc/apache2/sites-available for this site by copying a previous entry, then editing that entry to reflect the new site
- In /etc/apache2/sites-enabled, enable the new site:
- Reload apache:
sudo service apache2 reload
If your site is running php-fpm, you'll most likely need to create a new user to run the site as, with a corresponding php-fpm pool.
useradd <username> -s /bin/false cd /etc/php/7.0/fpm/pool.d #copy an existing pool cp existing.conf new.conf
- In the new .conf file, change the pool name on the first line, as well as the user, group, listen and listen.owner values.
- Restart php-fpm:
systemctl restart php7.0-fpm.service
If this is a site on the public Internet, create a DNS entry for it. Test sites: Add a CNAME DNS entry by logging into the MFPL control panel
(https://members.mayfirst.org/cp), going to the "Palante Technology:palantetech.com" \
Live sites: Add the DNS entry using the client's DNS system. You'll need
the namehost password from the client. You can often figure out the
whois example.org and looking for the "Name Server"
Local dev sites: You don't create a public DNS entry if the site isn't publicly accessible. Edit the
/etc/hosts file on any machine that can see the site.
Examples if the site is hosted on the same computer you use:
Example if the site is on a virtual machine at IP address 192.168.1.6:
Run the installer¶
If this is a new site (not cloned), you can visit the site now to run the installer. You'll need the MySQL database name, MySQL username, and MySQL password.
Follow the official CiviCRM installation instructions