(Apologies if there's a more appropriate StackExchange forum for this. If that's the case, please let me know.)
I'm looking to set up a LAMP server (Ubuntu 12.04) for a website that will probably get very little traffic at the beginning (so I'll start with a VPS with 512MB RAM), but will hopefully receive a lot more traffic in the future (at which point I'll upgrade to more RAM and change some of the config options). I'm going to use Drupal 7 to actually serve the content.
I just finished reading an exhaustive book on Linux, but I'm still confused about a lot of the nitty-gritty, so I had some questions...
(I know there are a lot of questions here, but I didn't want to flood you guys with multiple posts at once. Feel free to only answer a question or two -- that'd still be a big help.)
Allocating Memory: I was thinking of using this kind of setup: mpm_worker, php5-fpm, APC, fastcgi, memcache, XHProf. Do the memory limits below make sense for a VPS with 512MB RAM? (I'm mostly wondering about the settings in bold).
- mpm_worker: Within the mpm_worker_module IfModule directive in httpd.conf: StartServers 3, ThreadsPerChild 25, ThreadLimit 75, MinSpareThreads 25, MaxSpareThreads 75, MaxRequestsPerChild 10000, MaxClients 150
- php5-fpm: In /etc/php5/fpm/php.ini: memory_limit = 96M, max_execution_time = 120, max_input_time = 300, post_max_size = 10M, upload_max_filesize = 10M
- php5-fpm: In /etc/php5/fpm/pool.d/(pool name, such as www.conf): pm = dynamic, pm.max_children = 2 (I'd icrease this number when i upgrade the server RAM), pm.start_servers = 2, pm.min_spare_servers = 1, pm.max_spare_servers = 2
- APC: In /etc/php5/conf.d/apc.ini: apc.shm_size = 64M, apc.shm_segments=2
- Suhosin (for mysql security): In /etc/php5/conf.d/suhosin.ini: suhosin.memory_limit=64M
- How important is it to create separate partititions for root, boot, home, tmp, usr, and var? Although I don't expect a lot of traffic for the first few months, I want to make sure I'm being smart about building a scalable foundation for my site.
- Do I want to build a customized kernel, and/or are there are specific modules I simply want to load into my current module.
- Is it important to ensure the server has a static IP address (in /etc/network/interfaces) instead of using DHCP?
- Is there anything else that's pretty much a best practice that I should add to my setup, such as Varnish?
- Are any of these security utilities super useful (Note: I currently am planning on using xyz): TripWire, nessus, Secunia, Treachery, netcat, Update Notifier, webalizer, awstats
- What shell should apache2 use (or would it be just the www-data user’s shell)? What about FTP (or sftp) for drupal?
- Which chroot jails should I set up? (Seems like apache and vsftpd don’t need chroot jails).
- For whatever modules I’m going to use with apache (e.g., APC), would I need to put a LoadModule directive in httpd.conf to load it and then use a2enmod to enable it?
- Should I no longer use “/etc/init.d/apache2 restart”, etc. (should I instead use “initctl start jobname” or “service start jobname”)?