I've found myself doing the same set of tasks every time I want to set up a new website on my Linode server, so I thought I'd turn it into a simple bash script that you keep on the server and run whenever you need to do this.
I've followed the standard instructions from linode's hosting a website docs which are excellent. The script just replaces the
example.com entries with a domain that you pass in as a parameter - it's really easy.
Set up bash script
First log into your linode server
Then create a new script file
sudo vim new-site.sh
In this file paste the following
#!/bin/bash # Add a new site # If you've got a domain and you want to set up a new site with it # run this script and pass the new domain as a parameter without a subdomain # e.g ./new-site.sh -url google.com # Get address from paramter DOMAIN=$1 # Set www root directory wwwroot="/var/www/" # Create directories mkdir $wwwroot$DOMAIN mkdir $wwwroot$DOMAIN/public_html mkdir $wwwroot$DOMAIN/backups mkdir $wwwroot$DOMAIN/log # Create virtual host cat > /etc/apache2/sites-available/$DOMAIN.conf << EOF # domain: $DOMAIN # public: $wwwroot$DOMAIN/public_html/ <VirtualHost *:80> # Admin email, Server Name (domain name), and any aliases ServerAdmin webmaster@$DOMAIN ServerName www.$DOMAIN ServerAlias $DOMAIN # Index file and Document Root (where the public files are located) DirectoryIndex index.html index.php DocumentRoot $wwwroot$DOMAIN/public_html # Log file locations LogLevel warn ErrorLog $wwwroot$DOMAIN/log/error.log CustomLog $wwwroot$DOMAIN/log/access.log combined </VirtualHost> EOF # Enable new site a2ensite $DOMAIN.conf # Finally restart apache service apache2 restart
then save the file and close vim
Run new site script
To run it just type
sudo ./new-site.sh [domain_name]
sudo ./new-site.sh pitchfork.com
All directories should be set up for you and apache restarted. Assuming you've set up the DNS correctly you should then be able to see your new site in your browser.