Skip to content

zhengyuchuan/iHome1.0

Repository files navigation

iHome1.0

基于Flask实现的租房项目

基于flask实现的c2c租房项目

引言:这个原是黑马培训的爱家租房项目,本人仅用于个人学习使用,不作他用。本项目采用前后端分离开发模式,前端使用的技术有Javascript、jQuery、Art-template,后端使用技术有Flask、mysql、redis、celery等。


1.需要安装的python package

2.第三方SDK支持

  • 容联云通讯:用于注册短信通知,项目中使用的是测试版,上线使用需购买。项目启动前需要自行去容联云通讯注册账号,然后到SendTemplateSMS文件中用自己的账号id、token、应用id替换下图中标红的部分alt SendTemplateSMS
  • 七牛云:项目启动后,用户上传的图片不是保存在本地,而是保存在七牛云中,所以需要自行注册七牛云账号。然后到image_storage文件中替换成自己的access key、secret key。alt image_storage
  • 支付宝:这里使用的是支付宝的沙箱环境,仅用于测试,用户可以随意设置金额,用起来很爽。使用之前,需要先使用openSSL工具生成密钥对,将自己生成的公钥填入支付宝沙箱中的应用公钥。然后将生成的私钥和支付宝的公钥,放到app_private_keyalipay_public_key两个文件中。

3.数据库支持

本项目中使用mysql作为数据库,使用redis作为缓存。配置都是使用的默认配置,绑定端口不变。其中使用了Flask-Migrate作为mysql数据库迁移扩展,十分方便。

3.1 启动前mysql准备

  • create database ihome charset="utf8";
  • 在项目目录中,终端执行一下命令(python3),来生成对应数据表

    python manage.py db init
    python manage.py db migrate
  • 最后进入ihome数据库,导入城区信息和房屋设施信息

    use ihome;
    INSERT INTO ih_area_info (name) VALUES ('东城区'),('西城区'),('朝阳区'),('海淀区'),('昌平区'),('丰台区'),('房山区'),('通州区'),('顺义区'),('大兴区'),('怀柔区'),('平谷区'),('密云区'),('延庆区'),('石景山区'),('门头沟区');
    INSERT INTO ih_facility_info (name) VALUES ('无线网络'),('热水淋浴'),('空调'),('暖气'),('允许吸烟'),('饮水设备'),('牙具'),('香皂'),('拖鞋'),('手纸'),('毛巾'),('沐浴露、洗发露'),('冰箱'),('洗衣机'),('电梯'),('允许做饭'),('允许带宠物'),('允许聚会'),('门禁系统'),('停车位'),('有线网络'),('电视'),('浴缸');

3.2 启动前redis准备

  • 开启redis-server服务。配置中我只配置了一项,就是 让redis守护进程启动。

    sudo redis-server /usr/local/etc/redis.conf

3.3 项目中数据库配置

  • 需要到config.py中配置自己的数据库连接信息。

    alt config.py中配置信息

4.constants参数

constants.py中配置了一些参数,这些参数可根据需要自行修改。

alt constants

5.celery worker开启

短信验证业务使用了celery异步队列,启动前要先开启celery worker。

  • cd到该项目目录下

  • celery -A ihome.tasks.task_sms worker

6.项目启动

  • 项目测试时:

    python manage.py runserver
    
  • 项目部署时,可以使用gunicorn作为wsgi服务程序

    gunicorn -w 4 -b 192.168.1.4:8001 manage:app

7.Dockerfile

  • 使用Dockerfile前,确保mysql、redis均以开启,并且项目中相应的配置文件均已修改正确。

  • 1.首先将Dockerfile文件移动至爱家租房项目的同级目录中。

  • 2.制作docker镜像:

    docker build -f ihome .
  • 3.启动docker

    docker run -it --name ihome_contrainer -p 5000:5000 -v xxx/logs/log:/ihome/logs/log ihome

参考文档