当网站开发完成之后,并不能让所有人可以访问。是因为现在项目放在本地,你的本地IP不是一个所有人请求到的IP
如何让自己的Flask项目跑在互联网上
配置服务
Flask确实自带开发服务器,但是这个服务器只能支持200并发。性能太差,可以用于开发,不可以用于工作,所以需要进行工作服务器部署。
目前,各位同学需要掌握的是部署的流程,具体的细节不必在意。
一、使用环境
Centos7 + Python3.7
二、Centos 中 Python2和Python3共存
Centos7系统默认携带Python2.7版本,我们开发项目通常用的是Python 3.7版本,所以需要在服务器上搭建Python 2和Python 3共存环境。
(一)安装Python3
注意所有操作要在root权限下进行
1、安装依赖
yum install zlib-devel libffi-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc* make -y
2、下载Python3安装包
3、解压tar包
注意所有安装包都要放在/opt目录下面
tar -Jxvf Python-3.7.2.tar.xz
推荐使用FileZilla往centos7中传输文件
4、编译安装
进入解压目录
./configure prefix=/usr/local/python3
make && make install
5、创建软连接
ln -s /usr/local/python3/bin/python3 /usr/bin/python3 ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
三、项目部署
(一)安装Flask环境
1、导出Flask的开发环境
pip freeze > package.txt
2、将包⽬录上传服务器,并进⾏安装
将package.txt,放在 /opt⽬录下
安装 pip3 install -r package.txt
安装过程中出现超时错误:更换下载源 pip3 install -r package.txt -i 源地址
(二)启动Flask项目
1、上传Flask项⽬
将Flask项⽬放在 /opt⽬录下
项⽬测试
运行项目
修改项目中的main.py
添加指令
启动项目
python3 main.py run
systemctl stop firewalld 关闭防火墙
3)访问项目,只能在linux系统中进行访问
使用服务器ip
访问结果
(三)uWSGI
Nginx 本身不支持Flask框架和Django框架,部署需要使用uWSGI转接Nginx服务器
uWSGI本身也是也是一个Web服务器,但是处理并发能力不强
1、安装uWSGI
pip3 install uwsgi
2、创建软连接
ln /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
(四)Nginx
整个项目依托于nginx运行!!!
1、下载Nginx包
2、安装Nginx
1)解压
tar -zxvf nginx-1.12.2.tar.gz
2)编译安装
进入解压目录安装
cd nginx-1.12.2
./configure
make && make install
3)创建软链接
ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
4)启动nginx查看效果
nginx 启动nginx
浏览器访问centos7的ip查看
如下图所示表示nginx启动成功
image.png
nginx常用指令:
指令
意义
nginx
启动nginx
nginx -s stop
停止nginx
nginx -s reload
重启nginx
nginx -t
检测是否正确
(五)Flask+ uWSGI + Nginx 部署
1、uWSGI配置文件
先配置uWSGI
在opt下创建scripts目录,编写uWSGI配置文件
image.png
配置文件中的内容
文件内容
含义:
socket uwsgi启动的地址和端口
pythonpath 项目的目录
module 项目控制文件名(不加py)
wsgi-file 项目的控制文件目录
callable 是控制文件当中app的名称
2、Nginx配置文件
进入配置文件目录
文件备份
2)进⾏配置⽂件备份
image.png
3)Nginx配置文件修改
具体配置如下: vim nginx.conf
修改nginx配置文件
4)启动项目
启动uWSGI:
指令:cd /opt/scripts
uwsgi --ini uwsgi.ini
启动Nginx
指令:nginx
5)访问项目
可以直接在其他主机上访问该项目
image.png