Django

שימוש ב DJANGO (או flask)

השרת שניתן להריץ עליו django ו - flask הוא delta-tomcat-vm .

יש לבחור מספר פורט -  נא השתמש במספר בין 40000 ו-40999

על מנת לגלות אילו פורטים כבר בשימוש, הריצו 'netstat -an | grep ':[4]0.  אם תתקלו בבעיות מאוחר יותר, בדקו שוב; יתכן שמישהו השתמש בפורט אבל לא הריץ את השרת שלו כשבדקתם.

שימו לב, העבודה מתבצעת בספריה בשם ה-username שלכם ב- specific/scratch/  אשר אינו מגובה, כך שכדאי שתמיד תשמרו עותק של קבצי המקור שלכם ב-home directory שלכם. 

כדי ליצור ספריית django משלכם, הריצו:

ssh delta-tomcat-vm
sudo create-my-django-dir
cd /specific/scratch/<username>/django

כעת חזרו לנובה, כדי להעתיק את הקבצים אל התיקייה שיצרתם בעזרת הפקודה scp:

 

Use scp -r to copy your application files from ~home to delta-tomcat-vm - You do NOT have access to your ~home data from delta-tomcat-vm !!!!

nova 1% scp -r ~<your django application data> delta-tomcat-vm:/specific/scratch/<username>/django/

כעת, מתוך השרת delta-tomcat-vm הפעל את האפליקציה:

cd <app name dir>

for django:

python manage.py runserver delta-tomcat-vm:<port number>

למעוניינים בשימוש ב - flask, מומלץ לעבוד עם סביבה וירטואלית, כאן ההסבר יתבצע בשימוש ב - virtualenv, להרחבה ניתן להסתכל בלינק הבא או בגוגל הקרוב לביתכם

https://www.cs.tau.ac.il/system/node/289

צור סביבה וירטואלית (כאן נשתמש בפייתון 3.7 ופיפ 3.7, ניתן לשנות זאת אם רוצים) (זה צריך להתבצע רק כשאין סביבה)

virtualenv --prompt=<env-prefix> --python=python3.7 <env-path>

דוגמה:

virtualenv --prompt=<my-env> --python=python3.7 .env

הפעל את הסביבה (זה מתבצע כל פעם שמשתמשים בשרת! בלי הפעלה של הסביבה צריך להתקין לפי המדריך למטה, לא מומלץ)

source <env-path>/bin/activate.csh

התקנת flask (רק כשמייצרים סביבה חדשה) (רלוונטי לכל ספרייה שתרצו להתקין) 

pip3.7 install flask

נתקלתי בשגיאה! מה עושים?

אם השגיאה מכילה משהו דומה לזה:

WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/networkx/
WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/networkx/
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/networkx/
WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/networkx/
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/networkx/
Could not fetch URL https://pypi.org/simple/networkx/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/networkx/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
ERROR: Could not find a version that satisfies the requirement networkx
ERROR: No matching distribution found for networkx
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping

או לזה (פייתון 3.8.5 למשל ):

error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory

נסו את הפקודה הבאה (בשימוש ב - tcsh):

setenv LD_LIBRARY_PATH /usr/local/lib/openssl-1.1.1a/lib:$LD_LIBRARY_PATH

אם המשתנה לא קיים, השתמשו ב - 

setenv LD_LIBRARY_PATH /usr/local/lib/openssl-1.1.1a/lib

והתקינו שוב את flask.

כעת ניתן להריץ את השרת

python <server.py>

 

כשהוא פועל, אתם יכולים להתחבר בעזרת דפדפן אינטרנט אל הכתובת 'http://server:port', כאשר server הינו שם המכונה שבה שרת ה-django שלכם רץ

(למשל, 'http://delta-tomcat-vm.cs.tau.ac.il:40001').

 

טיפים לעבודה עם ספריות python:

ניתן להתקין ספריות python ב-local path כיוון שאין לכם הרשאות לשנות את הספריות הכלליות:

mkdir /specific/scratch/<username>/python_package
chmod 765 /specific/scratch/<username>/python_package
pip install --target='/specific/scratch/<username>/python_package' <package_name>

על מנת להשתמש בספרייה החדשה

setenv PYTHONPATH /specific/scratch/<username>/python_package

שגיאה נפוצה:

Perhaps your account does not have write access to this directory? You can change the cache directory by setting the PYTHON_EGG_CACHE envirinment variable to point an accessible directory

 

מה לעשות?

mkdir /specific/scratch/<username>/python_cache
chmod 765 /specific/scratch/<username>/python_cache
setenv PYTHON_EGG_CACHE /specific/scratch/<username>/python_cache