This guide assumes you've created an EC2 instance on AWS, with 2 drives (1 for the OS, 1 where the actual site(s) live). The 2 drive system allows for easier replacement of the OS/software side if something breaks, while keeping site data intact.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install php5.6-fpm php5.6-mysql php5.6-gd php5.6-mcrypt nginx git ntp
sudo reboot
sudo nano /etc/php/5.6/fpm/php.ini
Find cgi.fix_pathinfo=1 change to cgi.fix_pathinfo=0
sudo nano /etc/php/5.6/fpm/pool.d/www.conf
Find listen = 127.0.0.1:9000 change to listen = /run/php/php5.6-fpm.sock (may already be done)
sudo service php5.6-fpm restart
sudo apt-get install postfix
Select No Configuration
sudo nano /etc/postfix/main.cf
Paste the following
relayhost = [email-smtp.us-east-1.amazonaws.com]:25
smtp_sasl_auth_enable = yes
smtp_sasl_security_options = noanonymous
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_tls_note_starttls_offer = yes
inet_protocols=ipv4
sudo nano /etc/postfix/sasl_passwd
Paste in the following (replacing user/pass)
[email-smtp.us-east-1.amazonaws.com]:25 USERNAME:PASSWORD
Run the following commands
sudo postmap hash:/etc/postfix/sasl_passwd
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo postconf -e 'smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt'
sudo postfix start
Update PHP
sudo nano /etc/php5/fpm/php.ini
Change the sendmail path
sendmail_path = "/usr/sbin/sendmail -t -i"
Test the email sending
sendmail -f from@example.com to@example.com
Note final line is a full-stop (single period)
From: from@example.com
Subject: Test
This email was sent through Amazon SES!
.
sudo file -s /dev/xvdb
sudo mkfs -t ext4 /dev/xvdb
sudo mkdir /var/www
sudo mount /dev/xvdb /var/www
sudo chown www-data:www-data /var/www
sudo cp /etc/fstab /etc/fstab.orig
sudo nano /etc/fstab
Add: /dev/xvdb /var/www ext4 defaults,nofail 0 2
sudo mount -a
sudo nano /etc/nginx/nginx.conf
Use: nginx.conf
sudo nano /etc/nginx/ssl.conf
Use: ssl.conf
sudo nano /etc/nginx/gzip.conf
Use: gzip.conf
sudo nano /etc/nginx/php.conf
Use: php.conf
sudo nano /etc/nginx/security.conf
Use: security.conf
sudo nano /etc/nginx/sites-available/{domain.com}
Use: server.com
sudo ln -s /etc/nginx/sites-available/{domain.com} /etc/nginx/sites-enabled/
sudo service nginx restart
sudo apt-get install mysql-server
sudo mysql_install_db
sudo /usr/bin/mysql_secure_installation