如何在 Ubuntu 22.04 上使用 uWSGI 和 Nginx 为 Flask 应用程序提供服务

2023-11-19

介绍

在本指南中,您将使用FlaskUbuntu 22.04 上的微框架。本文的大部分内容将讨论如何设置uWSGI应用服务器以及如何启动应用程序和配置Nginx充当前端反向代理。

先决条件

在开始本指南之前,您应该:

  • 安装了 Ubuntu 22.04 的服务器和具有 sudo 权限的非 root 用户。关注我们的初始服务器设置指南以获得指导。

  • Nginx已安装,如下步骤 1 至 3 of 如何在 Ubuntu 22.04 上安装 Nginx.

  • 配置为指向您的服务器的域名。您可以在名称廉价或免费获得一份Freenom。您可以按照相关的说明了解如何将域指向 DigitalOcean有关域和 DNS 的文档。本教程假设您已创建以下 DNS 记录:

    • An A record with your_domain pointing to your server’s public IP address.
    • An A record with www.your_domain pointing to your server’s public IP address.

此外,熟悉 uWSGI(您将在本指南中设置的应用程序服务器)以及 WSGI 规范可能会有所帮助。这次讨论定义和概念的详细内容。

第 1 步 — 从 Ubuntu 存储库安装组件

您的第一步是从 Ubuntu 存储库安装您需要的所有组件。您需要安装的软件包包括pip,Python 包管理器,用于管理您的 Python 组件。您还将获得构建 uWSGI 所需的 Python 开发文件。

首先,更新本地包索引:

  1. sudo apt update

然后安装允许您构建 Python 环境的软件包。这些将包括python3-pip,以及健壮的编程环境所需的更多软件包和开发工具:

  1. sudo apt installpython3-pip python3-dev build-essential libssl-dev libffi-dev python3-setuptools

准备好这些包后,您就可以开始为您的项目创建虚拟环境了。

第 2 步 — 创建 Python 虚拟环境

Python 虚拟环境是一个独立的项目目录,其中包含特定版本的 Python 以及给定项目所需的 Python 模块。通过单独管理每个应用程序的依赖关系,这对于将一个应用程序与同一系统上的其他应用程序隔离非常有用。在此步骤中,您将设置一个 Python 虚拟环境,从中运行 Flask 应用程序。

首先安装python3-venv包,这将安装venv module:

  1. sudo apt installpython3-venv

接下来,为您的 Flask 项目创建一个父目录:

  1. mkdir ~/myproject

创建目录后移至该目录:

  1. cd ~/myproject

通过键入以下内容创建一个虚拟环境来存储 Flask 项目的 Python 要求:

  1. python3.10 -m venv myprojectenv

This will install a local copy of Python and pip into a directory called myprojectenv within your project directory.

在虚拟环境中安装应用程序之前,您需要激活它。通过键入以下内容来执行此操作:

  1. source myprojectenv/bin/activate

Your prompt will change to indicate that you are now operating within the virtual environment. It will look something like this: (myprojectenv)user@host:~/myproject$.

第 3 步 — 设置 Flask 应用程序

现在您已处于虚拟环境中,您可以安装 Flask 和 uWSGI,然后开始设计您的应用程序。

首先,安装wheel与本地实例pip确保您的软件包即使缺少wheel档案也能安装:

  1. pip install wheel

Note:无论你使用哪个版本的Python,当激活虚拟环境时,你应该使用pip命令(不是pip3).

接下来,安装 Flask 和 uWSGI:

  1. pip installUWSGI烧瓶

创建示例应用程序

现在您已经有了 Flask,您可以创建一个示例应用程序。 Flask 是一个微框架。它不包含功能更齐全的框架可能提供的许多工具,主要作为一个模块存在,您可以将其导入到项目中以帮助您初始化 Web 应用程序。

虽然您的应用程序可能更复杂,但在本示例中,您将在名为的单个文件中创建 Flask 应用程序myproject.py. Open myproject.py using nano或您最喜欢的文本编辑器:

  1. nano ~/myproject/myproject.py

应用程序代码将位于此文件中。它将导入 Flask 并实例化一个 Flask 对象。您可以使用它来定义在请求特定路由时要运行的函数:

〜/ myproject / myproject.py
from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "<h1 style='color:blue'>Hello There!</h1>"

if __name__ == "__main__":
    app.run(host='0.0.0.0')

本质上,这定义了向访问根域的人呈现什么内容。完成后保存并关闭文件。如果你用过nano要编辑文件,如前面的示例所示,请按CTRL + X, Y, 进而ENTER.

如果您遵循初始服务器设置指南,则应该启用 UFW 防火墙。要测试应用程序,您需要允许访问端口5000:

  1. sudoUFW 允许5000

现在,您可以通过键入以下内容来测试您的 Flask 应用程序:

  1. python myproject.py

您将看到如下输出,其中包括一条有用的警告,提醒您不要在生产中使用此服务器设置:

Output
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Serving Flask app 'myproject' * Debug mode: off * Running on all addresses (0.0.0.0) WARNING: This is a development server. Do not use it in a production deployment. * Running on http://127.0.0.1:5000 * Running on http://your_server:5000 (Press CTRL+C to quit)

访问您服务器的 IP 地址,然后:5000在您的网络浏览器中:

http://your_server_ip:5000

你会看到这样的东西:

Flask sample app

当你完成后,点击CTRL + C在终端窗口中停止 Flask 开发服务器。

创建 WSGI 入口点

接下来,创建一个文件作为应用程序的入口点。这将告诉你的 uWSGI 服务器如何与其交互。

调用文件wsgi.py:

  1. nano ~/myproject/wsgi.py

在此文件中,从应用程序导入 Flask 实例,然后运行它:

〜/myproject/wsgi.py
from myproject import app

if __name__ == "__main__":
    app.run()

完成后保存并关闭文件。

第4步——配置uWSGI

您的应用程序现已编写并建立了入口点。您可以继续配置 uWSGI。

测试uWSGI是否可以服务应用程序

第一步,测试以确保 uWSGI 可以通过向应用程序传递入口点的名称来正确地为您的应用程序提供服务。这是由模块的名称构造的(减去.py扩展名)加上应用程序内可调用的名称。在本教程的上下文中,入口点的名称是wsgi:app.

另外,指定套接字,以便它将在公共可用的接口上启动,以及协议,以便它将使用 HTTP 而不是uwsgi二进制协议。使用相同的端口号,5000,您之前打开的:

  1. uwsgi --socket 0.0.0.0:5000- 协议=http -wwsgi:应用程序

访问您服务器的 IP 地址:5000再次附加到网络浏览器的末尾:

http://your_server_ip:5000

您将再次看到应用程序的输出:

Flask sample app

当您确认其功能正常后,请按CTRL + C在你的终端窗口中。

您现在已经完成了虚拟环境,因此您可以停用它:

  1. 停用

现在,任何 Python 命令都将再次使用系统的 Python 环境。

创建uWSGI配置文件

您已经测试了 uWSGI 能够为您的应用程序提供服务,但您将需要更强大的东西来长期使用。您可以创建一个包含相关选项的 uWSGI 配置文件。

将该文件放入您的项目目录中并调用它myproject.ini:

  1. nano ~/myproject/myproject.ini

在里面,从文件开始[uwsgi]标头,以便 uWSGI 知道应用设置。下面,指定模块本身——通过引用wsgi.py文件减去扩展名 - 以及文件中的可调用项,app:

〜/ myproject / myproject.ini
[uwsgi]
module = wsgi:app

接下来,告诉uWSGI以主模式启动并生成五个工作进程来服务实际请求:

〜/ myproject / myproject.ini
[uwsgi]
module = wsgi:app

master = true
processes = 5

When you were testing, you exposed uWSGI on a network port. However, you’re going to be using Nginx to handle actual client connections, which will then pass requests to uWSGI. Since these components are operating on the same computer, a Unix socket is preferable because it is faster and more secure. Call the socket myproject.sock and place it in this directory.

接下来,更改套接字上的权限。稍后您将向 Nginx 组授予 uWSGI 进程的所有权,因此您需要确保套接字的组所有者可以从中读取信息并向其写入信息。另外,添加vacuum选项并将其设置为 true;这将在进程停止时清理套接字:

〜/ myproject / myproject.ini
[uwsgi]
module = wsgi:app

master = true
processes = 5

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

最后要做的就是设置die-on-term选项。这可以帮助确保 init 系统和 uWSGI 对于每个进程信号的含义具有相同的假设。设置此选项可以使两个系统组件保持一致,从而实现预期的行为:

〜/ myproject / myproject.ini
[uwsgi]
module = wsgi:app

master = true
processes = 5

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

die-on-term = true

您可能已经注意到,这些行并不像您在命令行中那样指定协议。这是因为默认情况下,uWSGI 使用uwsgi协议,一种快速二进制协议,旨在与其他服务器通信。 Nginx 可以原生使用该协议,因此使用它比强制通过 HTTP 进行通信更好。

完成后,保存并关闭文件。

这样,uWSGI就在你的系统上配置好了。为了让您更灵活地管理 Flask 应用程序,您现在可以将其配置为作为 systemd 服务运行。

第 5 步 — 创建 systemd 单元文件

Systemd 是一套工具,为管理系统服务提供快速、灵活的初始化模型。创建一个 systemd 单元文件将允许 Ubuntu 的 init 系统在服务器启动时自动启动 uWSGI 并为 Flask 应用程序提供服务。

创建一个以以下结尾的单元文件.service/etc/systemd/system开始目录:

  1. sudo nano /etc/systemd/system/myproject.service

在里面,从[Unit]部分,用于指定元数据和依赖项。然后在此处放置服务的描述,并告诉 init 系统仅在达到网络目标后才启动该服务:

/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

接下来,创建[Service]部分。这将指定您希望进程在其下运行的用户和组。授予您的常规用户帐户该进程的所有权,因为它拥有所有相关文件。然后将组所有权授予www-data组,以便 Nginx 可以与 uWSGI 进程通信(这是 Nginx 在 Ubuntu 上默认运行的组)。请记住将此处的用户名替换为您的用户名:

/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data

接下来,绘制工作目录并设置PATH环境变量,以便 init 系统知道该进程的可执行文件位于您的虚拟环境中。另外,指定启动服务的命令。 Systemd 要求您提供安装在虚拟环境中的 uWSGI 可执行文件的完整路径。在这里,我们传递名称.ini您在项目目录中创建的配置文件。

请记住将用户名和项目路径替换为您自己的信息:

/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment="PATH=/home/sammy/myproject/myprojectenv/bin"
ExecStart=/home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini

最后,添加一个[Install]部分。如果您启用它在引导时启动,这将告诉 systemd 将此服务链接到什么。在这种情况下,将服务设置为在常规多用户系统启动并运行时启动:

/etc/systemd/system/myproject.service
[Unit]
Description=uWSGI instance to serve myproject
After=network.target

[Service]
User=sammy
Group=www-data
WorkingDirectory=/home/sammy/myproject
Environment="PATH=/home/sammy/myproject/myprojectenv/bin"
ExecStart=/home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini

[Install]
WantedBy=multi-user.target

至此,您的 systemd 服务文件就完成了。立即保存并关闭它。

在启动uWSGI服务之前,您需要进行权限更改,因为Nginxwww-data在 Ubuntu 22.04 及更高版本中,默认情况下用户将无法读取主目录中的文件。这可以防止您在主目录之外提供 Web 应用程序。快速解决方法是使用以下命令更改与主目录关联的组chgrp:

  1. sudo chgrpwww-数据/home/sammy

这将允许 Nginx 查看您的主目录的内容,它需要这些内容才能访问套接字文件。它不会将您的主目录中的任何文件暴露给网络。

您现在可以启动您创建的uWSGI服务:

  1. sudo systemctl start myproject

然后启用它以便它在启动时启动:

  1. sudo systemctl enable myproject

检查状态:

  1. sudo systemctl status myproject

您将看到如下输出:

Output
● myproject.service - uWSGI instance to serve myproject Loaded: loaded (/etc/systemd/system/myproject.service; enabled; vendor preset: ena> Active: active (running) since Fri 2022-08-05 17:22:05 UTC; 6s ago Main PID: 4953 (uwsgi) Tasks: 6 (limit: 2327) Memory: 20.9M CPU: 241ms CGroup: /system.slice/myproject.service ├─4953 /home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini ├─4954 /home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini ├─4955 /home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini ├─4956 /home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini ├─4957 /home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini └─4958 /home/sammy/myproject/myprojectenv/bin/uwsgi --ini myproject.ini

If you see any errors, be sure to resolve them before continuing with the tutorial. Otherwise, you can move on to configuring your Nginx installation to pass requests to the myproject.sock socket.

第 6 步 — 配置 Nginx 来代理请求

您的uWSGI应用程序服务器现在已启动并正在运行,正在等待项目目录中套接字文件的请求。在此步骤中,您将配置 Nginx 以使用以下命令将 Web 请求传递到该套接字:uwsgi协议。

Begin by creating a new server block configuration file in Nginx’s sites-available directory. To keep in line with the rest of the guide, the following example refers to this as myproject:

  1. sudo nano /etc/nginx/sites-available/myproject

打开一个服务器块并告诉 Nginx 监听默认端口80。此外,告诉它使用此块来请求您的服务器域名:

/etc/nginx/sites-available/myproject
server {
    listen 80;
    server_name your_domain www.your_domain;
}

接下来,添加与每个请求匹配的位置块。在此块中,包括uwsgi_params文件,指定一些需要设置的通用uWSGI参数。然后将请求传递到您定义的套接字uwsgi_pass指示:

/etc/nginx/sites-available/myproject
server {
    listen 80;
    server_name your_domain www.your_domain;

    location / {
        include uwsgi_params;
        uwsgi_pass unix:/home/sammy/myproject/myproject.sock;
    }
}

完成后保存并关闭文件。

要启用您刚刚创建的 Nginx 服务器块配置,请将文件链接到sites-enabled目录:

  1. sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled

当您安装 Nginx 时,该进程会自动设置一个名为的服务器块配置文件default in the sites-available目录,然后在该文件和sites-enabled目录。如果您保留此符号链接,则default配置将阻止您的网站加载。您可以使用以下命令删除链接:

  1. sudo取消链接 /etc/nginx/sites-enabled/default

接下来,您可以通过键入以下内容来测试语法错误:

  1. sudo nginx -t

如果返回但没有指示任何问题,请重新启动 Nginx 进程以读取新配置:

  1. sudosystemctl 重新启动 nginx

最后,再次调整防火墙。您不再需要通过端口访问5000,因此您可以删除该规则。然后,您可以允许访问 Nginx 服务器:

  1. sudoufw 删除允许5000
  2. sudoUFW 允许“Nginx 已满”

您现在可以在网络浏览器中导航到服务器的域名:

http://your_domain

您将看到您的应用程序输出:

Flask sample app

如果遇到任何错误,请尝试检查以下内容:

  • sudo less /var/log/nginx/error.log:检查Nginx错误日志。
  • sudo less /var/log/nginx/access.log:检查Nginx访问日志。
  • sudo journalctl -u nginx:检查Nginx进程日志。
  • sudo journalctl -u myproject: checks your Flask app’s uWSGI logs.

第 7 步 — 保护应用程序

为了确保到您服务器的流量保持安全,请为您的域获取 SSL 证书。有多种方法可以做到这一点,包括从让我们加密、生成自签名证书或从商业提供商处购买证书。为了方便起见,本教程介绍了如何从 Let’s Encrypt 获取免费证书。

首先,安装 Certbot 及其 Nginx 插件apt:

  1. sudo apt installcertbot python3-certbot-nginx

Certbot提供了多种通过插件获取SSL证书的方式。 Nginx 插件将负责重新配置 Nginx 并在必要时重新加载配置。要使用此插件,请输入以下内容:

  1. sudo certbot --nginx -d your_domain -d www.your_domain

这运行certbot--nginx插件,使用-d指定您希望证书有效的名称。

如果这是您第一次跑步certbot在此服务器上,系统将提示您输入电子邮件地址并同意服务条款。这样做之后,certbot将与 Let’s Encrypt 服务器通信,然后运行质询以验证您是否控制要为其请求证书的域。

配置将被更新,Nginx 将重新加载以获取新设置。certbot最后将显示一条消息,告诉您该过程已成功以及您的证书的存储位置:

Output
Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem This certificate expires on 2022-11-03. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/myproject Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/myproject Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

如果您按照先决条件中的 Nginx 安装说明进行操作,您将不再需要冗余的 HTTP 配置文件限额:

  1. sudoufw 删除允许'Nginx HTTP'

要验证配置,请再次导航到您的域,使用https://:

https://your_domain

您将再次看到您的应用程序输出,以及浏览器的安全指示器,这应该表明该站点是安全的。

结论

在本指南中,您在 Python 虚拟环境中创建并保护了 Flask 应用程序。然后,您创建了一个 WSGI 入口点,以便任何支持 WSGI 的应用程序服务器都可以与其交互,然后配置 uWSGI 应用程序服务器以提供此功能。之后,您创建了一个 systemd 服务文件以在启动时自动启动应用程序服务器。您还创建了一个 Nginx 服务器块,它将 Web 客户端流量传递到应用程序服务器,从而中继外部请求,并使用 Let’s Encrypt 保护到服务器的流量。

Flask 是一个灵活的框架,旨在为您的应用程序提供功能,而不会在结构或设计方面受到太多限制。您可以使用本指南中描述的通用堆栈来服务您设计的 Flask 应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ubuntu 22.04 上使用 uWSGI 和 Nginx 为 Flask 应用程序提供服务 的相关文章

随机推荐

  • Linux 文件命令

    Linuxfile命令显示文件的类型 当您必须找出以前从未见过的文件类型或文件没有文件扩展名时 这会很有帮助 Linux 文件命令语法 Linux 的语法file命令如下 file OPTION FILE 它可以采用一个或多个文件名作为其参
  • 如何在 Ubuntu 20.04 上配置静态 IP 地址

    本文介绍如何在 Ubuntu 20 04 上设置静态 IP 地址 通常 在大多数网络配置中 IP 地址由路由器 DHCP 服务器动态分配 在不同情况下可能需要设置静态 IP 地址 例如配置端口转发或运行媒体服务器 使用 DHCP 配置静态
  • 如何在 Bash 中将 stderr 重定向到 stdout

    将命令的输出重定向到文件或通过管道将其传输到另一个命令时 您可能会注意到错误消息打印在屏幕上 在 Bash 和其他 Linux shell 中 当程序执行时 它使用三个标准 I O 流 每个流都由一个数字文件描述符表示 0 stdin 标准
  • 如何在 Ubuntu 18.04 上安装 PHP

    在本教程中 我们将介绍在 Ubuntu 18 04 上安装发行版的默认 PHP 7 2 并将其与 Nginx 和 Apache 集成所需的步骤 我们还将向您展示如何安装 PHP 7 1 和 7 3 大多数流行的 PHP 框架和应用程序包括W
  • 如何在 Ubuntu 18.04 上使用 Apache 安装 Joomla

    Joomla 是最流行的开源内容管理系统之一 为数十万个网站提供支持 它是用 PHP 编写的 包含大量可以通过免费和高级扩展和主题进行扩展的功能 使用 Joomla 您可以轻松构建电子商务商店 个人网站 社交网站或博客 在本教程中 我们将解
  • 如何在 Ubuntu 20.04 上安装和使用 Wine

    Wine 是一个开源兼容层 允许您在类 Unix 操作系统 例如 Linux FreeBSD 和 macOS 上运行 Windows 应用程序 Wine是 Wine Is Not an Emulator 的缩写 它将 Windows 系统调
  • 如何在 CentOS 8 上安装 Skype

    Skype是世界上最流行的通信应用程序之一 它允许您免费拨打在线音频和视频电话 并以经济实惠的价格拨打全球手机和固定电话 本文介绍如何在 CentOS 8 上安装最新版本的 Skype 在 CentOS 上安装 Skype Skype 不是
  • 如何在 Ubuntu 20.04 上安装 Ruby

    Ruby 是当今最流行的编程语言之一 它具有优雅的语法 注重简单性和生产力 Ruby 是强大的 Ruby on Rails 框架背后的语言 在本教程中 我们将向您展示在 Ubuntu 20 04 上安装 Ruby 的三种不同方法 来自标准
  • 如何在 CentOS 7 上安装 Node.js 和 npm

    Node js 是一个跨平台的 JavaScript 运行时环境 允许服务器端执行 JavaScript 代码 Node js 主要用于后端 但作为全栈和前端解决方案也很受欢迎 npm 是 Node Package Manager 的缩写
  • 如何在 CentOS 8 上安装 Tomcat 9

    Apache Tomcat 是 Java Servlet JavaServer Pages Java 表达式语言和 Java WebSocket 技术的开源实现 它是当今世界上采用最广泛的应用程序和 Web 服务器之一 Tomcat 使用简
  • 如何在 Debian 9 上安装 Asterisk

    Asterisk 是最流行且广泛采用的用于构建通信应用程序的开源框架 它被世界各地的个人 小型企业 大型企业和政府使用 Asterisk 功能包括电话会议 语音邮件 等待音乐 呼叫转接 呼叫排队 呼叫录音 数据库存储 检索等等 在本教程中
  • 如何在 CentOS 7 上安装 Minecraft 服务器

    我的世界 是有史以来最受欢迎的游戏之一 这是一款关于放置方块并进行冒险的沙盒视频游戏 在本教程中 我们将完成在 CentOS 7 上安装和配置 Minecraft 服务器所需的步骤 我们将使用 Systemd 来运行 Minecraft 服
  • 如何在 CentOS 7 上安装 Elasticsearch

    Elasticsearch 是一个开源分布式全文搜索和分析引擎 它支持 RESTful 操作 允许您实时存储 搜索和分析大量数据 Elasticsearch 是最流行的搜索引擎之一 为具有复杂搜索要求的应用程序 例如大型电子商务商店和分析应
  • Linux 中的 Tar 命令(创建和提取档案)

    The tar命令通过将一组文件转换为存档来创建 tar 文件 它还可以提取 tar 存档 显示存档中包含的文件列表 向现有存档添加其他文件以及各种其他类型的操作 Tar 最初设计用于创建档案以将文件存储在磁带上 这就是它得名 的原因 Ta
  • 如何在 Ubuntu 18.04 上启用 SSH

    Secure Shell SSH 是一种加密网络协议 用于客户端和服务器之间的安全连接 在本教程中 我们将向您展示如何在 Ubuntu 桌面计算机上启用 SSH 启用 SSH 将允许您远程连接到 Ubuntu 计算机并安全地传输文件或执行管
  • Spring Boot @SpringBootApplication,SpringApplication 类

    春季启动 SpringBootApplication注解 春季启动 SpringBootApplication注解用于标记一个配置类 该类声明了一个或多个 Bean方法和触发器auto configuration和组件扫描 这与声明一个类相
  • 如何在 Ruby 中使用字符串

    介绍 A string是一个或多个字符的序列 可以由字母 数字或符号组成 Ruby 中的字符串是对象 与其他语言不同 字符串是mutable 这意味着可以就地更改它们 而不用创建新字符串 您几乎会在编写的每个程序中使用字符串 字符串允许您使
  • 有用的 Bash 别名和函数简介

    介绍 在命令行上操作的越多 您就越会发现您使用的大多数命令只是可用命令的很小的子集 大多数任务都是习惯性的 您可能每天都以相同的方式运行这些任务 虽然许多最常见的命令实用程序的制造商试图通过使用缩写名称来消除无关的输入 想想通过输入 ls
  • 在 Ubuntu 14.04 上使用 Consul(服务发现系统)简介

    介绍 Consul是一个分布式 高可用 数据中心感知的服务发现和配置系统 它可用于在灵活而强大的界面中呈现服务和节点 使客户端始终能够了解其所属基础设施的最新视图 Consul 提供了许多不同的功能 用于提供有关您的基础设施的一致且可用的信
  • 如何在 Ubuntu 22.04 上使用 uWSGI 和 Nginx 为 Flask 应用程序提供服务

    介绍 在本指南中 您将使用FlaskUbuntu 22 04 上的微框架 本文的大部分内容将讨论如何设置uWSGI应用服务器以及如何启动应用程序和配置Nginx充当前端反向代理 先决条件 在开始本指南之前 您应该 安装了 Ubuntu 22