Flask框架从0到1实现博客网站(请以学习的目的观看,博主也是以学习为主)

一,项目中用到的技术(知识点)

GitHub地址:https://github.com/fantongxue666/Python-Projects

1,安装python3环境

安装python3请参考:https://www.jb51.net/article/165639.htm

2,创建flask项目

pycharm创建flask项目请参考:https://www.cnblogs.com/momoyan/p/11028467.html

3,render_template模板引擎

首先创建index.html,画好模板

在这里插入图片描述

然后在app.py文件中写接口

@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/index')
def toIndex():
    title='樊同学的'
    user={'username':'樊同学'}
    return render_template('index.html',title=title,user=user)

if __name__ == '__main__':
    app.run()

启动项目,访问 http://localhost:5000/index
在这里插入图片描述

4,flask连接mysql数据库

首先进入当前项目路径的终端,安装pymysql

在这里插入图片描述

写一个jdbc工具类,全局调用

import pymysql
class DataBaseHandle(object):
    # 相当于java的构造方法,初始化数据库信息并创建数据库连接
    def __init__(self):
        self.host = '127.0.0.1'
        self.username = 'root'
        self.password = '1234'
        self.database = 'test'
        self.db = pymysql.connect(self.host, self.username, self.password, self.database)

    # 增删改
    def updateDB(self,sql):
        cursor = self.db.cursor()
        try:
            i = cursor.execute(sql)
            self.db.commit()
        except:
            self.db.rollback()
        finally:
            cursor.close()
        return i

    # 查询
    def selectDB(self,sql):
        cursor = self.db.cursor()
        temp = None
        try:
            cursor.execute(sql)
            temp = cursor.fetchall() # 返回所有记录列表
        except:
            print("查询发生错误")
        finally:
            self.db.close()
        return temp

然后全局调用

@app.route('/')
def hello_world():
    db = DataBaseHandle()  # 数据库操作类 全局
    data = db.selectDB("select * from stu")
    list=[]
    for obj in data:
        list.append({
            'name':obj[1],
            'age':obj[2],
            'time':obj[4]
        })
    return json.dumps(list,cls=DateEncoder)

5,flask项目在linux环境运行上线

查看系统自带的python版本

python --version

安装一些需要用到的工具

yum -y install gcc gcc-c++ autoconf automake make zlib zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel libffi libffi-devel xz xz-devel

上传python至服务器

解压

tar zxvf Python-3.6.10.tgz -C 解压到的路径

编译安装

# 先进入解压后的文件夹下
# --prefix=选择安装路径
./configure --prefix=/usr/local/python3
# 等待一段时间后,编译并安装
make && make install

配置环境变量

vim /etc/profile
# 在底部添加一行:
export PATH=$PATH:/usr/local/python3/bin
# 保存退出后刷新
source /etc/profile
# 配置环境变量后,终端输入python3查看是否成功

替换原有的python2

这时虽然终端输入python3出现的是最新安装的python3,但是输入python出来的还是原来python2

我们可以修改python的默认路径,因为python指向python2

# 将原来python重命名为python2-6.6
mv /usr/bin/python /usr/bin/python-2.6.6
# 建立新的软连接,指向python-3.6.10
# 注意:软连接一定要使用绝对路径!!!
ln -s /usr/local/python3/bin/python3.6 /usr/bin/python

配置完成以后测试是否安装成功

# 这里我用requests库进行测试
pip install requests
# 更新pip
pip install --upgrade pip

打包Python项目的依赖(也就是本地安装的项目依赖)

img

压缩Python项目和上传到服务器,解压

zip包的解压命令:unzip 包名

img

cd到项目里,安装依赖

pip3 install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com -r requirements.txt
pip install flask

使用gunicorn部署flask项目

gunicorn安装

gunicorn安装非常简单,使用命令pip install gunicorn即可。一般使用它,主要是为使用其异步的worker模型,还需要安装对应的异步模块。

$ pip install greenlet # 使用异步必须安装
$ pip install eventlet # 使用eventlet workers
$ pip install gevent   # 使用gevent workers

gunicorn通常使用的参数如下:

-c CONFIG, --config=CONFIG
# 设定配置文件。
-b BIND, --bind=BIND
# 设定服务需要绑定的端口。建议使用HOST:PORT。
-w WORKERS, --workers=WORKERS
# 设置工作进程数。建议服务器每一个核心可以设置2-4个。
-k MODULE
# 选定异步工作方式使用的模块。

在shell中输入你的启动配置

$ gunicorn -w 3 -b 0.0.0.0:5000 app:app
# 此处app:app中,第一个app为flask项目实例所在的包,第二个app为生成的flask项目实例
$ gunicorn -w 3 -b 0.0.0.0:5000 app:app --daemon #后台运行

这样运行正常就可以启动服务器了。

posted @ 2020-12-28 12:33  你樊不樊  阅读(70)  评论(0编辑  收藏  举报