ustc-course
ustc-course copied to clipboard
USTC iCourse - a popular course rating platform for USTC students
USTC è¯è¯¾ç¤¾åº
USTC è¯è¯¾ç¤¾åºæ¯ä½¿ç¨ Python 3 + Flask + SQLAlchemy å¼åç Web ç³»ç»ã
å®è£
å®è£ æ¤ç³»ç»åï¼è¯·é¦å å®è£ ï¼
- Python 3
- MySQL 5.5+
- Nginx
é ç½®åå建æ°æ®åº
å¨ MySQL é
ç½®æ件ï¼å¦ /etc/mysql/my.cnf
ï¼æ«å°¾å å
¥å¦ä¸å è¡ï¼éå¯æ°æ®åºï¼å¦ service mysql restart
ï¼ãè¿å è¡æ¯è®¾ç½®æ°æ®åºä½¿ç¨ utf8mb4 ä½ä¸ºé»è®¤è¿æ¥å符éååå¨å符éï¼ä»¥å
åºç°ä¹±ç ï¼å¹¶ä¸æ¯æ emojiã
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
collation-server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
character-set-server = utf8mb4
ç¶åå建æ°æ®åºï¼mysql -u root -p
è¿å
¥ mysql æ§å¶å°ã
CREATE DATABASE icourse;
å建æ°æ®åºæåçè¯ï¼ä¼æ示 Query OK...
å¯¹äº MySQL çæ¬ < 8.0:
GRANT ALL ON icourse.* to 'ustc_course'@'localhost' identified by 'ustc_course';
å¯¹äº MySQL çæ¬ >= 8.0:
CREATE USER 'ustc_course'@'localhost' identified by 'ustc_course';
GRANT ALL ON icourse.* to 'ustc_course'@'localhost';
è¿ä¸æ¥æ¯å建æ°æ®åºç¨æ· ustc_course 并æäºè®¿é® icourse æ°æ®åºçæéã该ç¨æ·å¯ç æ¯ ustc_courseï¼ç产ç¯å¢ä¸è¯·æ¢ç¨å¼ºå¯ç ã
Python ä¾èµåç³»ç»è®¾ç½®
å®è£
Python ä¾èµåºï¼pip3 install -r requirements.txt
ãå
¶ä¸ requirements.txt
æ¯çæ¬åºæ ¹ç®å½ä¸çæ件ã
å¦æ pip3 è¿ç¨ä¸åºç°é误ï¼å¯è½æ¯ç¼ºå°ç¼è¯è¿äº Python åºæéçä¾èµãå¨ Ubuntu/Debian ç³»ç»ä¸ï¼å¯ä»¥ apt-get install python3-dev libxslt1-dev libxml2-dev libmysqlclient-dev
ä¿®æ¹ç³»ç»é
ç½®æ件 config/default.py
ã
-
DEBUG
å¼å ³ç¨äºæ è¯æ¯å¦å¯ç¨è°è¯æ¨¡å¼ã -
SERVER_NAME
设置æå¡å¨ååï¼è¥ååæªç¡®å®åå¯è®¾ä¸º Noneã -
SECRET_KEY
æ¯ç¨äºéªè¯ cookie çå å¯å¯é¥ï¼å¡«å ¥ä¸ä¸ªéæºå符串ã -
SQLALCHEMY_DATABASE_URI
æ¯æ°æ®åºè¿æ¥ä¿¡æ¯ï¼æ ¼å¼ä¸ºmysql+mysqldb://ç¨æ·å:å¯ç @æ°æ®åºå°å/æ°æ®åºå?charset=utf8mb4
ã -
MAIL_*
æ¯å¤åé®ä»¶çå件人信æ¯ã -
UPLOAD_FOLDER
æ¯å¤´åãç¨æ·ä¸ä¼ çé件çåå¨çå°æ¹ãå¨ç产æå¡å¨ä¸éè¦æ足å¤å¤§çå©ä½ç©ºé´ï¼å¹¶å®æå¤ä»½ã -
MAX_CONTENT_LENGTH
æ¯ä¸ä¼ æ件çæ大大å°ã
åå§åæ°æ®åºï¼python -m tests.init_db
ï¼å¦æ没ææ¥éå°±åå§åæåäºã
é ç½® Nginx
å¦ææ¨å·²ç»å®è£
äºå
¶ä» Web æå¡å¨ï¼å¦ Apacheï¼æè
å·²ç»æ Nginx é
ç½®ï¼è¯·åè tests/conf/nginx-config
æ¥ä¿®æ¹ã
å¦ææ¯ååå®è£ ç nginxï¼å¯ä»¥ç´æ¥ä½¿ç¨å¦ä¸é ç½®æ件ï¼
-
cp tests/conf/nginx-config /etc/nginx/sites-available/default
-
sudo service mysql restart
è¿è¡ ./run.py
ï¼è®¿é® http://localhost
å³å¯ä»¥ debug 模å¼å¼å§è¿è¡æ¤ç³»ç»ã
å¦æåºç°é®é¢ï¼è¯·é¦å
ç ./run.py
çç»ç«¯ææ è¾åºï¼å¦æ没æï¼åæ¯ nginx çé®é¢ï¼å¯ä»¥è®¿é® http://localhost:8080
æ¥æµè¯ï¼å¦æ Python ææ¥å¼å¸¸ï¼åå¯æ ¹æ®å¼å¸¸ä¿¡æ¯ææ¥ã
å¨ç产æå¡å¨ä¸ï¼éè¦æ nginx é
ç½®æ件ï¼/etc/nginx/sites-available/default
ï¼ä¸ç 8080 æ¿æ¢æ 3000ï¼æ config/default.py
å run.py
ä¸ç DEBUG=True
æ¹ä¸º DEBUG=False
ã
å¼å
请é¦å å¦ä¹ Flask + SQLAlchemy ç Web å¼åãç³»ç»ç主è¦æä»¶å¨ app ç®å½ä¸ï¼
- forms æ¯è¡¨åéªè¯
- models æ¯ ORM ç±»
- static æ¯éææ件ï¼ç± nginx ç´æ¥è¿åç»ç¨æ·
- templates æ¯é¡µé¢æ¨¡æ¿
- views æ¯åç§åè½çä¸å¡é»è¾
- utils.py æ¯å·¥å ·å½æ°
License
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.