RESTful and HTTP APIs in Pyramid Transcripts
Chapter: Deploying your REST service to DigitalOcean on Ubuntu
Lecture: How we deploy Python on nginx, uWSGI, and Ubuntu
Login or
purchase this course
to watch this video and the rest of the course contents.
0:01
We've reached an exciting point in our class, we've basically entirely created our web api,
0:07
and we're ready to deploy it to the cloud, in a full on production environment. I hope you're excited, I am. So how is this going to work?
0:15
Well we're going to start out by deploying this to Ubuntu, that's this big grayish box here, right so we're going to deploy to Ubuntu,
0:22
and we could have the running across multiple servers, with load balancing a lot of things, but for a simple example
0:28
we're just going to put it all on the same machine. So the first technology in addition to Linux that we're going to employ is nginx,
0:35
so nginx is going to be the front line web server, this is the thing that browsers and other web clients talk to,
0:44
and as far as they know this is the only thing involved in our web processing, so then, behind the scenes on the server,
0:50
the thing actually executing Python is going to be μwsgi, μwsgi is implemented in C and is specially built
0:59
for running Python web applications, so we're going to run that, but we're not just going to have one instance of it,
1:06
instead we're going to use it in this kind of master emperor mode I think it might be called,
1:13
where there's one process, but you actually create many subprocesses because Python is not super great at computational parallelism,
1:21
so the way we're going to solve this is just by having many subprocesses, it does use threads and as we're talking to things like databases,
1:27
that will do parallelism, but we're going to get additional parallelism by having multiple ones. So we're going to create a bunch of these,
1:34
and it's actually in these little sub processes where our Python code is going to execute,
1:39
so let's see how this request overall architecture is going to work, some kind of request is going to come in from the internet,
1:46
and hopefully, you'll set this up to use https, it's really easy to make nginx talk https,
1:51
you just get a certificate, point it at it and say here's your certificate, so a request will come in to nginx,
1:57
it's going to handle all the ssl certificate stuff, all the static files and things like that
2:02
but when it needs logic, when it needs to do Python stuff in our application, it's going to send this request internally
2:09
over to our μwsgi management main process, and this is probably over http or just a local socket,
2:15
and then this thing is going to decide which one of these is going to actually do the processing and then it will return the response back,
2:22
so this is what we are going to go now and set up on Digital Ocean we are going to create an Ubuntu Server on Digital Ocean,
2:28
we are going to install nginx, we are going to install μwsgi, we are going to move our Python code that we've written up there via get,
2:34
and then we're going to see how to configure these things to accomplish
2:38
basically exactly what I have here, except we're not going to do the https part, you guys can add that on yourself if you want.