name: InstallWordPress
description: This document installs WordPress on Amazon Linux 2
schemaVersion: 1.0
phases:
- name: build
steps:
- name: InstallWordPressPrerequisites
action: ExecuteBash
inputs:
commands:
- sudo yum install php-cli php-gd php-imagick php-intl php-pdo php-mbstring php-fpm php-json php-xml php-mysqlnd -y
- sudo yum install httpd mariadb-server -y
- echo "Adding ec2-user to apache group"
- sudo usermod -a -G apache ec2-user
- echo "enabling httpd and mariadb to start on boot"
- sudo systemctl enable httpd
- sudo systemctl enable mariadb
- name: InstallWordPress
action: ExecuteBash
inputs:
commands:
- echo "Downloading & installing wordpress"
- sudo wget http://wordpress.org/latest.tar.gz
- sudo tar -xzf latest.tar.gz
- sudo mv wordpress/* /var/www/html
- sudo rm -f wordpress
- echo "Setting permissions as per https://wordpress.org/support/article/hardening-wordpress/"
- sudo chown -R apache:apache /var/www/html
- sudo chmod 2755 /var/www/html && find /var/www/html -type d -exec chmod 2755 {} \;
- sudo find /var/www -type f -exec chmod 0644 {} \;
- sudo rm -f latest.tar.gz
- WP_ADMIN_USER_PASS=`sudo openssl rand -base64 5`
- sudo htpasswd -cdb /var/www/.htpasswd wp_admin $WP_ADMIN_USER_PASS
- sudo chown ec2-user:ec2-user /var/www/.htpasswd
- |
sudo echo "User: wp_admin
Password: ${WP_ADMIN_USER_PASS}" > /home/ec2-user/wp-admin-basic-auth-creds
- sudo chown ec2-user:ec2-user /home/ec2-user/wp-admin-basic-auth-creds
- sudo chmod 400 /home/ec2-user/wp-admin-basic-auth-creds
- |
sudo echo "AuthType Basic
AuthName \"Restricted Access\"
AuthUserFile /var/www/.htpasswd
Require user wp_admin" > /var/www/html/wp-admin/.htaccess
- |
sudo echo "
AllowOverride AuthConfig
AllowOverride AuthConfig
" > /etc/httpd/conf.d/wordpress.conf