Project 7: Configure web server
For this project, you should configure your virtual private server (from Check-in 11) to deploy a static web site.
- It should support SSL/TLS (accessible over
https), and the plain unencrypted site (athttp) should redirect to the encrypted version. - You should implement a workflow for conveniently updating the site’s
content via
git– this could be by logging into the server and doinggit pull, or setting up a repository on your server with a git hook so you can instead dogit pushfrom a development machine.
Hint: code to add to your VirtualHost block to force redirect (change
HOST to your host name):
RewriteEngine on
RewriteCond %{SERVER_NAME} =HOST.liucs.net
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
Hint: here are rough instructions for a git push workflow to your
server. On the server, first go to your host’s folder in the Apache
www folder, and then create a bare git repository beside it:
cd /var/www/HOST.liucs.net mkdir html.git cd html.git git init --bare
Create a “post-receive” hook script, as follows:
touch hooks/post-receive chmod +x hooks/post-receive nano hooks/post-receive
Now you will be in the editor for your script. Enter and save the following code:
#!/bin/sh export GIT_WORK_TREE=/var/www/HOST.liucs.net/html git clean -fd git checkout -f
Your repository is currently empty, so commit the existing html
directory to it:
git --work-tree=../html add . git --work-tree=../html commit -m "Initial commit"
Your workflow is now steps away! Clone the server’s repository into your local development environment like this:
git clone root@HOST.liucs.net:/var/www/HOST.liucs.net/html.git cd html
Now you can edit the files, and use add/stage/commit as normal. When
you push back to origin, the files should “go live” on your server!
Be careful though – if you make any manual edits to the html
directory on the server, those would be overwritten on the next
push!