Set up a New Website » History » Revision 9
« Previous |
Revision 9/17
(diff)
| Next »
Jon Goldberg, 11/27/2017 11:25 PM
{{last_updated_at}} by {{last_updated_by}}
- Table of contents
- Set up a New Website
Set up a New Website¶
- TODO: Let's Encrypt
Overview¶
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 Bitbucket repo to store the site, you must first Create a Site 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://git@git.megaphonetech.com: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
Copy/edit settings.php/civicrm.settings.php/wp-config.php¶
*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 CIVICRM_MAIL_LOG
definition.
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/dev/
or/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
/home
(or/var/www
), run the following command to download the latest version of WordPress:
wp core download
All Sites¶
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 civicrm-sql-dump > ~/aclu_civi.sql
#Remove trigger definers from Civi dumps
perl -pi -e 's#\/\*\!5001[7|3].*?`[^\*]*\*\/##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 civicrm-sql-cli < ~/aclu_civi.sql
- [WordPress Only] Run
wp search-replace
to change all instances of the old URL in the database to the new URL. E.g.wp search-replace nwu.org nwu.jmaconsulting.biz
.
Apache instructions¶
- 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:
a2ensite healtorture.palantetech.coop
- Reload apache:
sudo service apache2 reload
php-fpm instructions¶
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
DNS instructions¶
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
namehost with whois example.org
and looking for the "Name Server"
listing.
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:
127.0.0.1 ajla.local
Example if the site is on a virtual machine at IP address 192.168.1.6:
192.168.1.6 ajla.local
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.
Install CiviCRM¶
Follow the official CiviCRM installation instructions
Special cases¶
Updated by Jon Goldberg about 7 years ago · 9 revisions