Flask初级项目

项目结构

目录结构

blog/					# 项目根目录
	manage.py				# 启动控制代码
	requirements.txt		# 依赖包类表文件
	migrations/				# 数据库迁移目录
	tests/					# 测试模块目录
	app/					# 整个程序目录
		templates/				# 模板文件目录
			common/					# 通用模板
			email/					# 邮件模板
			。。。
		static/					# 静态文件目录
			img/
			css/
			js/
			favicon.ico
		views/					# 蓝本文件目录
		models.py				# 数据模型文件
		forms.py				# 表单类文件
		settings.py				# 配置文件
		extensions.py			# 扩展文件(存放所有扩展)
		email.py				# 邮件发送功能函数
		__init__.py				# 包文件

项目准备

  • 根据目录结构,创建相关目录及文件
  • 书写配置文件(就是书写各种环境的配置类)
  • 使用工厂方法创建应用实例,并初始化配置
  • 添加各种扩展(顺便粘贴邮件发送函数)
  • 配置蓝本(添加各种蓝本文件,并注册)
用户登录退出(flask-login)
  • 说明:flask-login是一个专门用来管理用户登录退出的扩展库

  • 安装:pip install flask-login

  • 使用:

    # 第一步:添加扩展
    from flask_login import LoginManager
    
    login_manager = LoginManager()
    
    def config_extensions(app):
        ...
        login_manager.init_app(app)
        # 设置登录端点
        login_manager.login_view = 'user.login'
        # 设置登录信息
        login_manager.login_message = '请先登录,然后才能访问'
        
        
    # 第二步:继承自UserMixin类(也可以自己实现相关方法)
    from flask_login import UserMixin
    
    class User(UserMixin, db.Model):
      	...
        
    # 第三步:实现回调  
    @login_manager.user_loader
    def load_user(uid):
        return User.query.get(uid)
    
  • 总结

    状态切换:
    	login_user		# 可以提供记住我的功能
    	logout_user     # 退出登录
    状态查询:
    	is_authenticated	登录状态
    	is_anonymous		匿名状态
    路由保护:
    	login_required		# 保护需要登录才能访问的路由
    当前用户:
    	current_user		# 哪里都可以使用,在模板中不需要分配
    

项目部署

nginx服务器

  • 安装:sudo apt install nginx

  • 说明:简单使用nginx

  • 添加虚拟主机:

    • /etc/nginx/sites-available下创建虚拟主机配置文件www.bbs.com,内容如下:
    server {
      	listen	80;
      	server_name www.bbs.com bbs.com;
      	
      	location / {
         	root /var/www/blog;
            index index.html;
      	}
    }
    
    • 创建软链接:在sites-enabled下创建
    sudo ln -s /etc/nginx/sites-available/www.bbs.com /etc/nginx/sites-enabled/www.bbs.com
    
    • 重启nginx服务
    • 创建目录:/var/www/bbs
    • /var/www/bbs下创建文件index.html
    • 添加本地域名解析(劫持),修改配置文件:/etc/hosts,在末尾添加:
    127.0.0.1	www.bbs.com
    127.0.0.1	bbs.com
    

Flask项目

  • 说明:将flask项目拷贝到/var/www/bbs目录下

uWSGI

  • 说明:uWSGI是实现了WSGI协议的应用程序。

  • 安装:pip3 install uwsgi

  • 配置:

    http				# 以http协议启动
    socket				# 以socket方式启动
    chdir				# uwsgi启动的项目的根目录
    wsgi-file			# 数据交给哪个模块处理
    callable			# 具体可调用的对象
    daemonize			# 后台运行(需要指定一个日志文件)
    processes			# 指定使用的进程数
    threads				# 指定使用的线程数
    
  • 启动演示(以http协议启动)

    uwsgi --http 127.0.0.1:5000 --wsgi-file manage.py --callable app
    
  • socket方式启动

    • 需要nginx转发请求
    server {
      	listen	80;
      	server_name www.bbs.com bbs.com;
      	
      	location / {
        	# 包含请求参数
         	include uwsgi_params;
        	# 以socket方式转发请求
         	uwsgi_pass 127.0.0.1:5000;
      	}
    }
    

    一定不要忘记重新启动nginx。

    • 启动uwsgi
    uwsgi --socket 127.0.0.1:5000 --wsgi-file manage.py --callable app
    
    • 将启动参数写入配置文件uwsgi.ini
    [uwsgi]
    socket = 127.0.0.1:5000
    wsgi-file = manage.py
    callable = app
    # 后台启动
    daemonize = ~/log/uwsgi.log
    

    启动:uwsgi uwsgi.ini

静态资源处理

  • 说明:静态文件的请求没有必要转发,因为nginx自己就可以处理。所以我们想要重写转发规则。

  • 静态资源的路由转发规则:

    location /static {
      	root /var/www/bbs;
      	# 或
      	alias /var/www/bbs/static;
    }
    
  • 测试准备

    • 在项目目录下创建static文件夹
    • 拷贝一张图片gyy.jpegstatic目录
  • 测试:看到图片表示OK

    www.bbs.com/static/gyy.jpeg
    

上线步骤:

1.在线上服务器安装虚拟开发环境

2.将开发环境中依赖包require.txt中的所有依赖在虚拟开发环境中安装一遍

pip  install -r require.txt

3.在虚拟开发环境中安装uwsgi

pip install uwsgi

4.将自己的项目拷贝到站点根目录

  • 创建配置文件,将启动参数写入配置文件uwsgi.ini
[uwsgi]
socket = 127.0.0.1:5000
wsgi-file = manage.py
callable = app
# 后台启动
daemonize = ~/log/uwsgi.log
  • 启动uwsgi (在虚拟开发环境中)
uwsgi uwsgi.ini

ps -aux|grep uwsgi  查看是否启动
  1. 配置虚拟站点
cd /etc/nginx/sites-avaiable/
#以default为模板创建配置文件
sudo cp default  www.1904.com


server {
        listen 80;
        root /data/www/1904;
        server_name www.1904.com;

        location / {
                # 配置uwsgi
                include uwsgi_params;
                uwsgi_pass 127.0.0.1:5050;
        }
		# 静态文件请求处理
        location /static {
                alias /data/www/1904/static;

        }
}
cd /etc/nginx/sites-enable/
sudo ln -s ../sites-avaiable/www.1904.com  www.1904.com
#重启nginx
sudo service nginx restart

6 把项目中使用数据库备份出来,拷贝到服务器上,在服务器重建数据库,然后把数据恢复到数据库中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值