2

三分钟部署Python Web应用,云开发了解一下?

 1 year ago
source link: https://www.51cto.com/article/745151.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

三分钟部署Python Web应用,云开发了解一下?

作者:Ckend 2023-01-27 18:42:24
本文通过介绍使用云托管服务,教大家如何尽可能减免部署难度,减轻负担。

新手在平时开发Web应用时,由于对Linux系统的不熟悉,往往会遇到一些部署上的难题。

本文通过介绍使用云托管服务,教大家如何尽可能减免部署难度,减轻负担。

1. 编写基础应用

创建名为 helloworld 的新目录,并转到此目录中:

mkdir hello-cloud-develop
cd hello-cloud-develop

创建名为  main.py  的文件,并将以下代码粘贴到其中:

import os
from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'
  
if __name__ == "__main__":
    app.run(debug=True, host='0.0.0.0', port=8080)

以上代码会创建一个基本的 Web 服务器,并监听 8080  端口。

2. 将应用容器化

在项目根目录下,创建一个名为  Dockerfile  的文件,内容如下:

# 使用官方 Python 轻量级镜像
# https://hub.docker.com/_/python
FROM python:3.8-slim
# 将本地代码拷贝到容器内
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
# 安装依赖
RUN pip install Flask gunicorn
# 启动 Web 服务
# 这里我们使用了 gunicorn 作为 Server,1 个 worker 和 8 个线程
# 如果您的容器实例拥有多个 CPU 核心,我们推荐您把线程数设置为与 CPU 核心数一致
CMD exec gunicorn --bind :8080 --workers 1 --threads 8 --timeout 0 main:app

添加一个  .dockerignore  文件,以从容器映像中排除文件:

Dockerfile
README.md
*.pyc
*.pyo
*.pyd
__pycache__
.pytest_cache

3.部署到 CloudBase 云托管

你可以选择任何云服务商的云开发服务,这里我选择了腾讯云的CloudBase云托管服务。

在 云托管控制台 的服务列表页面,选择对应的环境,单击【新建服务】:https://console.cloud.tencent.com/tcb/service

填写新建服务所需的所有信息默认使用系统推荐的配置即可。

图片

单击【提交】,如果部署成功,便可以看到如下弹框:

图片

单击【新建版本】可立刻开始新建版本并部署,在这里我们选择本地代码,将刚刚写好的文件夹打包为zip文件并上传,端口改为 8080​ ,流量策略改为 部署完成后自动开启100%流量 ,其他配置默认即可:

图片

PS: hello-cloud-develop.zip 可在 Python实用宝典 公众号后台回复:云开发 下载

当然,你也可以选择其他的拉取代码方式,比如代码库或者Docker镜像,按需选择即可。点击开始部署将代码仓库部署为线上服务。

图片

状态变成正常说明部署成功。

4.访问网站

部署成功后就可以访问网站了,进入服务配置,找到公网域名:

图片

这个公网域名就是我们部署网站的地址,访问这个公网域名,出现下面页面效果,说明部署成功:

图片

恭喜!你已经成功通过云开发部署一个网站了,准确来讲是云托管服务。这种部署方式实在非常舒服,无需自建服务器、成本降低、运维省事。

那些简单的个人网站、官方网站或者论坛,我认为都可以用云托管的形式去部署,能够大大节省投入成本,站长们可以尝试一下。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK