To deploy a WordPress site using AWS RDS and a free tier EC2 instance, you need to follow these steps:
1. Create an RDS Instance:
- Go to the AWS Management Console and navigate to the RDS dashboard.
- Click on "Launch DB instance" and select the database engine as MySQL.
- Choose the instance type and configure the database settings.
- Create the instance and note the endpoint and database credentials.
2. Create an EC2 Instance:
- Go to the AWS Management Console and navigate to the EC2 dashboard.
- Click on "Launch Instance" and select the instance type.
- Choose the Amazon Linux AMI and configure the instance details.
- Create the instance and note the public DNS name.
3. Configure the EC2 Instance:
- Connect to the EC2 instance using SSH.
- Install the necessary packages, including Apache, MySQL, and PHP.
- Configure the Apache web server to use the MySQL database.
4. Install WordPress:
- Download the WordPress package and extract it to the Apache document root.
- Configure the WordPress settings to use the MySQL database.
5. Configure WordPress to Use RDS:
- Update the `wp-config.php` file to use the RDS instance.
- Define the database name, username, password, and host in the `wp-config.php` file.
6. Configure SSL for RDS:
- Add the following lines to the `wp-config.php` file to enable SSL:
php
define('MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
define('MYSQL_SSL_CA', '/var/www/BaltimoreCyberTrustRoot.crt.pem');
7. Test the Connection:
- Create a test file to verify that the connection is encrypted.
8. Deploy and Test:
- Deploy the changes and test the WordPress site.
Here is a sample `wp-config.php` configuration for using RDS with SSL:
php
<?php
// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );
/** MySQL database username */
define( 'DB_USER', 'your_rds_username' );
/** MySQL database password */
define( 'DB_PASSWORD', 'your_rds_password' );
/** MySQL hostname */
define( 'DB_HOST', 'your_rds_endpoint' );
// ** Authentication Unique Keys and Salts. ** //
define( 'AUTH_KEY', 'your_unique_phrase_here' );
define( 'SECURE_AUTH_KEY', 'your_unique_phrase_here' );
define( 'LOGGED_IN_KEY', 'your_unique_phrase_here' );
define( 'NONCE_KEY', 'your_unique_phrase_here' );
define( 'AUTH_SALT', 'your_unique_phrase_here' );
define( 'SECURE_AUTH_SALT', 'your_unique_phrase_here' );
define( 'LOGGED_IN_SALT', 'your_unique_phrase_here' );
define( 'NONCE_SALT', 'your_unique_phrase_here' );
// ** MySQL settings - You can get this info from your web host ** //
define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
define( 'MYSQL_SSL_CA', '/var/www/BaltimoreCyberTrustRoot.crt.pem' );
Replace the placeholders with your actual RDS instance details and SSL configuration[1][3][4].
Citations:[1] https://aws.amazon.com/tutorials/deploy-wordpress-with-amazon-rds/module-four/
[2] https://www.youtube.com/watch?v=8Uofkq718n8
[3] https://stackoverflow.com/questions/29850112/using-amazon-rds-with-wordpress-over-ssl
[4] https://gist.github.com/isaacarnault/8c701f200699176e06362a1877909665
[5] https://www.linkedin.com/pulse/deploying-wordpress-mysql-using-custom-vpc-subnets-aws-khatoon