- 前端采用Vue.js,暂定做SPA(单页应用)。目前涉及的东西如下:
- Vue Router for SPA router
- Vuex for SPA global storage
- axios for http request
- Font Awesome for icons
- algoliasearch for search
- bootstrap-vue and bootstrap for out-of-the-box components
- bootswatch for bootstrap theming
- vue-amap for location autocomplete
- vue-i18n for internationalization
- vuelidate for form validation
- husky and lint-staged for githooks
- 后端采用Django and Django rest framework。 目前涉及的东西有:
- algoliasearch for search indexing
- MyQR for QRcode generation
- Django Channels for websocket
- Openpyxl for Excel import/export
- 前后端通信使用RESTful API,后端接口的URL和实现见urls.py和views.md
- 服务器采用Nginx
git clone https://github.com/JahooYoung/projectshroud.git
- 安装python(3.6或以上), nodejs(LTS版), yarn, redis
- 建议使用Virtualenv
pip install -r requirements.txt
- 将
settings.py
(出于安全原因没有存放于git仓库中)移至projectshroud/
子目录下,设置DEBUG = True
(cd frontend; yarn install)
(前端依赖改了就要做一次)
- 如果使用默认的SQLite,则直接下一步;如果使用MySQL,设置环境变量
DJANGO_DB=mysql
,MYSQL_USER
和MYSQL_PSW
为MySQL的用户名和密码,并创建一个名为shrouddb
的数据库 python manage.py makemigrations backend && python manage.py makemigrations && python manage.py migrate
python manage.py migrate
(数据模式变了就要做一次)cd frontend && yarn build && cd ..
(前端改了就要做一次)python manage.py runserver
- 浏览器访问
http://localhost:8000
cd frontend
yarn serve
- 浏览器访问
http://localhost:8080
- 准备环境,见环境,并安装Nginx
- 构建前端文件:
(cd frontend; yarn build)
- 将
settings.py
(出于安全原因没有存放于git仓库中)移至projectshroud/
子目录下,在其中设置DEBUG = False
- 安装HTTP/2支持:
pip install Twisted[tls,http2]
- 配置数据库
- 如果使用默认的SQLite,则直接下一步;如果使用MySQL,设置环境变量
DJANGO_DB=mysql
,MYSQL_USER
和MYSQL_PSW
为MySQL的用户名和密码,并创建一个名为shrouddb
的数据库 python manage.py makemigrations backend && python manage.py makemigrations && python manage.py migrate
- 如果使用默认的SQLite,则直接下一步;如果使用MySQL,设置环境变量
- 配置nginx:可参考nginx.conf,注意修改
- 用户为当前登录的用户(第1行)
/path-to-projectshroud/
为你的projectshroud
路径/path-to-virtualenv/
为你的virtualenv的路径ssl/
为你的https证书路径
- 创建日志文件夹:
mkdir -p log deploy/daphne
- 配置后端ASGI应用守护进程:修改
deploy/supervisord.conf
中的/home/projectshroud/
你的projectshroud
路径 - 运行nginx:
sudo nginx
- 运行redis:
redis-server
(可通过修改redis配置文件来daemonize) - 运行ASGI应用:
supervisord -c ./deploy/supervisord.conf
使用非Django自带的User Model,必须作为整个项目的第一次migrations
若报错需删除数据库及migrations
文件夹,然后python manage.py makemigrations && python manage.py migrate