While http://vsftpd.beasts.org/#security notes what needs to be written about that, your design looks to be limited to serving one and only one web site per server.
Your choice but many people serve up dozens of websites per server.
Bob
I run an FTP server to upload and download files in the same folder as the HTTP folder root. In other words, the files I upload\download via FTP, will be the pages\files on the website.
In vsftpd, the FTP server I'm running, the default login will give you the root of your harddrive! I've been through the manpages and documentation a thousand times, and I've found that to change the file root directory (the most parent folder the user can see), I have to establish actual Linux users, and their login (screen name\password) will log the into their home folder.
So to accomplish the complete server, this is what I do:
1. Create the group 'www' with r/w privileges to the /srv/www/htdocs folder (the website folder) if it doesn't exist already.
2. Create the user 'ftp_remote_admin' and have it belong in the group
'www' (So it will have r/w access to the http server folder.) Also, set the users home folder to /srv/www/htdocs.
3. Restrict access to only those who login (No anonymous), and only to the user 'ftp_remote_admin' via the vsftpd config file.
4. Set vsftpd.conf to move users into their home folder on login.
So the effect is: The user logs into vsftpd via a FTP manager with the screen name 'ftp_remote_admin'. Their root folder (again, upper-most folder) will be the HTTP server folder. When I upload\download a file via FTP, the HTTP requests will immediately see the new\changed file.
Please let me know if anyone sees a flaw in this design, or has a security tip. The design works great, and seems very secure, but since this will appear in a production system with personally identifiable information, I want to go through every precaution.
Please also use this thread about securing FTP servers in general.
-Simon

Chowhound
Comic Vine
GameFAQs
GameSpot
Giant Bomb
TechRepublic