第一次部署记录一下:有错欢迎大哥大姐批评指正留言!我是小白,很小的那种。
用xshell连接服务器
用xftp进行文件传输
购买的服务器配置是阿里云ubuntu16.04
Python3
1.先更新apt
sudo apt-get update
sudo apt-get upgrade
2. 安装 virtualenv 虚拟环境
pip install virtualenv
pip3 install virtualenvwrapper
配置环境变量文件。首先修改(文件不存在就创建)文件~/.bashrc,然后添加如下语句:
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
运行:source ~/.bashrc
source ~/.bashrc
创建文件夹myflask方便管理
mkdir myflask
或者直接在xftp中创建更直接方便
进入该目录
cd myflask
创建虚拟环境:这里选择Python3 虚拟环境名称取T
mkvirtualenv -p python3 T
直接输入以下命令就可以进入虚拟环境
source T/bin/activate
命令行前面就出现了T的字样,此时已经处于虚拟环境中。
创建或复制hello.py文件
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return( "Hello World!")
if __name__ == "__main__":
app.run(host='0.0.0.0', port=8080)
运行命令:
python hello.py
退出虚拟环境命令:
deactivate
这里会提示很多包没有,需要在虚拟化环境中安装
安装的包括但不限于flask
确认安装包安装完毕,访问你的服务器ip+端口号()访问,看看能不能行
eg:233.123.234.12:5000
可以的话(访问时,出现“Hello World!”字样),Ctrl+C退出调试就行了
因为后面的操作不用在虚拟环境中进行,需要先退出虚拟环境
deactivate命令退出虚拟环境
安装 uWSGI
这个是flask的生产运行环境之一,flask自带的wsgi性能太差了
pip install uwsgi
创建uWSGI的配置文件
cd /home/myflask
vim uwsgi.ini
# 配置文件'/home/myflask/uwsgi.ini'
[uwsgi]
#application's base folder
base = /home/myflask
#python module to import
app = hello
module = %(app)
home = %(base)/venv
pythonpath = %(base)
#socket file's location
socket = %(base)/%n.sock
#permissions for the socket file
chmod-socket = 666
callable = app
#location of log files
logto = /var/log/uwsgi/%n.log
参数讲解
base:项目文件所在目录
app:python 程序内用以启动的 application 变量名的文件名(最好的辨认方法是看哪个文件中app.run()这行代码),在本例中,hello.py中有app.run(),所以填入该py文件名—hello
logto:日志文件的位置,自定义
socket:用于存放uwsgi启动后生成的sock文件,用来和Nginx 通信
只需要修改上述加粗参数,如果是按照以上步骤来的,就不需要更改
保存并退出
读取配置文件
uwsgi uwsgi.ini
安装Supervisor
上面命令运行uwsgi的方式,如果进程异常退出后,服务就无法访问,使用supervisor来管理进程,对异常终端的服务进行自动重启
apt-get install supervisor
cd /etc/supervisor/conf.d
创建项目的配置文件
vim uwsgi.conf
[program:uwsgi]
command=uwsgi --ini /home/myflask/uwsgi.ini
stopsignal=QUIT
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/myflaskLogs/flask_supervisor.log
stderr_logfile=/var/log/supervisor/myflaskLogs/flask_supervisor_err.log
所有的参数其中可以修改的有:command、stdout_logfile、stderr_logfile
后面两个是日志输出地址,自定义
配置后即可启动服务项目
service supervisor start
安装Nginx
apt-get install nginx
创建项目Nginx的配置文件
cd /etc/nginx/conf.d
vim myflask.conf
server {
listen 80;
server_name localhost;
charset utf-8;
client_max_body_size 75M;
location / { try_files $uri @yourapplication; }
location @yourapplication {
include uwsgi_params;
uwsgi_pass unix:/home/myflask/myflask_uwsgi.sock;
}
}
uwsgi_pass unix是socket的文件地址
启动!!!
service nginx restart
其实到这,基本已经完成,后期只需要直接修改代码,网页会自行更新。
后面需要通过Supervisor进行管理,可以直接理解为一个控制台,在这上面可以直接控制flask项目的启动和停止
请熟悉以下命令
查看当前运行的项目
supervisorctl status
运行uwsgi项目,开始由Supervisor接手运行,就是之前Supervisor配置文件中方括号内的名字
[program:uwsgi]
supervisorctl start uwsgi
当需要停止时,输入
supervisorctl stop uwsgi
全文参考:
如何将Flask项目部署在Ubuntu系统的阿里云主机中(详细完整版:下)_ubuntu 22 高并发部署flask_i-kernel的博客-CSDN博客
阿里云服务器 ubuntu16.04 flask部署(uwsgi+nginx+supervisor)_Morning_17的博客-CSDN博客