python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

时间:2022-09-09 09:02:19

简述

Nginx在服务器部署中的作用

请求通过Nginx实现反向代理,将请求提交给代理服务器。本文中只用了一台服务器,所以是代理到本机。

gunicorn的作用

作为服务器代码的容器。接收Nginx的请求后执行代码,并通过nginx将结果最终返回给用户。

flask的作用

flask是python上用于web应用的轻量级的框架。

部署过程

1 在阿里云上租用一台云服务器,本文中使用的是ubuntu系统,以下内容都是在云服务器中进行。

2 使用pip3安装gunicorn

3  运行gunicorn试验一下:

# gunicorn -b 0.0.0.0:5000 myapp:app

  注意-b表示绑定,0.0.0.0:5000表示允许所有ip访问,5000表示监听的端口,myapp应该改成相应的你的入口文件名(入口文件即你要运行的web应用代码,记得要带上相应路径,但不要带.py),app是入口文件中你要运行的实例。例如我写的一个最简单的用于测试的入口文件:

 from flask import Flask

 app = Flask(__name__)

 @app.route('/')
def hello_world():
return 'Hello world!' if __name__ == '__main__':
app.run()

在入口文件app.run()前加入这两行代码:

    from werkzeug.contrib.fixers import ProxyFix
app.wsgi_app = ProxyFix(app.wsgi_app)

此时在浏览器中输入127.0.0.1:5000应该会返回hello,world了。

python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

注意:如果租用的服务器是纯命令行,可以下载w3m之类的软件实现浏览器访问网页的功能;

如果是需要外网访问,则需要在 阿里云——我的实例——安全组 中添加安全组规则,开放5000端口:

python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

这样就能得到如上上图所示内容。

4 pip3安装nginx

5 修改Nginx配置文件

安装好的文件位置:

/usr/sbin/nginx:主程序

/etc/nginx:存放配置文件

/usr/share/nginx:存放静态文件

/var/log/nginx:存放日志

其实从上面的根目录文件夹可以知道,Linux系统的配置文件一般放在/etc,日志一般放在/var/log,运行的程序一般放在/usr/sbin或者/usr/bin。

进入/etc/nginx后发现下面有如下文件(夹):

python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

有时下载的nginx的配置文件中还会有nginx.conf.defalut,这是nginx的配置文件备份,我们真正需要修改的是nginx.conf。

但实际上一般不直接修改配置文件,建议通过在nginx.conf中引入配置文件的方法来修改配置:

使用vim nginx.conf打开后加入如下命令:

include /etc/nginx/conf.d/*.conf;

  表示执行nginx配置文件时,会搜寻conf.d文件下所有后缀为.conf的文件并执行。

  我们在该conf.d目录下用vim yyserver.conf新建一个文件,内容为:

server {
listen 80; #监听的是80端口,外网访问时输入ip+端口请求即可被nginx收到
server_name localhost; #服务器名为主机名,也可以改为域名
location / {
proxy_pass http://127.0.0.1:5000; #Nginx将发送给server_name的请求反向代理到本机5000端口,注意该端口要与gunicorn运行时监听端口一致
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} }

 修改配置后测试配置文件是否语法正确(在任何目录下测试都行):

python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

重启nginx使配置生效:

# nginx -s reload

 这时通过80端口可返回我们想要的hello world:

python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试

默认开放的端口就是80。此时的过程是:请求发送到服务器80端口,80端口被监听,根据nginx配置文件反向代理到5000端口,gunicorn收到后,根据路径找到入口文件执行代码。

如果改为ip+5000端口,同样可以得到hello world,此时直接通过gunicorn访问端口并运行代码。

坑1: 用pip下载包记得用pip3 install XXX使得包安装在Python3中

坑2:使用以下方式打开在阿里云租用的服务器(linux)终端:

 #进入本机管理员权限

 $ sudo -s
 bash-3.2# ssh  服务器ip地址 -p
或者直接用以下命令连接(remote_host在阿里云上都是root):
ssh remote_host@ip

  

python web开发c6——阿里云上ubuntu+flask+gunicorn+nginx服务器部署(一)简单测试的更多相关文章

  1. 【新手向】阿里云上ubuntu+flask+gunicorn+nginx服务器部署(二)项目部署

    本项目实现的是类似于ins的图片分享网站.继续(一),当nginx的配置已修改好后,要在远程服务器上部署网站,只需要几个步骤: 1 前期准备 2 将运行网站的代码从github上下载过来 3 下载依赖 ...

  2. 基于flask+gunicorn+nginx来部署web App

    基于flask+gunicorn&&nginx来部署web App WSGI协议 Web框架致力于如何生成HTML代码,而Web服务器用于处理和响应HTTP请求.Web框架和Web服务 ...

  3. 在阿里云上搭建自己的git服务器

    这篇文章我就来介绍一下如何在一台全裸的阿里云主机上搭建自己的git服务器. 1. 安装git 首先安装git,一般而言,现在的服务器已经内置了git安装包,我们只需要执行简单的安装命令即可安装.比如: ...

  4. Ubuntu | Flask + Gunicorn + Nginx 部署服务器环境

    现在我们手里有一个准备发布的项目,那么如何将他上传到你的服务器,并让外网访问呢? 前提: 1. 安装了Python环境 apt-get install python-dev 2. 安装Flask pi ...

  5. Python Web开发中的WSGI协议简介

    在Python Web开发中,我们一般使用Flask.Django等web框架来开发应用程序,生产环境中将应用部署到Apache.Nginx等web服务器时,还需要uWSGI或者Gunicorn.一个 ...

  6. [Linux]阿里云免费试用体验(在阿里云的ubuntu上部署个人服务)

    作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...

  7. Linux学习总结(13)——在阿里云的ubuntu上部署个人服务

    作为一个IT界的人,一般都希望有一个独立的博客,或者一部独立的机器.所以我一直在找机会,拥有一台自己可以独立控制的机器,自己想干嘛干嘛.当然这在虚拟机或者自己的PC上面也可以实现,但是这跟一台一直开着 ...

  8. 云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题

    今天下午访问高峰的时候,主站的Web服务器出现奇怪的问题,开始是2台8核8G的云服务器(ECS),后来又加了1台8核8G的云服务器,问题依旧. 而且3台服务器特地使用了不同的配置:1台是禁用了虚拟内存 ...

  9. 阿里云上,Ubuntu下配置Nginx,在tomcat中加了https协议就不可以了

    问题 阿里云上,Ubuntu服务器,本来部署的是tomcat,并且使用了https 协议.后来为了静态资源分离集成了 nginx,nginx代理跳转到 tomcat.刚开始直接访问http 网址发现, ...

随机推荐

  1. STL—Vector简介

    有关C++ STL 中的vector向量的用法(代码示例) 一. 简介 Vector是一个称为向量的顺序容器(不明白顺序容器与关联容器的可以Google). 二. 特点 1. 动态(相当于一个动态数组 ...

  2. 安全性之DDOS的防护技巧

    网站的信息安全越来越重要,结合自己1年多的互联网金融方面的安全防护做些总结. 后续希望研究并运用: 1.加密算法 2.DDOS的防护技巧 3.跨站点请求伪造 4.XSS攻击 5.文件上传漏洞 6.信息 ...

  3. mybatis 3.2.3 maven dependency pom.xml 配置

    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis&lt ...

  4. 详解 CSS 属性 - &colon;before &amp&semi;&amp&semi; &colon;after

    现在我们经常在 html 源码中看到如下的写法: 这里的 ::after 和 ::before 就是我们今天来探讨的 css 伪元素之二 - :before && :after. 伪元 ...

  5. hdu 1685 Booksort &lpar;IDA&ast;&rpar;

    Booksort Time Limit: 10000/10000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others) Tot ...

  6. 13 年的 Bug 调试经验总结(来自蜗牛学院)

    在<Learning From Your Bugs>一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug. 最近,我回顾了我所有的194个条目,看看有什么经验教训是我可以学习的.下面 ...

  7. 消息队列一:为什么需要消息队列&lpar;MQ&rpar;?

    为什么会需要消息队列(MQ)? #################################################################################### ...

  8. ionic2 开始第一个App(二)

    安装App指令:ionic start 你的项目文件夹名称 tabs 安装指令如: ionic start myApp tabs 安装时间有点长,耐心等待~ 进入myApp文件夹指令:cd myApp ...

  9. 强连通分量&amp&semi;hdu&lowbar;1269&amp&semi;Codeforce 369D

    强连通分量 标签: 图论 算法介绍 还记得割点割边算法吗.回顾一下,tarjan算法,dfs过程中记录当前点的时间戳,并通过它的子节点的low值更新它的low,low值是这个点不通过它的父亲节点最远可 ...

  10. python leetcode 字符串相乘

    给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2", num ...