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/defaultsudo 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/.