Skip to main content

Built LAMP on AWS AMI, and update/install Python3.6, pip v20, Apache wsgi and Flask



I got one half day free and I spent it on building a LAMP on AWS AMI. I also wanted to squeeze Flask into Apache. So I also install/update Python 3.6, pip V.20.1, Apache wsgi and Flask. I wrapped up progress for now before I forgot all resources. 
 


On AWS marketplace, everyone can pay for a good suit such as Django. I’m not interested in content creation unless there are interesting topics to resolve. I don’t know what left to do if I bought a solution; and I may get annoyed like everyone else if the solution causes more problems. To build on my own is more realistic and practical.


Installing a LAMP (Linux, Apache, MySQL, PHP) was smooth while following AWS tutorial.

Tutorial: Install a LAMP Web Server with the Amazon Linux AMI

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html


To build Flask is absolutely a different thing….  still failed before I fell asleep...

If I choose AWS EC2 Ubuntu instance, most tutorials are based on this Linux version. Unfortunately I often am not one of the ‘most’.... I chose AMI because it already got many built-ins. AMI Linux 2 is much like a purified environment. AWS also provides Red Hat, SUSE, Ubuntu, IIS, etc. If I want to use IIS, I try on Azure. Since I’m using AWS, I prefer to try AMI. But there are obvious obstacles…..


Here are some notes when I tried to fix dependencies. Installing Flask requires pip, python3 and apache wsgi module.


My original AMI was equipped with python2.7. I saw python 3.6 and pip 3.6 in the folder, but sudo wasn't able to use it. So I reinstalled them. (pip always complains about version updates anyway...)


1)

Here is a great indication to install python3 on AMI, but some directories are different. Sudo seems designed to refer to /etc/alternatives/ if commands were not found in /usr/bin

How to install Python 3.x on Amazon Linux EC2 instance
https://sixbyseven.dev/how-to-install-python-3-x-on-amazon-ec2-instance/


2)

Here is the resource to install pip

Install Python, pip, and the EB CLI on Linux
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install-linux.html


3)

After I changed references to latest python3 and pip3.6(v.20.1)

sudo pip install Flask

Finally working.


4)

It’s a little difficult to find Apache wsgi module for AMI. Most tutorials are for Ubuntu. Finally I found a sample…

How to deploy Python Flask app to Apache (Httpd) running on Amazon Linux EC2 instance
https://issue.life/questions/35385431

sudo yum install mod24_wsgi



Currently posed here. There were other attempts to make Apache work for python, without wsgi’s help, configurations for Apache such as WSGIDaemonProcess, WSGIApplicationGroup wouldn’t work. I fixed wsgi fist and successfully started Apache before fixing python3 and pip. Apache still didn’t run python. But if I use python to start a web service, it works…… just not working within Apache’s folders….


There are still ways to go. I may already see the dawn, right?

Comments

Popular posts from this blog

Bookmark service (MongoDB & Spring REST) -2/2

    I accidentally deleted my development VM. I got lucky having the habit of taking notes. This blog is useful. Development VM is doom to be lost. Rebuild it waste time, but having a clean slate is refreshing~. What concerns me more is my AWS free quota this month is reaching 85%. The second VM I launched but never being used might be the one to blame. (Of course, my mistake.) I terminated the wrong VM. Now I got Linux 2 built. Great, just threw away everything happened on AMI.  1st layer: Page Page class   Originally, I need to prepare getter/setter for all class properties for Spring. By using lombok, I only need to create constructors. lombok will deal with getter/setter and toString(). But there are chances to call getter/setter, but how? .......Naming convention.... Capitalize the 1st character with the prefix get/set.  Annotation @Data was used on this class.  Repository class Spring Docs: Repository https://docs.spring.io/spring-data/mongodb/docs/3....

gamer's interview

This project simulates a gamer's interview. Based on NodeJS+ ReactJS The setting is interviewing a gamer/journalist what's his/her plan of March 2020? The gamer answers his/her game list in plan, how many reviews on demand and how many hours expected. Games selected for review take 5 hours for each, while others take one. This project is designed to practice render html, jsx, component, props introduced in  https://www.w3schools.com/REACT/default.asp . Also fixed other issues to make it work. When trying to modualize objects and tools, my design developed to separate views and processes. And it is quite similar to the initialized structure NodeJS+ReactJS provided. Furthermore, since include local module files are banned by browsers, use NodeJS service seems to be the best option. view file main process object tool

Comments for my Server/Client Web API samples

        Finally, I finished the comments for python/07 and 09 projects. I almost forgot to put the date on source code which is used to note how long it took me. Not precisely in hours….. I didn’t include source code in my previous post. If choosing code-section for this post…… maybe I want to mark out my comment….. (Really?!)          Once my work was developing websites for enterprises, including ERP, CRM or content sites. The sustainability of network and security are important issues. There are 2 methods for HTML Form submission: GET and POST. Submit via POST is secure, compared to GET which piles parameters on URL. RESTful API is mainly using GET.         Yup, even if you have a certification key, if you put the value on the URL, it is visible data. When writing socket-communication, client-server sockets are a pair; both follow the agreement on commands and structures; and there are countless ports for usa...