准备
- 阿里云 轻量应用服务器 ubuntu 16.04
- 耐心!
环境
1、在阿里云的控制台找到自己购买的服务器,笔者是用的轻量级服务器 ubuntu16.04系统
2、如图,分别点击远程连接,设置密码,这样就可以远程连接了
3、开放端口
打开后面运行flask需要用到的端口,必须开放,不然无法应用!
防火墙—>>添加规则---->>输入想要开放的端口(笔者开放的是5000端口)
4、通过ssh命令或者直接用连接软件
这里我是用xshell进行连接,当然直接用命令也是一样的
使用xshell类似的软件就可以在连接后在本地操作
附上xshell的连接教程:https://jingyan.baidu.com/article/46650658e9468cf549e5f8b0.html
5、sudo二连,更新下软件
sudo apt-get update
sudo apt-get upgrade
5、安装虚拟环境
如果不了解虚拟环境,可以到网上查一下资料
虚拟环境可以将项目运行所需的环境隔离出来,不会影响到本地的环境,使用时只需要激活该环境就行了
很好用!!!有时间请务必学习理解
pip install virtualenv
任意创建文件夹,这里我是在/home目录下创建myflask项目文件夹,并进入
cd /home
mkdir myflask
cd myflask
创建虚拟环境,其中venv是我给起的名字,可以自定义
virtualenv venv
这样虚拟环境就创建好了,在myflask文件中就会出现一个叫做venv的文件夹
接着输入以下命令,进入虚拟环境(激活环境)
source venv/bin/activate
这样命令行前面就出现了venv的字样,此时已经处于虚拟环境中
创建项目文件,或者将已经写好的项目文件复制进来
这里,我新建一个项目文件(myflask文件夹内),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=5000)
注意:这里必须要有这个,
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
不然后面无法运行,一行都不能少!!!
这里我是踩了坑的,千万不要只写app.run()!!!
以下是错误示范!!!
app.run(host='0.0.0.0', port=5000)
运行该启动文件,或者是你自己项目的启动文件,会发现很多包都没有,把这些包安装了,这些安装包将被安装在虚拟环境中,不会与本地环境相冲突
python hello.py
这里会提示很多包没有,需要在虚拟化环境中安装
安装的包包括但不限于flask
确认安装包安装完毕,访问你的服务器ip+端口号()访问,看看能不能行
eg:233.123.234.12:5000
可以的话(访问时,出现“Hello World!”字样),Ctrl+C退出调试就行了
因为后面的操作不用在虚拟环境中进行,需要先退出虚拟环境
deactivate
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文件名—hellologto:日志文件的位置,自定义
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
后话
以上仅为笔者的个人实践。
如有差错,请及时提出!
如有错误,请不吝指正!