在Ubuntu上创建一个Anaconda+Flask环境

确认环境

lsb_release -a
Distributor ID:	Ubuntu
Description:	Ubuntu 20.04.2 LTS
Release:	20.04
Codename:	focal

安装Anaconda

我会使用wget进行下载。
https://www.anaconda.com/products/distribution#Downloads

https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh

在bash中执行已下载的脚本。

bash Anaconda3-2022.10-Linux-x86_64.sh
Welcome to Anaconda3 2022.10

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
>>> 

只需按 Enter 就会被询问是否同意,回答是。

Do you accept the license terms? [yes|no]
[no] >>> 
Please answer 'yes' or 'no':'
>>> yes

由于被问及安装位置,将其放置在创建用户的主目录中。

Anaconda3 will now be installed into this location:
/root/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/anaconda3] >>> /home/katsuji/anaconda3

在您确认 conda 版本之前,需要确认路径是否通畅,我帮您配置一下路径。

vi ~/.bashrc

将`export PATH=~/anaconda3/bin:$PATH`这一行添加到`~/.bashrc`文件中的任意位置。最后对`.bashrc`进行更新。

source ~/.bashrc

确认conda

conda -V
conda 22.9.0 #OK

创建Flask环境

conda create -n flask

在Flask环境中安装Flask。

conda activate flask
(flask) katsuji@XXX:~$ conda install flask

目录结构

~/flask_app
    ├── app.py
    └── test.py

uWSGI

安装uWSGI

因为无法从默认频道中进行安装,所以我从conda-forge进行了安装。

(flask) katsuji@XXX:~/$conda install -c conda-forge uwsgi

uwsgi的运行验证

我参考了以下网站。实际上是直接复制的。https://serip39.hatenablog.com/entry/2020/07/06/070000

def application(env, start_response):
    start_response('200 OK', [('Content-Type','text/html')])
    return [b"Hello World uWSGI"]

对uwsgi进行操作验证

(flask) katsuji@XXX:~/flask_app$ uwsgi --http :8000 --wsgi-file test.py

当连接到 http://127.0.0.1:8000 并看到 “Hello World uWSGI” 时,表明一切正常。
就我个人而言,我是通过租用的服务器来进行连接,所以要连接到 http://X.X.X.X:8000。其中的X是租用服务器的IP地址。

用uwsgi启动Flask

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello world Flask"

if __name__ == "__main__":
    app.run()
(flask) katsuji@XXX:~/flask_app$ uwsgi --http :8000 --wsgi-file app.py --callable app

确认
本地主机:http://127.0.0.1:8000
租用服务器:http://X.X.X.X:8000
当输出”Hello world Flask”时,表示正常

nginx的配置

安装和确认nginx

退出Flask环境,请使用conda deactivate命令。

#nginx install
sudo apt install nginx 
#start nginx
sudo /etc/init.d/nginx start 

如果连接到 http://127.0.0.1:80 并出现 “Welcome to nginx!”,则表示连接成功。对于我个人来说,由于使用的是租用服务器,在 http://X.X.X.X:80 进行连接,其中 X 是租用服务器的 IP 地址。

编辑nginx配置文件

cd /etc/nginx/sites-available

将sites-available中的default文件复制为app_nginx.conf,以用于本次应用。

sudo cp default ./app_nginx.conf
# Virtual Host configuration for example.com
server {
        listen X.X.X.X80; #Xの部分を省略してlisten 80;とするとlocalhostに接続
        server_name example.com;        
        location / {
          include uwsgi_params;
          uwsgi_pass unix:/tmp/uwsgi.sock;
        }
}

site-available -> site-enabled的符号链接

# シンボリックリンクの作成
cd /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/app_nginx.conf app_nginx.conf

只需编辑/etc/nginx/nginx.conf文件,以仅加载app_nginx.conf。

sudo vi /etc/nginx/nginx.conf
# Virtual Host Configs
include /etc/nginx/conf.d/*.conf;
#include /etc/nginx/sites-enabled/*; #コメントアウト
include /etc/nginx/sites-enabled/*.conf; #app_nginx.confを読む

连接nginx和uwsgi

启动uwsgi服务器

uwsgi --ini myapp.ini

在另一个终端中启动nginx。

sudo /etc/init.d/nginx start

请参考

非常感谢您的帮助和参考。 在Python中,构建Flask的生产环境(Flask + uWSGI + Nginx)。

广告
将在 10 秒后关闭
bannerAds