在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)。