You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.9 KiB

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.