Note: I no longer use Godaddy's VDS. Please see this post to read about why I switched and which host I use now.
I had purchased Godaddy's virtual dedicated server (VDS) web hosting service because a systems administrator friend of mine had told me the benefits of having 'root' access and it made sense. I also wanted to host a moderate number of sites, so I wanted to upgrade from the shared hosting that I was using at the time. However, I wasn't prepared for all the server management that would be required for some of the things that I wanted to do. Since Godaddy's VDSes are sold as largely unsupported, there was a steep learning curve for me. As such, I'm putting down some useful things I've learned along the way, which may be helpful for people who aren't experienced webmasters.
I'm constantly learning new things about web hosting, so as I come across them, I will continue to add useful tips to this page.
Add-ons
I got a couple of add-ons with my VDS and I'm happy that I have them. The first one is Plesk. This is a graphical control panel for the server that makes it easy to administer sites. The alternative is using SSH commands for everything, which just doesn't appeal to me. The second add-on I got is an ftp backup server. This is a separate server with a separate IP address. You can use the backup functionality in plesk to schedule regular backups to your site. I'm pretty paranoid about backing up data especially after hearing about a very large site crashing and losing all its data, so this add-on was a no-brainer especially at the $2 or $3 a month that it costs for 10GB.
Using FTP
I always use the server IP address when logging in. You can probably use a domain name when accessing certain domains, but I figure that if you can use one hostname whenever you're using an FTP client, it's much easier that way.
Logging on using SSH
I've never used SSH before I got my Godaddy VDS, but logging on is fairly simple. You need to download a program called PuTTY. To log on using SSH, simply open PuTTY, enter in your VDS ip address, select SSH as the protocol, open the connection and enter in your username and password when prompted. The username and password should be the administrator username and password for your VDS that you decided on when you set up the VDS. Note that when using SSH, you can potentially do a lot of damage to your server, so it's a good idea to not use any commands unless you know what it does. If you need to be logged in as 'root' to do something, you should use the command 'su' to temporarily make you the root user.
FTP backup
Plesk has a backup functionality which will back up your site(s) on demand or on a scheduled interval. You can back up a site and place that backup file that plesk generates either on the local server or on a remote ftp server. I chose to have all my sites backed up on a regular interval to my remote ftp server, although I occasionally have plesk generate a backup, which I then download to my local machine so that the site is backed up twice.
The backing up part is pretty intuitive and all in plesk. You go to the domains > domain.com > backup. You enter in the ftp backup information into FTP Account Properties. If you want the files stored in a directory other than the base directory, you have to create the folder using SSH. You would use Backup Now for an on-demand backup and Scheduled Backup to have your site backed up on a periodic basis.
What wasn't so intuitive to me was how to view the backed up files (for verification) and transferring them to my local machine so that I could test that they work. To do this, log in to your server using SSH. You don't need to login as 'root.' Then type in:
ftp [ip address]
where [ip address] is the IP address that Godaddy gave you for the ftp backup server. At one point, Godaddy told me to use the 'sftp' command, but that didn't work for me. You will then be prompted for your username and password, which you can find in your VDS manager.
Once you're logged into the ftp backup server, you'll be at the base directory, which is where backup files will get saved if you don't specify a folder. Use the command 'ls' to view all the files in the base directory. If you want have the backup files placed in certain folders, you can create folders at this time by using the command:
mkdir [folder name]
I use my site names for the folder names so that domain123.com gets backed up in the folder 'domain123.'
Now that I was able to view the files, the next step for me was to test them to make sure that they worked. In order to do this, I wanted to transfer a backup file from the ftp backup server onto my local machine. To do this entails a two-step process. First, I would send a back up file to the VDS with the following command:
get [filename]
where [filename] looks something like domain123.com_2006.10.30_14.45
Next, I would transfer the file from the VDS to my local machine using an ftp client such as filezilla. When logging into the VDS using an ftp client, you should use the administrator's username and password that you set when you first purchased the VDS. You should also make sure that the servertype is set to 'SFTP' to ensure security. Once you're logged in, you should be at the base directory for that username, so something like /home/user123. In that folder, you should also see the files that you sent there using the 'get' command. You can now drag and transfer those files to your local machine.
In order to simulate what would happen if I lost site data, I deleted one of my sites from plesk (before doing this, I backed up the files manually). This was also a site that wasn't very important to me, so I didn't care if it was down. Then I added the domain into plesk as if I were adding a new site. Then I went to the backup functionality in plesk, and clicked on Add New File. I uploaded the back up file, and once uploaded, I clicked on it and hit Restore. This restored my site back to how it was originally and gave me reassurance that the backup file would work in a time of need.
Note: I'm sure that there's a way to send a backed up file directly from the backup server to a folder on the VDS so that the backup functionality in plesk recognizes it so you don't have to upload the file from your local machine, but I don't know which folder that would be, and it's not a top priority for me right now.
Downloading configuration files to your local machine
There are times when you may want to download a file to your local machine, but you can't since it belongs to 'root'. I don't quite understand this part, but I believe that since I log in as user123, a file has to belong to user123 for me to download it to my local machine. Otherwise, I get a permission denied message. In order to change the owner, you need to be logged in as 'root'. Then use the 'chown' command like such:
chown [filename] [user you want ownership to be transferred to]
An example of a file that I might want to download and edit is the php.ini file, which sets the configuration of php on your server. I believe that there's a way to edit files directly on the server, but I still need to learn how to do this.
Secure FTP
I've been using standard FTP for a while now, but recently I learned about the merit of using secure FTP or SFTP. When transferring files using standard FTP, the data (including login information) gets transmitted in plain text, so someone can conceivably intercept it and read it. If you use SFTP, the data gets encrypted so even if it's intercepted when you're sending it to your server, it won't be readable. Getting started with this is pretty easy. When you're logged into Plesk, navigate to the domain administration for the domain you'd like to do this for (this should really be done for every domain you use). Then go to 'Setup.' Under Preferences, you will see a dropdown menu for Shell access. For this, I just selected /bin/sh. Click OK and you're done on the server end. Next, for whatever FTP client you use, for servertype, select SFTP. Your FTP client should now be able to connect to the server as SFTP and transmit data securely. There is also a way to setup SFTP without giving away Shell access. Read about it at TheOneAndTheOnly.com.
