Skip to main content

Amazon ec2 LAMP and FTP installation and setup

Amazon ec2 LAMP and FTP installation and setup

Tutorial: Installing a LAMP Web Server on Amazon Linux

Go through this amazon link http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html

Associate and Elastic IP address to your EC2 instance.

This is so you have the same EIP if you restart your EC2 server.

Click the following link to Elastic IP in your management console. Click "Allocate new Address" button.

Click the Action button and assign the new created EIP to you instance ID i-50d663a6.

http://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/getting-started-assign-eip.html

FTP Setup in Amazon EC2 instance

Step #1: Install vsftpd

SSH to your EC2 server. Type:

sudo yum install vsftpd

Step #2: Open up the FTP ports on your EC2 instance

Next, you'll need to open up the FTP ports on your EC2 server. Log in to the AWS EC2 Management Console and select Security Groups from the navigation tree on the left. Select the security group assigned to your EC2 instance. Select the Inbound tab and add port range 20-21

Also add port range 1024-1048

Type Protocol Port Range Source
SSH TCP 22 ip/32
HTTP TCP 80 0.0.0.0/0
Custom TCP Rule TCP 20 - 21 0.0.0.0/0
Custom TCP Rule TCP 1024 - 1048 0.0.0.0/0

Step #3: Make updates to the vsftpd.conf file

Edit your vsftpd conf file by typing:

sudo nano /etc/vsftpd/vsftpd.conf

Disable anonymous FTP by changing this line:

anonymous_enable=YES

to

anonymous_enable=NO

Then add the following lines to the bottom of the vsftpd.conf file:

pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>

Your vsftpd.conf file should look something like the following - except make sure to replace the pasv_address with your public facing IP address:

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

# Additional configuration
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=xx-xxx-xxx-xx
local_root=/var/www/html

Step #4: Restart vsftpd

Restart vsftpd by typing:

sudo /etc/init.d/vsftpd restart

Step #5: Create an FTP user

If you take a peek at /etc/vsftpd/user_list, you'll see the following:

# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

This is basically saying, "Don't allow these users FTP access." vsftpd will allow FTP access to any user not on this list.

So, in order to create a new FTP account, you may need to create a new user on your server. (Or, if you already have a user account that's not listed in /etc/vsftpd/user_list, you can skip to the next step.)

Creating a new user on an EC2 instance is pretty simple. For example, to create the user gunjan, type:

sudo adduser dev-ftp
sudo passwd dev-ftp

Step #6: Restricting users to their home directories

At this point, your FTP users are not restricted to their home directories. That's not very secure, but we can fix it pretty easily.

Edit your vsftpd conf file again by typing:

sudo nano /etc/vsftpd/vsftpd.conf

Un-comment out the line:

chroot_local_user=YES

Restart the vsftpd server again like so:

sudo /etc/init.d/vsftpd restart

Surviving a reboot

vsftpd doesn't automatically start when your server boots. If you're like me, that means that after rebooting your EC2 instance, you'll feel a moment of terror when FTP seems to be broken - but in reality, it's just not running!. Here's a handy way to fix that:

sudo chkconfig --level 345 vsftpd on

Alternatively, if you are using redhat, another way to manage your services is by using this nifty graphic user interface to control which services should automatically start: sudo ntsysv

To change the default FTP upload folder

Edit

edit /etc/vsftpd/vsftpd.conf

Create a new entry at the bottom of the page:

local_root=/var/www/html

To apply read, write, delete permission to the files under folder so that you can manage using a FTP device

sudo find /var/www/html -type d -exec chmod 755 {} \;

If still doesn't working

It will not be ok until you add your user to the group www by the following commands:

sudo usermod -a -G www <USER>

Note that you will probably need to add the user you created to the "FTP" usergroup:

gpasswd -a <usr> ftp

This documented is generated based on http://stackoverflow.com/questions/7052875/setting-up-ftp-on-amazon-cloud-server?answertab=votes#answer-11404078

Comments

Popular posts from this blog

Deploying Flask App with WSGI and Apache Server on Ubuntu

Flask app is a popular framework for developing minimal apps or often creating restful APIs. In this article I’m going to discuss about how to deploy a flask app using WSGI and Apache server over Ubuntu 20.04. This article will be helpful to those people who are deploying flask app for the first time and I have also discussed that how to find some of the errors which may occur during deployment and how to tackle them. Recently, I deployed a flask app on AWS and there I were faced some difficulties. So, main purpose of this article is to share all those difficulties which a beginner may face too. In this article I’m skipping the section about how to create a Ubuntu server on online web service like Amazon Web Service etc. but I’ll suggest first to google it by following the keywords “How to create a Ubuntu server on AWS” or “How to launch and AWS EC2 server and set up ubuntu on it”. Once when you’ll have a Ubuntu server follow this article to deploy your app. Here are some further int...

How to fix the below error and enable HTTP/2 in Amazon EC2 Instance

#Enable_HTTP/2 #Amazon #EC2 #Apache Error Message: "The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive." Important: Take a backup of your conf files and folders before trying any the below commands. **** Your website should already be configured to run on https, else HTTP/2 will not work ***** Run the below command: httpd -V | grep MPM Output will be: Server MPM: prefork We are going to change this and start using event Step 1: httpd -v Ensure your httpd version is greater than or equal to 2.4.37 Server version: Apache/2.4.37 (Amazon) Step 2: Modify the 00_mpm.conf cd /etc/httpd/conf.modules.d vi 00-mpm.conf Uncomment the following line: LoadModule mpm_event_module modules/m...