Ubuntu16.04 部署Flask应用若干方法(Apache2、Nginx)
主流的部署方式apache和ngnix:Apache拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效使用Apache2部署这里部署我们使用docker来做实验,docker安装看这里https://blog.csdn.net/tonydz0523/article/details/80534985...
主流的部署方式apache和nginx:
- Apache拥有丰富的模块组件支持,稳定性强,BUG少,动态内容处理强。
- Nginx轻量级,占用资源少,负载均衡,高并发处理强,静态内容处理高效
使用Apache2部署
这里部署我们使用docker来做实验,docker安装看这里https://blog.csdn.net/tonydz0523/article/details/80534985。
创建docker用户组, 之后使用docker都不用在前面加sudo了:
sudo usermod -aG docker 你的用户名
首先下载在docker上下载Ubuntu16.04
docker pull ubuntu:16.04
开启Ubuntu16.04 docker:
# -v 是共享文件夹 格式为 -v 本地文件夹地址:docker文件夹地址
docker run -it -v /home/ffzs/python-projects/stock_graph:/var/www/share ubuntu:16.04
安装python3和apache,以及一些相关组件:
apt update
apt install python3-dev python3-pip apache2 apache2-dev libapache2-mod-wsgi-py3
安装 virtualenv
pip3 install virtualenv
在项目目录建立虚拟环境
mkdir /var/www/stock_graph
cp -r /var/www/share/stockapp /var/www/stock_graph
cd /var/www/stock_graph
virtualenv venv
# 开启虚拟环境
source venv/bin/activate
安装Flask、pandas、plotly:
pip install flask pandas plotly sqlalchemy pymysql
安装nano:
apt install nano
创建wsgi文件:
nano stockapp.wsgi
添加如下:
import sys
import logging
logging.basicConfig(stream=sys.stderr)
# 添加项目运行环境
sys.path.append("/var/www/stock_graph/venv/lib/python3.5/site-packages")
# 添加项目
sys.path.insert(0,"/var/www/stock_graph/")
# 添加app
from stockapp import app as application
使用ifconfig查看docker 的IP地址:
如果没有安装的话 apt install net-tools
安装:
我的ip地址为 172.17.0.2
建立apache 配置文件:
nano /etc/apache2/sites-available/stockapp.conf
在文件中输入:
<VirtualHost *:80>
ServerName 172.17.0.2
ServerAdmin youremail@email.com
WSGIScriptAlias / /var/www/stock_graph/stockapp.wsgi
<Directory /var/www/stock_graph/stockapp/>
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/www/stock_graph/stockapp-error.log
LogLevel warn
CustomLog /var/www/stock_graph/stockapp-access.log combined
</VirtualHost>
添加app:
a2ensite stockapp.conf
使默认页失效:
a2dissite 000-default.conf
重启apache2
/etc/init.d/apache2 restart
在浏览器 172.17.0.2:
这样就算部署完成,还有弄一下mysql的连接,就不细说了。
使用nginx部署
前面apache的一样
开启Ubuntu16.04 docker:
# -v 是共享文件夹 格式为 -v 本地文件夹地址:docker文件夹地址
docker run -it -v /home/ffzs/python-projects/stock_graph:/var/www/share ubuntu:16.04
安装python3和ngnix,以及一些相关组件:
apt update
apt install python3-dev python3-pip nginx
安装 virtualenv
pip3 install virtualenv
在项目目录建立虚拟环境
mkdir /var/www/stock_graph
cp -r /var/www/share/stockapp /var/www/stock_graph
cd /var/www/stock_graph
virtualenv venv
# 开启虚拟环境
source venv/bin/activate
安装Flask、pandas、plotly等包:
pip install flask pandas plotly sqlalchemy pymysql
安装uwsgi:
pip install uwsgi
安装nano:
apt install nano
开启ngnix :
/etc/init.d/nginx start
打开网址 172.17.0.2,如下:
说明nginx已经成功开启。。
我这里做的是简单粗暴直接删除nginx的配置文件:
rm /etc/nginx/sites-enabled/default
在stock_graph目录下,创建配置文件:
nano stockapp_nginx.conf
输入:
server {
listen 80;
server_name 172.17.0.2;
charset utf-8;
client_max_body_size 75M;
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9160;
uwsgi_param UWSGI_PYTHON /var/www/stock_graph/venv/bin/python;
uwsgi_param UWSGI_CHDIR /var/www/stock_graph;
uwsgi_param UWSGI_SCRIPT run:app;
}
}
那么我们接下来去软连我们的这个配置到nginx中去:
ln -s /var/www/stock_graph/stockapp_nginx.conf /etc/nginx/conf.d/
这样我们再去启动我们的nginx
/etc/init.d/nginx restart
这里的不是welcome了,而是502错误呢,因为我们现在的uwsgi文件还没有配置,也没有去启动uwsgi,那么我们接下来就是要去出来这个uwsgi,下面的例子是我的配置。
创建配置文件
nano stockapp_uwsgi.ini
输入
[uwsgi]
#application's base folder
base = /var/www/stock_graph
#python module to import
app = hello
module = %(app)
home = %(base)/venv
pythonpath = %(base)
#socket file's location
socket = 127.0.0.1:9160
#the variable that holds a flask application inside the module imported at line #6
callable = app
#location of log files
logto = /var/log/uwsgi/%n.log
启动uwsgi:
uwsgi --ini stockapp_uwsgi.ini
更多推荐
所有评论(0)