Project

General

Profile

Set up a New Website » History » Version 9

Jon Goldberg, 11/27/2017 11:25 PM

1 2 Jon Goldberg
{{last_updated_at}} by {{last_updated_by}}
2 1 Jon Goldberg
3 2 Jon Goldberg
{{>toc}}
4 1 Jon Goldberg
5 2 Jon Goldberg
# Set up a New Website
6
7 1 Jon Goldberg
-   TODO: Let's Encrypt
8
9 4 Jon Goldberg
## Overview
10 1 Jon Goldberg
11
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).
12
13
If you don't have a Bitbucket repo to store the site, you must first [Create a Site Repo](Create-a-Site-Repo_88002545.html).
14
15 4 Jon Goldberg
## Create DNS records
16 1 Jon Goldberg
17
If this is a live site, obtain the namehost credentials from the client.  If this is a test site, use the [DNS Management](DNS-Management_88003176.html) documentation.  Test sites
18 5 Jon Goldberg
have a domain name of "example.megaphonetech.com", where "example" is replaced by the shortname of the client (e.g. "nwu.megaphonetech.com").
19 1 Jon Goldberg
20 4 Jon Goldberg
## Cloning an Existing Site
21 1 Jon Goldberg
22
*Use these instructions if the site already has a git repo.*
23
24 5 Jon Goldberg
* Clone the existing git repo.
25
* Move to the newly created directory and initialize git.
26
* Add origin as a remote (substitute the correct repo name below).
27 1 Jon Goldberg
28 4 Jon Goldberg
~~~ shell
29 1 Jon Goldberg
# Could be /home, could be /var/www, check where other sites on the server are (if any).
30
cd /home
31
mkdir -p clone.example.org/htdocs
32
cd clone.example.org/htdocs
33
git init
34 5 Jon Goldberg
# substitute your own repo name for "example"
35
git remote add origin ssh://git@git.megaphonetech.com:10022/megaphone/example.git
36 1 Jon Goldberg
# Next line is optional, and shouldn't happen on local dev machines.  It allows pushing when your git remote is read-only.
37 5 Jon Goldberg
git config remote.origin.pushurl https://git.megaphonetech.com/megaphone/example.git
38 1 Jon Goldberg
git pull origin master
39
git submodule update --init --recursive
40
git branch --set-upstream master origin/master
41 4 Jon Goldberg
~~~
42 1 Jon Goldberg
43
### Copy/edit settings.php/civicrm.settings.php/wp-config.php
44 2 Jon Goldberg
45 1 Jon Goldberg
*Skip this step if this is a new site from scratch (i.e. not a clone ofan existing site).
46
47
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.
48
49
Copy settings from an existing server:
50
51 4 Jon Goldberg
~~~ shell
52 1 Jon Goldberg
# Copy settings.php (Drupal) file from the old server
53
scp curds:/var/www/staging/cpehn/sites/default/settings.php .
54
# For CiviCRM on Drupal:
55
scp curds:/var/www/staging/cpehn/sites/default/civicrm.settings.php .
56
# If WordPress:
57
scp curds:/var/www/staging/aclu/wp-config.php .
58
# For CiviCRM on WordPress:
59
scp curds:/var/www/staging/aclu/wp-content/plugins/civicrm/civicrm.settings.php .
60
61
# Copy those files to your local install:
62
# For example: cp ./settings.php /home/jon/local/cpehn/sites/default
63 4 Jon Goldberg
~~~
64 1 Jon Goldberg
65
For Drupal, you must edit the file and change the database name, MySQL username, and MySQL password to match the new server's settings.
66
67
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.
68
69
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.
70
71
### Disable forced SSL if applicable
72
73
TODO: Write this section. Or not, if we move to SSL everywhere using
74
Let's Encrypt. In that case, write a Let's Encrypt section.
75
76 4 Jon Goldberg
## Create a New Site from Scratch
77 1 Jon Goldberg
78
### drush instructions (Drupal only)
79
80
*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).*
81
82 4 Jon Goldberg
* While in either `/var/www/dev/` or `/var/www/staging`, run the following command to download the latest version of Drupal 7 or 8:
83 1 Jon Goldberg
84 4 Jon Goldberg
~~~ shell
85
drush dl drupal-7
86
drush dl drupal-8
87
~~~
88 1 Jon Goldberg
89 4 Jon Goldberg
* Rename the Drupal directory to something that makes sense for the new site
90 1 Jon Goldberg
91 4 Jon Goldberg
~~~ shell
92
mv drupal-7.34/ healtorture/
93
~~~
94 1 Jon Goldberg
95
### wp instructions (WordPress only)
96
97
*Skip wp instructions if you're cloning an existing site (e.g. creating a test server from an existing dev/live server).*
98
99 4 Jon Goldberg
* While in `/home` (or `/var/www`), run the following command to download the latest version of WordPress:
100 1 Jon Goldberg
101 4 Jon Goldberg
~~~ shell
102
wp core download
103
~~~
104 1 Jon Goldberg
105 4 Jon Goldberg
## All Sites
106 1 Jon Goldberg
107
### MySQL instructions - all sites
108 4 Jon Goldberg
* Create the MySQL database and associated user as listed in settings.php/wp-config.php/civicrm.settings.php:
109 1 Jon Goldberg
110 4 Jon Goldberg
~~~ sql
111 1 Jon Goldberg
#Drupal example
112 4 Jon Goldberg
CREATE DATABASE nwu_drupal;
113 1 Jon Goldberg
#WordPress example
114 4 Jon Goldberg
CREATE DATABASE nwu_wp;
115 1 Jon Goldberg
#CiviCRM example
116 4 Jon Goldberg
CREATE DATABASE nwu_civi;
117 1 Jon Goldberg
118 4 Jon Goldberg
CREATE USER 'nwu'@localhost IDENTIFIED BY 'blahblahblahsomepassword';
119 1 Jon Goldberg
120
#Drupal/Wordpress
121 4 Jon Goldberg
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES, CREATE TEMPORARY TABLES, CREATE VIEW ON nwu_wp.* TO 'nwu'@localhost;
122 1 Jon Goldberg
#CiviCRM
123 4 Jon Goldberg
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;
124
~~~
125
126 1 Jon Goldberg
### MySQL instructions - cloned sites
127
128
*These instructions only apply to git cloned sites. Drupal/Civi/WordPress create a blank database on install for brand new sites.*
129
130
*TODO: Document use of "drush pipe" and similar commands*
131
132 4 Jon Goldberg
* On the OLD server, dump a copy of the database(s) you need:
133 1 Jon Goldberg
134 4 Jon Goldberg
~~~ shell
135 1 Jon Goldberg
#Drupal 
136
drush sql-dump > ~/cpehn_drupal.sql 
137
#CiviCRM with Drupal 
138
drush civicrm-sql-dump > ~/cpehn_civi.sql 
139
#WordPress (note - no ">" redirection) 
140
wp db export ~/aclu_wp.sql 
141
#CiviCRM with WordPress 
142
wp civicrm-sql-dump > ~/aclu_civi.sql 
143
#Remove trigger definers from Civi dumps
144
perl -pi -e 's#\/\*\!5001[7|3].*?`[^\*]*\*\/##g' aclu_civi.sql
145 4 Jon Goldberg
~~~
146 1 Jon Goldberg
147 4 Jon Goldberg
* Copy the database(s) to your local machine (and then to another machine, if need be:
148 1 Jon Goldberg
149
~~~ shell
150
scp aclu:~/*sql .
151
~~~
152
153
* Import your database(s):
154
155
~~~ shell
156 5 Jon Goldberg
#Drupal 
157
drush sql-cli < ~/cpehn_drupal.sql 
158
#CiviCRM with Drupal 
159
drush civicrm-sql-cli < ~/cpehn_civi.sql 
160
#WordPress (note - no "<" redirection) 
161
wp db import ~/aclu_wp.sql 
162
#CiviCRM with WordPress 
163
wp civicrm-sql-cli < ~/aclu_civi.sql
164 4 Jon Goldberg
~~~
165 1 Jon Goldberg
166 4 Jon Goldberg
* \[WordPress Only\] Run `wp search-replace` to change all instances
167 1 Jon Goldberg
    of the old URL in the database to the new URL.  E.g.
168
    `wp search-replace nwu.org nwu.jmaconsulting.biz`.
169
170
### Apache instructions
171
172 4 Jon Goldberg
* 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
173
* In /etc/apache2/sites-enabled, enable the new site:
174 6 Jon Goldberg
175 4 Jon Goldberg
~~~ shell
176
a2ensite healtorture.palantetech.coop
177
~~~
178 1 Jon Goldberg
-   Reload apache: `sudo service apache2 reload`
179
180 7 Jon Goldberg
### php-fpm instructions
181
182
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.
183
184
~~~ shell
185
useradd <username> -s /bin/false
186
cd /etc/php/7.0/fpm/pool.d
187
#copy an existing pool
188
cp existing.conf new.conf
189
~~~
190
191
* In the new .conf file, change the pool name on the first line, as well as the user, group, listen and listen.owner values.
192
* Restart php-fpm: `systemctl restart php7.0-fpm.service`
193
194 1 Jon Goldberg
### DNS instructions
195
196
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
197
([https://members.mayfirst.org/cp](https://members.mayfirst.org/cp)), going to the "Palante Technology:[palantetech.com](http://palantetech.com)" \
198
Live sites: Add the DNS entry using the client's DNS system. You'll need
199
the namehost password from the client. You can often figure out the
200
namehost with `whois example.org` and looking for the "Name Server"
201
listing.
202
203
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.
204
Examples if the site is hosted on the same computer you use:
205
206
    127.0.0.1 ajla.local 
207
208
Example if the site is on a virtual machine at IP address 192.168.1.6:
209
210
    192.168.1.6 ajla.local
211
212
### Run the installer
213
214
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.
215
216
### Install CiviCRM
217
218 4 Jon Goldberg
Follow the [official CiviCRM installation instructions](https://docs.civicrm.org/sysadmin/en/latest/index.html)
219 8 Jon Goldberg
220 9 Jon Goldberg
## Special cases
221 8 Jon Goldberg
* [[Move WP multisite to dev or test site]]