|
@ -0,0 +1,83 @@ |
|
|
|
|
|
Example Web Server/Site Template |
|
|
|
|
|
================================ |
|
|
|
|
|
|
|
|
|
|
|
------------------------------------------------- |
|
|
|
|
|
Project Layout |
|
|
|
|
|
------------------------------------------------- |
|
|
|
|
|
|
|
|
|
|
|
## Project Working Copy |
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
~/Projects/Web/example.com/ # git repo (git ignore www) |
|
|
|
|
|
| |
|
|
|
|
|
|- docker-compose.yml |
|
|
|
|
|
| |
|
|
|
|
|
|- service/ |
|
|
|
|
|
| | |
|
|
|
|
|
| |- docker-compose.yml |
|
|
|
|
|
| |
|
|
|
|
|
|- www/ # git repo (git ignore build) |
|
|
|
|
|
| | |
|
|
|
|
|
| |- Makefile |
|
|
|
|
|
| | |
|
|
|
|
|
| |- index.pug |
|
|
|
|
|
| | |
|
|
|
|
|
| |- build/ # git repo (if not building target on server, e.g. static GitHub pages) |
|
|
|
|
|
| | | |
|
|
|
|
|
| | |- index.html |
|
|
|
|
|
| | |
|
|
|
|
|
| |- config/ |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Project Collaboration |
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
git@examplecodehost.com:organization/example.com.git |
|
|
|
|
|
git@examplecodehost.com:organization/www.example.com.git |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
## Server Deployment |
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
/usr/local/src/web/example.com/ |
|
|
|
|
|
| |
|
|
|
|
|
|- server/ # bare git repo |
|
|
|
|
|
| |
|
|
|
|
|
|- www/ # bare git repo |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
|
/srv/dev/example.com/ |
|
|
|
|
|
/srv/beta/example.com/ |
|
|
|
|
|
/srv/prod/example.com/ |
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
In build upstream bare repo (webserver:/usr/local/src/web/example.com/www/), run: |
|
|
|
|
|
# chown root:srv . |
|
|
|
|
|
# chmod g+ws . |
|
|
|
|
|
# setfacl -d -m g::rwx . |
|
|
|
|
|
# git init --bare --shared=group |
|
|
|
|
|
# git config receive.denyCurrentBranch updateInstead |
|
|
|
|
|
# git config receive.denyNonFastForwards false |
|
|
|
|
|
?(# git config core.sharedRepository true) # if needed because of missing init option |
|
|
|
|
|
|
|
|
|
|
|
Set upstream and push branches to new bare repo, then run: |
|
|
|
|
|
# git worktree add /srv/prod/example.com/www master |
|
|
|
|
|
# git worktree add /srv/beta/example.com/www release |
|
|
|
|
|
# git worktree add /srv/dev/example.com/www dev |
|
|
|
|
|
|
|
|
|
|
|
# chmod -R g+w . |
|
|
|
|
|
# chmod g+w /srv/*/example.com/www |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# chown -R root:srv . |
|
|
|
|
|
# chmod -R g+swX . |
|
|
|
|
|
# chown root:srv /srv/prod/example.com/www |
|
|
|
|
|
# chmod g+swX /srv/prod/example.com/www |
|
|
|
|
|
# chown root:srv /srv/beta/example.com/www |
|
|
|
|
|
# chmod g+swX /srv/beta/example.com/www |
|
|
|
|
|
# chown root:srv /srv/dev/example.com/www |
|
|
|
|
|
# chmod g+swX /srv/dev/example.com/www |
|
|
|
|
|
and add your user (on the server) to the srv group. |
|
|
|
|
|
|
|
|
|
|
|
|