从“零”开始搭网站(一)

时间:2022-10-19 15:15:32

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文从“零”开始搭网站(一)

▎作者简介

作者李小虎是程序语言的爱好者,崇尚用合适的语言做合适的事情。

本文展示了如何使用Python、HTML、Javascript进行化学效应,搭一个属于我们自己的网站。其中你会发现语言之间有很多相通性,当我们领悟了这种相同性,你会发现初学一门语言也没那么可怕, 这也就是为什么我敢从零开始去搭建网站的原因。

本文档适合初学者,用切身感受期望帮助初学者少走一些弯路,或产生一些启发。


DevOps的春风吹过,自动化工厂便如雨后春笋,蓬勃发展。而目前我们最大的痛点就是自动化工厂如此野蛮的生长,有的集中,有的却分散在各个物理位置,于是我就想搭建一个网站能够集中式的管理自动化工厂。

此前,我只粗浅的学过一点Python,前端开发的什么HTML、CSS、Javascript可谓是一窍不通,真正的是从零开始。由于只学过Python,自然而然,web应用我就采用了Python的Flask框架。

那么怎么部署这个网站呢,我百度了下,选取了“Nginx+Gunicorn+Flask”的方案。为什么呢?因为Flask虽然也有Http服务,但不支持多线程,所以为了方便就采用了Nginx和Gunicorn了。

那么这三者到底是个什么关系呢?

总的来说,客户端从发送一个 HTTP 请求到 Flask 处理请求,分别经过了 web服务器层(Nginx),WSGI层(Gunicorn),web应用层(Flask),这三个层次。

这里出现了一个新词“WSGI”,所谓WSGI,其全称为 Web Server Gateway Interface,只适用于 Python 语言。它定义了 web服务器和 web应用之间的接口规范。也就是说,只要 web服务器和 web应用都遵守WSGI协议,那么 web服务器和 web应用就可以随意的组合,我们可以把它理解为web服务器(Nginx)和web应用(Flask)之间的纽带。

下图展现了客户端发送HTTP请求的交互流程:

从“零”开始搭网站(一)


现在我们开始安装配置Nginx、Gunicorn和Flask了,运行环境为Linux。

一、安装

Nginx安装参考:https://wiki.zte.com.cn/pages/viewpage.action?pageId=38171708

Gunicorn和Flask都采用pip install的方式安装。

二、配置

1.配置Nginx,

更改/usr/local/webserver/nginx/conf/nginx.conf

location / {

            #root   html;

            #index  index.html index.htm;

            proxy_pass http://127.0.0.1:5555; # 这里是指向 gunicorn host 的服务地址

            proxy_set_header Host $host;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

运行Nginx:/usr/local/webserver/nginx/sbin/nginx -c /usr/local/webserver/nginx/conf/nginx.conf


2.写一个“Hello World”的web应用

   2.1 新建一个py文件,如:myapp.py

   2.2 打开文件编写如下代码:       

 
  1.     from flask import Flask

  2.     

  3.     app = Flask(__name__)

  4.     @app.route('/')

  5.     def hello_world():

  6.         return 'Hello World!'

  7.     

  8.     if __name__ == '__main__':

  9.         app.run()

3.命令行启动Gunicorn: gunicorn -w 2 -b 127.0.0.1:5555 --chdir /home/myapp  myapp:app

   -w:表明启动几个线程处理http请求

   -b:表明监听5555端口

   --chdir:指向web应用所在的目录

   myapp:app :myapp是web应用文件名,app是应用入口


现在你可以访问你部署web服务器的IP啦,当页面显示出“Hello World”是不是有点小小的成就了呢?

从“零”开始搭网站(一)