nginx搭建基于python的web环境的实现步骤

下面将详细讲解“nginx搭建基于python的web环境的实现步骤”的攻略。

安装nginx

首先我们需要在服务器上安装nginx,可以使用以下命令进行安装:

sudo apt update
sudo apt install nginx

完成安装后可使用以下命令检查服务是否已启动:

sudo systemctl status nginx

若服务已启动,应该看到如下输出:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-05-11 08:17:12 UTC; 1h 9min ago
       Docs: man:nginx(8)
    Process: 892 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 893 (nginx)
      Tasks: 2 (limit: 2279)
     Memory: 4.3M
     CGroup: /system.slice/nginx.service
             ├─893 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─894 nginx: worker process

提到了nginx成功运行,我们可以在浏览器中通过访问服务器的IP地址来检查nginx是否已经可用。如果您看到nginx的欢迎页面,那么nginx已经安装成功。

安装uWSGI和Python

接下来,我们需要在服务器上安装uWSGI和Python:

sudo apt install python3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools
sudo pip3 install uwsgi

在安装完成后,您可以使用以下命令检查uWSGI是否已经正确安装:

uwsgi --version

若您看到类似以下的输出,这就说明uWSGI已经成功安装:

2.0.19.1

创建Python Web应用

我们将创建一个使用flask框架的Python Web应用来演示如何使用uWSGI,您可以使用自己想使用的Web框架。

首先,我们需要创建一个名为app.py的文件。内容如下:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello, World!"

上面的代码定义了一个名为app的Flask应用。该应用定义了一个名为hello的路由,用户访问根URL时将返回"Hello, World!"。

配置uWSGI

接下来,我们将创建一个uWSGI配置文件以启动Python Web应用。

首先,我们需要创建一个名为service.ini的文件,其内容如下:

[uwsgi]
module = app:app

master = true
processes = 5

socket = service.sock
chmod-socket = 660
vacuum = true

die-on-term = true

上面的代码定义了一个uwsgi服务的配置项,其中module表示要启动的Python应用的名称;socket表示uWSGI将监听的套接字文件的名称。切记:这里socket的名称与nginx配置文件的名称必须一致!

在此之后,我们将使用以下命令启动uWSGI服务:

uwsgi --ini service.ini

这行命令告诉uWSGI加载service.ini中定义的配置参数,并根据配置参数启动Python Web应用。

在这个之后,您可以通过您的浏览器访问服务器的IP地址来确认您的Python Web应用是否已经运行成功。

配置nginx

为了为Python Web应用提供服务,我们需要使用nginx作为反向代理和静态文件服务器。

在此之前,您需要创建一个名为service.sock的UNIX套接字文件,可以使用以下命令完成此操作:

sudo touch /var/www/<YOUR_PROJECT_NAME>/service.sock
sudo chown www-data:www-data /var/www/<YOUR_PROJECT_NAME>/service.sock

在完成以上操作后,您可以创建一个名为<YOUR_PROJECT_NAME>的目录来存放您的Python Web 应用,并使用以下命令创建名为<YOUR_PROJECT_NAME>的配置文件:

sudo nano /etc/nginx/sites-available/<YOUR_PROJECT_NAME>

请将<YOUR_PROJECT_NAME>更改为您的项目名称。

现在,请将以下内容复制到刚创建的文件中:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/var/www/<YOUR_PROJECT_NAME>/service.sock;
    }
}

我们可以对上述代码进行逐行解释:

  • 第1~3行指定了要监听的端口,也可以指定一个域名;
  • 第5~7行配置了将请求发送到service.sock套接字文件的uWSGI工具;
  • 第8行关闭了所有请求的代理缓存;

当您已经完成了这一切之后,请使用以下命令启用这个站点:

sudo ln -s /etc/nginx/sites-available/<YOUR_PROJECT_NAME> /etc/nginx/sites-enabled

并检查nginx配置是否已正确启用:

sudo nginx -t

如果您看到了像下面这样的输出,则说明一切正常:

nginx: configuration file /etc/nginx/nginx.conf test is successful

现在,请重新启动nginx服务以应用配置更改:

sudo systemctl restart nginx

示例

在这里我会给出两个小例子:如何通过Python实现一个基本的网页和一个简单的RESTful API。

Python实现简单网页

在开始写简单的网页之前,我们需要添加Flask的依赖。

使用以下命令将Flask作为依赖添加到我们的Python虚拟环境中:

pip3 install flask

我们创建一个名为"website.py"代码文件,文件内容如下:

from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def home():
    return render_template("home.html")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8080, debug=True)

这里我们创建一个根路由“/”对应的Python函数home(),返回我们的页面模板。与此同时,我们将应用程序绑定到指定的主机地址和端口。

接下来,我们需要添加一个名为"home.html"的HTML模板来描述我们的简单网页。

<!DOCTYPE html>
<html>
    <head>
        <title>My First Flask App</title>
    </head>
    <body>
        <h1>Welcome to my first Flask App! </h1>
    </body>
</html>

请将上述页面编写为一个HTML模板,并放置在项目的根目录下。

我们可以通过以下命令启动Flask应用程序:

python3 website.py

您现在可以通过您的浏览器访问http://<服务器IP地址>:8080来查看您的Flask网站的运行情况。

如果您看到浏览器中渲染出了我们刚刚编写的HTML页面,您就已经成功地编写了一个简单的Flask Web应用了!

Python实现RESTful API

这次,我们将演示如何使用Python编写RESTful风格的API。我们创建一个名为"cars.py"的代码文件。内容如下:

from flask import Flask, request, jsonify

app = Flask(__name__)

cars = [
    {
        'brand': 'BMW',
        'year': '2018',
        'model': 'X5',
    },
    {
        'brand': 'Mercedes',
        'year': '2020',
        'model': 'S class',
    },
    {
        'brand': 'Audi',
        'year': '2016',
        'model': 'Q5',
    }
]

@app.route('/cars/', methods=['GET'])
def get_all_cars():
    return jsonify({'cars': cars})

@app.route('/cars/', methods=['POST'])
def add_car():
    car = request.get_json()
    cars.append(car)
    return jsonify(car)

@app.route('/cars/<string:model>/', methods=['PUT'])
def update_car(model):
    for i in range(len(cars)):
        if cars[i]['model'] == model:
            cars[i] = request.get_json()
            return jsonify(cars[i]), 200
    return jsonify({'message': 'Car not found'})

@app.route('/cars/<string:model>/', methods=['DELETE'])
def remove_car(model):
    for i in range(len(cars)):
        if cars[i]['model'] == model:
            cars.pop(i)
            return jsonify({'message': 'Car removed'})
    return jsonify({'message': 'Car not found'})

if __name__ == '__main__':
    app.run(debug=True, host='localhost', port=8080)

代码中的API模拟了一个简单的汽车列表。GET请求返回所有汽车的列表,POST请求将新车添加到列表中,PUT请求更新现有的汽车,DELETE请求删除现有汽车。

到现在,我们已经完成了uWSGI、Python应用和nginx的全部配置。为了启动我们的Python Web应用程序并访问API,您可以使用以下命令:

uwsgi --ini service.ini

现在您可以通过访问http:///cars/来访问并使用您的RESTful API。

总结:我们成功地创建了一个基于Python的Web环境,并且可以通过NGINX运行并提供服务。我们还创建了一个基本网站和一个简单API的例子来演示了如何使用Flask框架和Python创建Web应用程序。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nginx搭建基于python的web环境的实现步骤 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 使用Nginx做转发和匹配替换

    Nginx是一个强大的服务器软件,由于处理数据内容处于第七层协议应用层的原因,所以获取的数据也比较完整; Nginx做转发: 这个很简单,vi nginx.conf(编辑nginx配置文件) 添加location /public/sexy.jpg{//这个是你域名访问的图片   proxy_pass http://www.tmp.jpg;#这个是你要替换的图…

    Nginx 2023年4月12日
    00
  • Linux通过nginx部署Vue项目设置反向代理配置详解

    1、部署nginx 1.1、下载源码 查看nginx包路径:http://nginx.org/download/ 1.2、解压 tar xvf nginx-1.16.1.tar.gz -C /usr/local/src/ 1.3、安装相应的开发工具 yum groupinstall “Development tools” yum -y install gcc…

    Nginx 2023年4月13日
    00
  • 一文弄懂Nginx的location匹配的实现

    一、Nginx的location匹配简介 Nginx中的location指令是用来匹配请求URI的。主要有三种匹配方式: 精确匹配:location = /uri 普通匹配:location /uri 或 location ^~ /uri 正则表达式匹配:location ~ regex 或 location ~* regex 精确匹配只有当请求URI与 l…

    Nginx 2023年5月16日
    00
  • 比较完整的Nginx配置文件nginx.conf常用参数中文详解

    下面是“比较完整的Nginx配置文件nginx.conf常用参数中文详解”的完整攻略。 简介 Nginx是一个高性能的Web服务器和反向代理服务器。nginx.conf是Nginx的主配置文件。本篇攻略将详细讲解nginx.conf中常用的一些参数。 Nginx配置文件基本结构 Nginx配置文件的基本结构如下: http { upstream backen…

    Nginx 2023年5月16日
    00
  • Nginx解决后端接口跨域问题

    前后端分离项目,优先使用Nginx同域部署。 不能同域部署的势必会跨域,此时则需要用Nginx给后端项目做反向代理,需额外配置: location / { # 1.针对复杂请求,的前导OPTIONS请求,采取一律放行政策,Nginx拦截后直接返回200,不打到后端接口,避免后端认证等问题(因为OPTIONS请求不支持自定义头) if ($request_me…

    Nginx 2023年4月13日
    00
  • nginx配置文件使用环境变量的操作方法

    简介 Nginx是一个高性能的开源Web服务器和反向代理服务器,可用于将请求转发到后端应用程序或直接提供静态资源。在生产环境中,Nginx的运行配置文件可能因环境而异。例如,您可能希望将Nginx的日志文件存储在不同的位置,具体取决于服务器的环境和管理要求。在这种情况下,将环境变量用于Nginx配置文件可以帮助您轻松地实现此目的。 配置Nginx配置文件使用…

    Nginx 2023年5月16日
    00
  • 如何配置Nginx的FastCGI缓存目录?

    下面是如何配置Nginx的FastCGI缓存目录的完整攻略: 创建缓存目录 需要先在服务器上创建一个用于缓存的目录,比如 /var/cache/nginx/fastcgi。你可以使用如下命令: sudo mkdir -p /var/cache/nginx/fastcgi sudo chown -R www-data:www-data /var/cache/n…

    Nginx 2023年4月19日
    00
  • nginx搭建图片服务器的过程详解(root和alias的区别)

    Nginx搭建图片服务器的过程详解 1. 什么是Nginx? Nginx是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP服务器。 Nginx的目的是为了解决C10k问题。 2. Nginx搭建图片服务器 2.1 安装Nginx 使用apt-get在Ubuntu上安装 sudo apt-get install nginx 安装完…

    Nginx 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部