In this post, we will describe how you can install Apache web server ( LAMP Stack ) on your Amazon EC2 instance, so you can proceed to run your PHP or WordPress based website on Amazon EC2.
1. SSH to your EC2 Instance as mentioned in “How to access your AWS Linux instance using an SSH client ?” , if you already have EC2 keys then just ssh using below command,
ssh -i /your_local_path/my-key-pair.pem ec2-user@my-instance-public-ip
2. Install LAMP Stack
make sure, you are on Amazon Linux 2 (EC2) Instance, otherwise below steps will not work
$ cat /etc/system-release
Amazon Linux release 2 (Karoo)
$ sudo yum update -y
$ sudo amazon-linux-extras install -y lamp-mariadb10.2-php7.2 php7.2
$ sudo yum install -y httpd mariadb-server
$ sudo systemctl start httpd
$ sudo systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
$ sudo systemctl is-enabled httpd
enabled
Add a security rule to allow inbound HTTP (port 80) connections to your instance if you have not already done so. By default, a launch-wizard-N
security group was set up for your instance during initialization. This group contains a single rule to allow SSH connections.
- Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.
- Choose Instances and select your instance.
- On the Security tab, view the inbound rules. You should see the following rule:
Port range Protocol Source 22 tcp 0.0.0.0/0
- Choose the link for the security group. Using the procedures in Adding rules to a security group, add a new inbound security rule with the following values:
- Type: HTTP
- Protocol: TCP
- Port Range: 80
- Source: Custom
Test your web server. In a web browser, type the public DNS address (or the public IP address) of your instance. If there is no content in /var/www/html
, you should see the Apache test page.
Apache httpd serves files that are kept in a directory called the Apache document root. The Amazon Linux Apache document root is /var/www/html
, which by default is owned by root.
To allow the ec2-user
account to manipulate files in this directory, you must modify the ownership and permissions of the directory. There are many ways to accomplish this task. In this tutorial, you add ec2-user
to the apache
group, to give the apache
group ownership of the /var/www
directory and assign write permissions to the group.
$ sudo usermod -a -G apache ec2-user
$ exit
logout
Connection to XXX.XXX.XXX.XXX closed.
Now, again SSH back to same console,
verify your user “ec2-user” membership in the apache
group by using below command,
$ groups
ec2-user adm wheel apache systemd-journal
Change the group ownership of /var/www
and its contents to the apache
group
$ ls -alh /var/www/
drwxr-xr-x 2 root root 6 Aug 24 18:55 html
$ sudo chown -R ec2-user:apache /var/www
$ ls -alh /var/www/
drwxr-xr-x 2 ec2-user apache 6 Aug 24 18:55 html
As you can see above, the directory /var/www/html permissions got changed from “root:root” to “ec2-user:apache”
To add group write permissions and to set the group ID on future subdirectories, change the directory permissions of /var/www
and its subdirectories.
$ sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
To add group write permissions, recursively change the file permissions of /var/www
and its subdirectories
$ find /var/www -type f -exec sudo chmod 0664 {} \;
Now, ec2-user
(and any future members of the apache
group) can add, delete, and edit files in the Apache document root, enabling you to add content, such as a static website or a PHP application.
Now, you can test your Apache sever / LAMP Stack setup as,
If your server is installed and running, and your file permissions are set correctly, your ec2-user
account should be able to create a PHP file in the /var/www/html
directory that is available from the internet.
$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
Now, you can visit, this page in your browser using public dns url or public ip of your AWS instance and you should see the page as,
Reference : https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-lamp-amazon-linux-2.html