# Astro-server **Repository Path**: jenssie/astro-server ## Basic Information - **Project Name**: Astro-server - **Description**: python-django星座项目服务端 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-09-21 - **Last Updated**: 2023-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python-Django, redis缓存, 分布式路由, runserver-uwsgi-nginx部署, uwsgi-nginx部署 ## README # Astro-server ## 介绍 - 项目为星座app后端,使用python-django编写,客户端采用flutter编写 - 项目体验 - [App端体验视频](https://www.bilibili.com/video/BV1oh4y1A7aD/?vd_source=60513b3e75d9932ac8172dad5808e9e4) - [App端源码](https://gitee.com/jenssie/Astro-client) - 大环境不好,作者失业找工作的原因,时间不够,项目写的较简单也没有时间完善,欢迎诸位领导同行提供机会,感谢。 ## 主要功能 - 采用分布式设计 - 支持redis缓存,部分页面采用了整体缓存的模式,减少库查询 - 支持了文件上传功能 - 支持GET/POST请求 - 自带Admin后台可查看mysql数据动态,可以手动增删改查 ## 安装 - 安装django - 查询是否安装: sudo pip free|grep -i 'Django',如果未安装可以去[官网查看](https://www.python.org/)安装方式 - 安装mysqlclient v1.4.x - 命令sudo apt list --installed|grep -E 'libmysqlclient-dev|python3-dev' - 安装pyredis - 安装:sudo pip3 install redis ## 创建数据库 - 创建'zhunle' mysql数据库文件 - 进入mysql环境:mysqli -uroot -p {mysql数据库密码} - 创建DB文件:create database zhunle default charset utf8; - 同步python model到数据库 - cd到项目根目录,即manage.py同级目录 - python manage.py makemigrations,生成数据库中间文件 - python manage.py migrate,同步更新变动到数据库中 ## 启动项目(两种) - 本地采用runserver部署 - 启动python-django服务 - python manage.py runserver 8080 - 启动redis服务,macos系统 - cd /usr/local/etc/ - redis-server ./redis.conf - 如果redis配置设置了密码需要在settings.py缓存项中设置,如下 ``` CACHES = { 'default' : { //表示缓存启动redis作为缓存策略 'BACKEND' : 'django_redis.cache.RedisCache', //监听6379端口,即默认的redis端口,0表示0号数据库 'LOCATION' : 'redis://127.0.0.1:6379/0', 'OPTIONS':{ 'CLIENT_CLASS':'django_redis.client.DefaultClient', //密码 'PASSWORD':'123456' } } } ``` - 模拟正式环境(uwsgi+nginx)部署 - uwsgi - 安装uWSGI - sudo pip install uwsgi==2.0.18 -i - 配置uwsgi.ini文件 - 项目中同名文件中创建uswgi.ini文件 - 分别设置如下项: ``` socket = 127.0.0.1:8080 chdir=/Users/vijay/Desktop/django/zhunle wsgi-file = zhunle/wsgi.py process = 4 threads = 2 pidfile = uwsgi.pid daemonize = uwsgi.log master = true ``` - 项目settings.py文件中将DEBUG改为False即为正式环境 - 项目settings.py文件中将ALLOWEDHOSTS = []改为正式环境的域名或者['']不限域名访问 - 启动uwsgi:uwsgi --ini uwsgi.ini - 停止uwsgi:uwsgi --stop uwsgi.pid - 重启uwsgi:uwsgi --reload uwsgi.pid - Nginx - 安装:sudo apt install nginx - macos系统中配置nginx.conf - cd /usr/local/etc/nginx/nginx.conf - 在server节点添加location项,指向uwsgi端口和ip ``` server{ location / { uwsgi_pass 127.0.0.1:8080; include /usr/local/etc/nginx/uwsgi_params; } } ``` - MacOS启动nginx:sudo nginx - MacOS停止nginx: sudo nginx -s stop - MacOS重启 sudo nginx -s reload ## 创建Admin管理员用户和登录管理后台 - manage.py同级目录下执行python manage.py createsuperuser - 登录管理后台:浏览器中输入http://127.0.0.1:8080/admin,输入刚创建的账号密码即可进入 ## 接口测试 - http://127.0.0.1:8080/api/v1/astr_community/astr_relation_intro?in_sign=1,能获取到数据即可 ## 欢迎指正 ![](https://gitee.com/jenssie/Astro-client/raw/master/IMG_5963.JPG) ## 开源不易感谢打赏 ![](https://gitee.com/jenssie/Astro-client/raw/master/IMG_5964.JPG)