如何在服务器上部署Flask应用——Linux篇
Posted Flask中文论坛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在服务器上部署Flask应用——Linux篇相关的知识,希望对你有一定的参考价值。
不知不觉又过了一段时间没有更新文章,这次文章的内容是关于如何在Linux上部署Flask应用,网上比较多的教程是关于nginx+gunicorn,所以我就不重复这个了,留下网上教程的链接,如果想按这种方式部署的请自行查看。
flask+nginx+gunicorn部署教程:
http://www.open-open.com/lib/view/open1423107543014.html
我这边部署的方案跟windows是一样的,都是采用apache+mod_wsgi(有必要的话可以加一层nginx做静态文件的转发)。
Linux使用的版本是centos7。
# linux服务器下部署flask应用 (用yum安装)
1、安装apache
# yum install -y httpd-devel
等待apache安装完成,设置apache开机启动并启动apache服务
# chkconfig httpd on
# apachectl start
开启防火墙的80端口并重启防火墙
# firewall-cmd --zone=public --add-port=80/tcp --permanent
# firewall-cmd --reload
通过浏览器访问可以看到以下界面证明apache服务安装并且启动成功
2、安装python3(centos7默认安装python2.7)
(1)安装开发工具和解压工具
# yum groupinstall -y "Development tools"
# yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline
# yum install -y tar
(2)安装python3
# curl -O https://www.python.org/ftp/python/3.4.1/Python-3.4.1.tgz
# tar -xvzf Python-3.4.1.tgz
# cd /usr/local/src/Python-3.4.1
# ./configure --enable-shared --prefix=/usr/local LDFLAGS="-Wl,-rpath /usr/local/lib"
# make
# make altinstall
注:记得要设置enable-shared,否则在使用mod_wsgi的时候会报错
python3安装完成后,由于centos7原本是使用python2的,yum install也是基于python2的,所以在替换python3的时候要修改一些文件和创建一些软连接
# mv /usr/bin/python /usr/bin/python2.7.5
# ln -s /usr/local/bin/python3.4 /usr/bin/python
修改yum文件
# vi /usr/bin/yum
将yum中的python替换成python2.7.5
创建pip的软连接
# ln -s /usr/local/bin/pip3 /usr/bin/pip
之后就要用pip安装一些你需要的包了。
3、安装数据库
centos7默认的数据库是mariadb,链接方式和mysql一样,都可以用mysqlclient包去链接,这次数据库我选择了postgresql(9.4版本)
# yum update
# yum install http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-redhat94-9.4-1.noarch.rpm
# yum install postgresql94-server postgresql94-contrib
在执行这一句的时候会报错,这个时候要修改/usr/libexec/urlgrabber-ext-down文件,将其的python替换为python2.7.5,即
# vi /usr/libexec/urlgrabber-ext-down
将python修改为python2.7.5
初始化数据库
# /usr/pgsql-9.4/bin/postgresql94-setup initdb
启动数据库服务并且设定为开机启动
# systemctl enable postgresql-9.4.service
# systemctl start postgresql-9.4.service
开启防火墙5432端口
# firewall-cmd --zone=public --add-port=5432/tcp --permanent
# firewall-cmd --reload
切换到数据用户
# su - postgres
键入命令psql
如果看到版本号证明安装成功
接下来设置原默认用户postgres的密码
# password postgres
接下来创建一个超级用户,q退出postgresql的shell,
键入createuser -P -s -U postgres root创建一个root用户(用于flask连接数据库)
修改认证方式
vi /var/lib/pgsql/9.4/data/pg_hba.conf
修改认证方式
vi /var/lib/pgsql/9.4/data/pg_hba.conf
4、配置apache
# pip install mod_wsgi
# mod_wsgi-express install-module
# pip install mod_wsgi
# mod_wsgi-express install-module
配置文件跟windows的差不多,修改下路径就行了,这里我就不多讲。
5、修改整个项目文件的权限(不修改权限的话之后可能会报各种错误)
# mod -R 777 你的项目文件
6、.wsgi文件
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import os
# 项目文件路径
sys.path.append('/usr/www')
# 引用包路径
sys.path.append('/usr/www/venv/lib/python3.4/site-packages')
from manage import app as application
7、最终配置完重启下apache服务就可以啦!
因为作者没时间所以这次文章没有相关的源码,部署过程有问题的朋友可以在后台联系我。
本文属原创文章,未经允许请勿转发。
以上是关于如何在服务器上部署Flask应用——Linux篇的主要内容,如果未能解决你的问题,请参考以下文章
部署flask应用到nginx+uwsgi+linux服务器