Set up a New Website » History » Version 11
Jon Goldberg, 01/09/2018 08:00 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 | 10 | Jon Goldberg | If you don't have a git repo to store the site, you must first [[Create a Git Repo]]. |
14 | 1 | Jon Goldberg | |
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 | 11 | Jon Goldberg | wp cv sql-dump > ~/aclu_civi.sql |
143 | 1 | Jon Goldberg | #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]] |